The base of a subscription

Customers are of course your most valuable asset. In Upodi, Customers have a profile which contains information on the customer and associated payment methods, i.e. a credit card.

A customer holds information such as contact details, addresses and currency. This information is used when billing customers for their subscriptions, and will be included on the final invoice of a billing cycle.

Using the API

curl --request POST \
     --url \
     --header 'Authorization: Bearer {ApiKey}' \
     --header 'X-version: {version}' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
  "AutoBill": true,
  "AccountNumber": "421421552",
  "FullName": "The customer name",
  "CurrencyCode": "EUR"
var upodi = new UpodiClient("{ApiKey}");
var customerToCreate = new CreateCustomer("A name") { CurrencyCode = "EUR" };
var customer = upodi.Customers.Create(customerToCreate);

Preferrence currency

A customer will have a preferred currency or the default currency. This states in which currency the customer will be billed. Upon a billing cycle Upodi will try to fulfill this preferrence by matching the customer currency with currencies that you have made available in the product plan. Should a match exist, the subscription and following invoices, will be in the matching currency. If no match is found, the product plan default currency is used.


Currency calculations

Upodi does not calculate pricing on currencies. We merely pass on the currency between states of subscriptions and match these with the proper payment.

Customer hierarchies

Customers may be created in hierarchies. Example:

  • Customer
    • Child 1
    • Child 2

A customer may have a parent customer. This enables options to build trees of customer relationships.

Bill To Parent

When a customer has a parent customer, it can also be set to bill to its parent. This practically means any invoices generated from subscriptions, will instead be billed directly to the parent customer. The resulting invoice will set the child to the customer and the customer details to the parent.

This means it will pay using the parent's payment method, send the invoice to the parent's email and export it to the ERP invoiced to the parent customer. The information from both the parent customer and the child customer can be used in the Customer e-mails.

However, if you create a manual invoice via the API or via the web, the invoice would be assigned to the customer you represent. If you want to simulate a parent billing, you can assign the child of the invoice via API or web, whilst the customer of invoice, require to be the parent. Please visit states of billing for more information.

Auto Billing

A customer is by default set to auto billing. Auto billing means the invoices generated from subscriptions will automatically go through the booking flow. The booking flow can include payment, dunning, emailing the invoice and finally exporting the invoice to an ERP. Click it off if you want to inspect the invoices for your customer prior to manually booking the invoice. This allows you to edit the invoice content in case this customer needs some special attention.

Collective Billing

The customer can be set to collective billing. If the customer is a parent with children billing to it, it means all the children and their lines are collected on the same invoice. If the customer is not a parent to anyone it will simply collect lines across any subscriptions the customer may have. Read more in Collective Billing.

Email Template

Per default the customer will receive emails according to the Product Plan email template or the Product Family email template if there is one such. If none of these have a default the default Email Template will be used. If you want to overwrite it on the customer you can do so specifically for the customer in the email template field. This will always take precedence.

curl --request PATCH \
     --url \
     --header 'Authorization: Bearer {ApiKey}' \
     --header 'X-version: {Version}' \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
  "EmailTemplateSetID": "guid"


Did you know?

Clicking the 'share' symbol on the customer let's you create a direct link that will link to the customer even when you have several Upodi tenants?


We're always happy to help with code or other questions you might have! Search our documentation or contact helpdesk. You can also chat live with us using the Intercom icon.

What’s Next

Go to Subscriptions or delve into the Customer Objects and Endpoints.