# 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 &mdash;
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 defaultPaymentInstrument value.
If both are supplied, the value of this property overrides the defaultPaymentInstrument value.
The token expires after first use.

  - `defaultPaymentInstrument` (object,null) — one of:
    - Vaulted payment instrument:
      - `method` (string, required)
        Payment method supported vault.
For more information, see [Payment instrument](https://www.rebilly.com/catalog/all/payment-instruments).
        Enum: "payment-card", "ach", "paypal"
      - `paymentInstrumentId` (string, required)
        ID of the payment instrument.
        Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"
    - Alternative instrument:
      - `method` (string, required)
        Payment method.
        Enum: "payment-card", "ach", "cash", "check", "paypal", "AdvCash", "Aera", "Affirm", "Afterpay", "Aircash", "Airpay", "Alfa-click", "Alipay", "AmazonPay", "Apple Pay", "AstroPay Card", "AstroPay-GO", "BankSEND", "BankReferenced", "bank-transfer", "bank-transfer-2", "bank-transfer-3", "bank-transfer-4", "bank-transfer-5", "bank-transfer-6", "bank-transfer-7", "bank-transfer-8", "bank-transfer-9", "Baloto", "Beeline", "Belfius-direct-net", "bitcoin", "Bizum", "Blik", "Boleto", "Boleto-2", "Boleto-3", "cash-deposit", "CASHlib", "CashToCode", "CCAvenue", "China UnionPay", "Clearpay", "Cleo", "CODVoucher", "Conekta-oxxo", "Conekta-spei", "cryptocurrency", "Cupon-de-pagos", "CyberSource", "Dimoco-pay-smart", "Directa24Card", "domestic-cards", "Efecty", "echeck", "ecoPayz", "ecoPayzTurkey", "ecoVoucher", "EPS", "ePay.bg", "Ethereum", "e-wallet", "ezyEFT", "eZeeWallet", "FasterPay", "Flexepin", "Giropay", "Google Pay", "Gpaysafe", "iCashOne Voucher", "iDebit", "iDEAL", "ING-homepay", "INOVAPAY-pin", "INOVAPAY-wallet", "InstaDebit", "InstantPayments", "instant-bank-transfer", "Interac-online", "Interac-eTransfer", "Interac-express-connect", "Interac", "invoice", "iWallet", "Jeton", "JetonCash", "jpay", "KakaoPay", "Khelocard", "Klarna", "KNOT", "Litecoin", "loonie", "LPG-online", "LPG-payment-card", "Matrix", "MaxiCash", "Megafon", "MercadoPago", "MiFinity-eWallet", "miscellaneous", "MobilePay", "Mollie", "Multibanco", "Bancontact", "Bancontact-mobile", "MTS", "MuchBetter", "MuchBetterVoucher", "MyFatoorah", "Neosurf", "Netbanking", "Neteller", "Nordea-Solo", "NordikCoin", "OchaPay", "online-bank-transfer", "Onlineueberweisen", "oriental-wallet", "OXXO", "P24", "Pagadito", "PagoEffectivo", "Pagsmile-lottery", "Pagsmile-deposit-express", "PayCash", "Payco", "Payeer", "PaymentAsia-crypto", "Paysafecard", "PayTabs", "Pay4Fun", "Paynote", "Paymero", "Paymero-QR", "PayU", "PayULatam", "Perfect-money", "Piastrix", "PIX", "PinPay", "phone", "PhonePe", "POLi", "PostFinance-card", "PostFinance-e-finance", "QIWI", "QPay", "QQPay", "Quickpay", "rapyd-checkout", "rebilly-hosted-payment-form", "Resurs", "reverse-withdrawal", "Ripple", "SafetyPay", "Samsung Pay", "SEPA", "Siirto", "Skrill", "Skrill Rapid Transfer", "SMSVoucher", "Sofort", "SparkPay", "SPEI", "swift-dbt", "Tele2", "Telr", "Terminaly-RF", "Tether", "ToditoCash-card", "Trustly", "Tupay", "TWINT", "UniCrypt", "UPayCard", "UPI", "USD-coin", "VCreditos", "VegaWallet", "VenusPoint", "Viva", "voucher", "voucher-2", "voucher-3", "voucher-4", "Wallet88", "Webmoney", "Webpay", "Webpay-2", "Webpay Card", "WeChat Pay", "XPay-P2P", "XPay-QR", "Yandex-money", "Zotapay", "Zimpler", "Zip"
      - `paymentInstrumentId` (string)
        ID of the payment instrument.
        Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"
      - `reference` (string,null)
        Reference data.
This field is available only for the bank-transfer payment method.
    - Cash:
      - `method` (string, required)
        Enum: "cash"
      - `receivedBy` (string)
        Individual or entity that received the payment.
    - Check:
      - `method` (string, required)
        Enum: "check"
      - `reference` (string)
        Reference data.

  - `preferredPayoutInstrumentId` (string,null)
    ID of the customer's preferred payment instrument for payouts.
    Example: "inst_0YVB8KPKNXCBR9EDX7JHSED75N"

  - `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.
    - `firstName` (string,null)
      Contact's first name.
      Example: "Benjamin"
    - `lastName` (string,null)
      Contact's last name.
      Example: "Franklin"
    - `organization` (string,null)
      Contact's organization.
      Example: "Rebilly"
    - `address` (string,null)
      First line of the contact's street address.
      Example: "36 Craven St"
    - `address2` (string,null)
      Second line of the contact's street address.
    - `city` (string,null)
      Contact's city of residence.
      Example: "Austin"
    - `region` (string,null)
      Contact's region of residence.
      Example: "Texas"
    - `country` (string,null)
      Contact's country of residence in ISO 3166 alpha-2 country code.
For examples, see [ISO.org](https://www.iso.org/obp/ui/#search/code/).
      Example: "GB"
    - `postalCode` (string,null)
      Contact's postal code.
      Example: "WC2N 5NF"
    - `phoneNumbers` (array)
      List of phone numbers associated with the contact.
    - `phoneNumbers.label` (string, required)
      Phone number label or name.
      Example: "main"
    - `phoneNumbers.value` (string, required)
      Phone number value.
      Example: "1-512-777-0269"
    - `phoneNumbers.primary` (boolean)
      Specifies if the phone number is the contact's primary phone number.
      Example: true
    - `emails` (array)
      List of email addresses associated with the contact.
    - `emails.label` (string, required)
      Email label or name.
      Example: "main"
    - `emails.value` (string, required)
      Email address value.
      Example: "rebilly@example.com"
    - `emails.primary` (boolean)
      Specifies if the email address is the contact's primary email address.
      Example: true
    - `dob` (string,null)
      Contact's date of birth in ISO-8601 YYYY-MM-DD format.
      Example: "1980-04-01"
    - `jobTitle` (string,null)
      Contact's job title.
      Example: "CEO"

  - `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

  - `leadSource` (object)
    Lead source information.

  - `leadSource.medium` (string,null)
    Category of the lead source traffic.
For example, the medium could be organic search, Google ads, Display ads, and so on.

  - `leadSource.source` (string,null)
    Domain, platform, or channel from which the lead source originates.

  - `leadSource.campaign` (string,null)
    Campaign name of the lead source.

  - `leadSource.term` (string,null)
    Term associated with a lead source.

  - `leadSource.content` (string,null)
    Content contained in the lead source content.
For example, content could be graphics, video, and so on.

  - `leadSource.affiliate` (string,null)
    Individual or entity that is affiliated with the lead source.

  - `leadSource.subAffiliate` (string,null)
    Individual or entity that is associated with a lead source affiliate.
In other products, this field may also be referred to as sub ID or click ID in some.

  - `leadSource.salesAgent` (string,null)
    Name of the sales agent associated with the lead source.

  - `leadSource.clickId` (string,null)
    ID of the lead source click.
This value is passed in the ad click URL for tracking and campaign attribution.

  - `leadSource.path` (string,null)
    URL from which the lead source originates.

  - `leadSource.referrer` (string,null)
    Lead source [referrer URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referer).
    Example: "https://www.rebilly.com"

  - `personId` (string,null)
    ID of the associated person.
    Example: "prs_0YV7DDSDD1C8DA64KHH2W33CPF"

  - `notificationEmails` (array)
    Additional email addresses for notification delivery.

## 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.

  - `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.


