# Create a customer Creates a new customer and customer ID. The customer's primary address is used as the default address for payment instruments, subscriptions, and invoices if none are provided. If the customer already has an identifier within your system, and you want to create customer with a predefined ID — to prevent duplicate customers, use the _Upsert a customer with predefined ID_ operation. For more information, see Prevent duplicate customers. Endpoint: POST /customers Version: latest Security: SecretApiKey, JWT ## Request fields (application/json): - `websiteId` (string) ID of the website. A website is where an organization obtains a customer. For more information, see [Obtain an organization ID and website ID](https://www.rebilly.com/docs/settings/organizations-and-websites/#obtain-your-organization-id-and-website-id). Example: "web_0YV7DE4Z26DQSA1AC92FBJ7SEG" - `paymentToken` (string) Write-only payment token. If supplied, the token is converted into a payment instrument and set as the value. If both are supplied, the value of this property overrides the value. The token expires after first use. - `defaultPaymentInstrument` (any) - `customFields` (object) Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see [Custom fields](https://www.rebilly.com/catalog/all/custom-fields). - `primaryAddress` (any) Customer's primary address. - `isEddRequired` (boolean) Specifies if Enhanced Due Diligence (EDD) is enabled for this customer. For more information, see [Enhanced Due Diligence](https://www.rebilly.com/docs/kyc-and-aml/edd/). - `locale` (string,null) Language locale identifier in [RFC 5646](https://tools.ietf.org/html/rfc5646) format. Example: "fr-FR" - `taxNumbers` (array,null) Tax numbers of the customer. - `taxNumbers.type` (string, required) Type of the tax number. Enum: "eu-vat", "other" - `taxNumbers.value` (string, required) Value of the tax number. Example: "GB980780684" - `taxNumbers.isDefault` (boolean) Determines if the tax number is selected as default to display on invoices. Example: true ## Response 201 fields (application/json): - `id` (string) ID of the customer. Example: "cus_0YV7DDSDD1C8DA64KHH2W33CPF" - `email` (string,null) Customer's email address. - `firstName` (string,null) Customer's first name. - `lastName` (string,null) Customer's last name. - `websiteId` (string) ID of the website. A website is where an organization obtains a customer. For more information, see [Obtain an organization ID and website ID](https://www.rebilly.com/docs/settings/organizations-and-websites/#obtain-your-organization-id-and-website-id). Example: "web_0YV7DE4Z26DQSA1AC92FBJ7SEG" - `defaultPaymentInstrument` (any) - `createdTime` (string) Date and time which is set automatically when the resource is created. - `updatedTime` (string) Date and time which updates automatically when the resource is updated. - `customFields` (object) Use custom fields to extend a resource scheme to include custom data that is not provided as a common field. For more information, see [Custom fields](https://www.rebilly.com/catalog/all/custom-fields). - `primaryAddress` (any) Customer's primary address. - `company` (object,null) Company information that is associated with the customer's primary email address domain. This is a paid feature, to enable it [contact Rebilly](https://www.rebilly.com/support/). - `company.name` (string,null) Name of the company. - `company.domain` (string) Website domain of the company. - `company.yearFounded` (number,null) Founding year of the company. - `company.industry` (string,null) Industry the company is associated with. - `company.employeesCount` (number,null) Number of employees in the company. - `company.country` (string,null) Country where the company is based. - `company.locality` (string,null) Locality or region where the company is based. - `company._links` (array) - `company._links.href` (string) Link URL. - `company._links.rel` (string) Type of link. Enum: "linkedin" - `averageValue` (object) Average customer value. - `averageValue.currency` (string) Merchant's reporting currency. - `averageValue.amount` (number) Average approved payment amount in merchant's reporting currency. - `averageValue.amountUsd` (number) Average approved payment amount in USD. - `paymentCount` (integer) Total number of approved payments made by the customer. Payments are the result of or transactions. - `lastPaymentTime` (string,null) Date and time of the customer's last approved payment. Payments are the result of or transactions. - `lifetimeRevenue` (object) Customer's lifetime revenue. - `lifetimeRevenue.amount` (number) Revenue amount in the merchant's reporting currency. - `lifetimeRevenue.amountUsd` (number) Revenue amount in USD. - `invoiceCount` (integer) Total number of invoices issued to the customer. This value is auto-incrementing. If this value is , the record relates to a lead. A lead is a customer who has not made a payment yet. If this value is greater than or equal to the record relates to a customer. - `tags` (array) List of customer tags. - `tags.id` (string) ID of the tag. - `tags.name` (string, required) Unique name for the tag. Tag names are not case-sensitive. Example: "New" - `tags.type` (string, required) Type of tag. Tags of a specific type can only be assigned to corresponding entity types. For example, you can only use customer tags on customers. Enum: "customer", "kyc-document", "aml-check" - `tags._links` (array) Related links. - `revision` (integer) Number of times the customer's data has been modified. Use this value when analyzing webhook data to determine if a change must take precedence over the current representation. - `isEddRequired` (boolean) Specifies if Enhanced Due Diligence (EDD) is enabled for this customer. For more information, see [Enhanced Due Diligence](https://www.rebilly.com/docs/kyc-and-aml/edd/). - `hasFulfilledKyc` (boolean) Specifies if the customer has accepted and reviewed identity and address documents, or an accepted credit file document. - `organizationId` (string) Unique organization identifier. An organization is an entity that represents a company. For more information, see [Obtain an organization ID](https://www.rebilly.com/docs/settings/organizations-and-websites/#obtain-your-organization-id-and-website-id). Example: "org_0YVDM8RC7GDADADSBSMW124JA8" - `locale` (string,null) Language locale identifier in [RFC 5646](https://tools.ietf.org/html/rfc5646) format. Example: "fr-FR" - `taxNumbers` (array,null) Tax numbers of the customer. - `taxNumbers.type` (string, required) Type of the tax number. Enum: "eu-vat", "other" - `taxNumbers.value` (string, required) Value of the tax number. Example: "GB980780684" - `taxNumbers.isDefault` (boolean) Determines if the tax number is selected as default to display on invoices. Example: true - `taxNumbers.isValid` (boolean,null) Determines if the tax number passed the EU official [VIES validation](https://ec.europa.eu/taxation_customs/vies/#/vat-validation). Example: true - `_embedded` (object) Embedded objects that are requested using the query string parameter. - `_embedded.website` (object) - `_embedded.leadSource` (object) ## Response 401 fields (application/json): - `status` (integer) HTTP status code. - `type` (string) Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank". - `title` (string) Short, human-readable summary of the problem type. Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem. - `detail` (string) Human-readable explanation that is specific to this occurrence of the problem. - `instance` (string) URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. ## Response 403 fields (application/json): - `status` (integer) HTTP status code. - `type` (string) Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank". - `title` (string) Short, human-readable summary of the problem type. Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem. - `detail` (string) Human-readable explanation that is specific to this occurrence of the problem. - `instance` (string) URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. ## Response 409 fields (application/json): - `status` (integer) HTTP status code. - `type` (string) Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank". - `title` (string) Short, human-readable summary of the problem type. Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem. - `detail` (string) Human-readable explanation that is specific to this occurrence of the problem. - `instance` (string) URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. ## Response 422 fields (application/json): - `status` (integer) HTTP status code. - `type` (string) Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank". - `title` (string) Short, human-readable summary of the problem type. Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem. - `detail` (string) Human-readable explanation that is specific to this occurrence of the problem. - `instance` (string) URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced. - `invalidFields` (array) Invalid field details. Example: [{"field":"field1","message":"field1 is invalid"},{"field":"subObject.field2","message":"field2 is invalid"},{"field":"subObject.field2","message":"another error in the field2"}] - `invalidFields.field` (string) Name of the field. Dot notation is used for nested object field names. - `invalidFields.message` (string) Message field. ## Response 429 fields (application/json): - `type` (string) Problem type in the form of a [URI](https://tools.ietf.org/html/rfc3986) reference. It should provide human-readable documentation for the problem type. When this member is not present, its value is assumed to be "about:blank". Example: "about:blank" - `title` (string) Short, human-readable summary of the problem type. Other than for the purposes of localization, this should not change from occurrence to occurrence of the problem. Example: "Rate Limit Exceeded" - `status` (integer) HTTP status code. - `detail` (string) Human-readable explanation that is specific to this occurrence of the problem. Example: "A request cannot be executed because the user has sent too many requests within a certain period of time" - `instance` (string) URI reference that identifies the specific occurrence of the problem. It may or may not yield further information if dereferenced.