Customers are the people and businesses that make purchases. Paddle creates customers for you as part of checkout, or you can create them yourself.
If you're looking to update customer, address, and business information on a completed checkout or issued invoice, see Revise customer details on a billed or completed transaction
How it works
All purchases in Paddle require a customer. Customers are lightweight entities that hold key information like name, email, and localization information. They have two subentities:
- Addresses, which hold information about billing addresses
- Businesses, which hold information that you need when working with a business
Customers can have multiple addresses and businesses against them — useful when you're dealing with a large customer with offices in different locations. They can be linked to multiple subscriptions, too.
Paddle Checkout creates customers
If you offer products using a self-serve motion, letting customers sign up and pay for subscriptions using a checkout, you don't generally need to create customers yourself. Paddle Checkout automatically creates customers, addresses, and businesses as part of the checkout process.
When a customer enters an email address at checkout and there's already an existing customer entity for them in your system, Paddle uses the existing customer entity rather than creating a new one. This means transactions and subscriptions for the same customer are kept together, and lets you create complex multi-subscription offerings.
Paddle always creates a new address for a customer, even if matching addresses are found. This is because addresses are closely related to payment methods.
Required fields for invoicing
To make buying as frictionless as possible, Paddle Checkout only asks for the required information to complete a purchase online. This includes a customer's email address and country.
As invoices are legal documents, Paddle requires more data against customers and addresses to make sure that they're compliant across the markets we serve.
| Checkout (automatically-collected transactions) | Invoices (manually-collected transactions) | |
|---|---|---|
customer.name | ✗ | ✓ |
customer.email | ✓ | ✓ |
address.first_line | ✗ | ✓ |
address.second_line | ✗ | ✗ |
address.city | ✗ | ✗ |
address.postal_code | In some markets | ✓ |
address.region | In some markets | ✓ |
address.country_code | ✓ | ✓ |
You don't have to set a business for a transaction, even when working with an invoice.
When creating invoices, you can add contacts to a business to automatically send them a copy of invoices from Paddle.
Update information for completed transactions
Billed and completed transactions are considered financial records for compliance purposes. This means they can't be deleted or changed directly. If you update a customer, address, or business after it's been added to a transaction, the information against the transaction isn't updated.
You can revise customer information for billed or completed transactions to update information like tax or VAT number, address details, or customer name.
To learn more, see Revise customer details on a billed or completed transaction
Create a customer
Create a customer to create a transaction for a person or business.
Customer email addresses must be unique in your system. Customers can be linked to multiple subscriptions, so there's no need to create a new customer for each subscription.
- Go to Paddle > Customers.
- Click New customer
- Enter the details for your new customer.
- Click Save when you're done.
Send a POST request to the /customers endpoint to create a customer.
Include email in your request. We recommend including name too — it's required for billing by invoice.
You can optionally include locale to specify the language of emails Paddle sends, and custom_data to add your own structured key-value data.
{ "email": "jo@example.com", "name": "Jo Brown"}{ "data": { "id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "status": "active", "custom_data": null, "name": "Jo Brown", "email": "jo@example.com", "marketing_consent": false, "locale": "en", "created_at": "2024-04-11T15:57:24.813Z", "updated_at": "2024-04-11T15:57:24.813Z", "import_meta": null }, "meta": { "request_id": "9bcdcc29-e180-4055-ad3d-d37e5dc5e56d" }}Create an address
Create an address related to a customer to say where a person or business is located.
- Go to Paddle > Customers.
- Find the customer you'd like to add an address to in the list, then click the button and choose View customer . If you haven't created a customer already, you can create one.
- Under the Addresses heading, click New address
- Enter the details for your new customer.
- Click Save when you're done.
Create an address using the API in two steps:
- Get a customer
Get the Paddle ID of the customer you want to create an address for. You can skip this if you already have it. - Create address
Send a POST request to the/customers/{customer_id}/addressesendpoint to create an address.
Get a customer
Send a GET request to the /customers endpoint to list customers.
Extract the Paddle ID of the customer you want to create an address for. You can skip this if you already have it.
{ "data": [ { "id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "status": "active", "custom_data": null, "name": "Jo Brown-Anderson", "email": "jo@example.com", "marketing_consent": false, "locale": "en", "created_at": "2024-04-11T15:57:24.813Z", "updated_at": "2024-04-11T15:59:56.658719Z", "import_meta": null }, { "id": "ctm_01h844q4mznqpgqgm6evgw1w63", "status": "active", "custom_data": null, "name": "Jamie Price", "email": "jamie@example.com", "marketing_consent": false, "locale": "en", "created_at": "2023-08-18T10:58:05.087Z", "updated_at": "2024-04-11T15:55:02.727195Z", "import_meta": null }, { "id": "ctm_01h844p3h41s12zs5mn4axja51", "status": "active", "custom_data": null, "name": "Alex Wilson", "email": "alex@example.com", "marketing_consent": false, "locale": "en", "created_at": "2023-08-18T10:57:31.172Z", "updated_at": "2024-04-11T15:55:19.492484Z", "import_meta": null }, { "id": "ctm_01hrffh7gvp29kc7xahm8wddwa", "status": "active", "custom_data": null, "name": "Sam Miller", "email": "sam@example.com", "marketing_consent": false, "locale": "en", "created_at": "2024-03-08T16:49:53.691Z", "updated_at": "2024-04-11T16:03:57.924146Z", "import_meta": null } ], "meta": { "request_id": "913dee78-d496-4d13-a93e-09d834c208dd", "pagination": { "per_page": 50, "next": "https://api.paddle.com/customers?after=ctm_01h8441jn5pcwrfhwh78jqt8hk", "has_more": false, "estimated_total": 4 } }}Create address
Send a POST request to the /customers/{customer_id}/addresses endpoint to create an address.
Include country_code in your request. For some countries, postal_code or region is also required — see supported countries. You can optionally include address lines, a description, and custom_data.
{ "description": "Head Office", "first_line": "4050 Jefferson Plaza, 41st Floor", "city": "New York", "postal_code": "10021", "region": "NY", "country_code": "US"}{ "data": { "id": "add_01hv8gq3318ktkfengj2r75gfx", "status": "active", "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "description": "Head Office", "first_line": "4050 Jefferson Plaza, 41st Floor", "second_line": null, "city": "New York", "postal_code": "10021", "region": "NY", "country_code": "US", "custom_data": null, "created_at": "2024-04-12T06:42:58.785Z", "updated_at": "2024-04-12T06:42:58.785Z", "import_meta": null }, "meta": { "request_id": "dd6bbb71-6551-4e4a-843c-b10611cddb6e" }}Create a business
You should add a business if you're dealing with a company. You don't need to add a business if you're working with a private individual.
- Go to Paddle > Customers.
- Find the customer you'd like to add a business to in the list, then click the button and choose View customer . If you haven't created a customer already, you can create one.
- Under the Businesses heading, click New business
- Enter the details for your new business.
- Click Save when you're done.
Create a business using the API in two steps:
- Get a customer
Get the Paddle ID of the customer you want to create a business for. You can skip this if you already have it. - Create business
Send a POST request to the/customers/{customer_id}/businessesendpoint to create a business.
Get a customer
Send a GET request to the /customers endpoint to list customers.
Extract the Paddle ID of the customer you want to create a business for. You can skip this if you already have it.
{ "data": [ { "id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "status": "active", "custom_data": null, "name": "Jo Brown-Anderson", "email": "jo@example.com", "marketing_consent": false, "locale": "en", "created_at": "2024-04-11T15:57:24.813Z", "updated_at": "2024-04-11T15:59:56.658719Z", "import_meta": null }, { "id": "ctm_01h844q4mznqpgqgm6evgw1w63", "status": "active", "custom_data": null, "name": "Jamie Price", "email": "jamie@example.com", "marketing_consent": false, "locale": "en", "created_at": "2023-08-18T10:58:05.087Z", "updated_at": "2024-04-11T15:55:02.727195Z", "import_meta": null }, { "id": "ctm_01h844p3h41s12zs5mn4axja51", "status": "active", "custom_data": null, "name": "Alex Wilson", "email": "alex@example.com", "marketing_consent": false, "locale": "en", "created_at": "2023-08-18T10:57:31.172Z", "updated_at": "2024-04-11T15:55:19.492484Z", "import_meta": null }, { "id": "ctm_01hrffh7gvp29kc7xahm8wddwa", "status": "active", "custom_data": null, "name": "Sam Miller", "email": "sam@example.com", "marketing_consent": false, "locale": "en", "created_at": "2024-03-08T16:49:53.691Z", "updated_at": "2024-04-11T16:03:57.924146Z", "import_meta": null } ], "meta": { "request_id": "913dee78-d496-4d13-a93e-09d834c208dd", "pagination": { "per_page": 50, "next": "https://api.paddle.com/customers?after=ctm_01h8441jn5pcwrfhwh78jqt8hk", "has_more": false, "estimated_total": 4 } }}Create business
Send a POST request to the /customers/{customer_id}/businesses endpoint to create a business.
Include name in your request. We recommend including tax_identifier so Paddle charges the correct amount of tax. Add contacts to automatically copy them on invoices. You can also include company_number (appears on invoices) and custom_data.
{ "name": "Uplift Inc.", "company_number": "555775291485", "tax_identifier": "555952383", "contacts": [ { "name": "Parker Jones", "email": "parker@example.com" } ]}{ "data": { "id": "biz_01hv8hkr641vmpwytx38znv56k", "status": "active", "customer_id": "ctm_01hv6y1jedq4p1n0yqn5ba3ky4", "name": "Uplift Inc.", "company_number": "555775291485", "tax_identifier": "555952383", "contacts": [ { "name": "Parker Jones", "email": "parker@example.com" } ], "custom_data": null, "created_at": "2024-04-12T06:58:37.892Z", "updated_at": "2024-04-12T06:58:37.892Z", "import_meta": null }, "meta": { "request_id": "e925073f-12cd-4871-825d-2c43632edbc0" }}Events
customer.created | Occurs when a customer is created. |
address.created | Occurs when an address is created. |
business.created | Occurs when a business is created. |
Common errors
customer_already_exists |
| The customer being created already exists. |
customer_email_invalid |
| You are trying to create or update a customer with an invalid email address. |
address_location_not_allowed |
| You are trying to create or update an address with a location not supported by Paddle. |