---
title: "Create Customer"
method: POST
path: "/v5/customers"
tags: ["Customers"]
---

# Create Customer

`POST /v5/customers`

Create a new customer in the customer vault with billing and optional shipping information. The billing field can be either a single object or an array of objects to create multiple billing addresses at once.

## Request body

- CreateCustomerRequest — Request schema for creating a new customer. The billing field can be either a single object or an array of objects to create multiple billing addresses at once.
  - `customer_id` string — Customer identifier. If not provided, one will be generated.
  - `billing` union, required — Billing address information. Can be a single object or an array of objects to create multiple billing addresses at once.
    - CreateCustomerBilling — Billing address and payment details for a new customer billing record.
      - `id` string — Billing information identifier. If not provided, one will be generated.
      - `first_name` string — First name
      - `last_name` string — Last name
      - `company` string — Company name
      - `address1` string — Address line 1
      - `address2` string — Address line 2
      - `city` string — City
      - `state` string — State or province. Format: `CC`
      - `zip` string — ZIP or postal code
      - `country` string — Country code (ISO 3166-1 alpha-2). Format: `CC`
      - `phone` string — Phone number
      - `email` string, email — Email address
      - `fax` string — Fax number
      - `currency` string — Currency code (e.g., USD)
      - `priority` integer, nullable — Priority of the billing address
      - `payment_details` union, required — Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, Apple Pay encrypted payload, or Google Pay encrypted payload. Do not combine fields from different variants.
        - object — Non-tokenized credit card data.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
          - `card_cvv` string — The card security code.
        - object — Bank account (ACH) details for this transaction.
          - `check_name` string, required — The name on the customer's ACH account
          - `check_aba` number, required — The customer's bank routing number
          - `check_account` number, required — The customer's bank account number
          - `account_type` 'checking' | 'savings', required — The type of ACH account the customer has
          - `account_holder_type` 'personal' | 'business', required — The type of ACH account the customer has
          - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK', required — The Standard Entry Class code of the ACH transaction
          - `check_number` string — Check number
        - object — Single-use or vault token from Payment Component or Collect.js (not Apple Pay / Google Pay).
          - `payment_token` string, required — The tokenized version of the customer's card or check information
        - object — Encrypted payment data from the Apple Pay SDK.
          - `applepay_payment_data` string, required — The encrypted token created when integration directly to the Apple Pay SDK
        - object — Encrypted payment data from the Google Pay SDK.
          - `googlepay_payment_data` string, required — The encrypted token created when integration directly to the Google Pay SDK
        - object — Merchant-decrypted Apple Pay payment data.
          - `decrypted_applepay_data` true, required — Merchant-decrypted Apple Pay flag.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
        - object — Merchant-decrypted Google Pay payment data.
          - `decrypted_googlepay_data` true, required — Merchant-decrypted Google Pay flag.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
      - `cardholder_auth` union — Cardholder authentication data. Use the 3-D Secure variant for EMV authentication results. Use the Decrypted wallet variant for merchant-decrypted Apple Pay or Google Pay, which relays the cryptogram and ECI to the 3-D Secure fields.
        - object — EMV 3-D Secure authentication result fields.
          - `status` 'verified' | 'attempted', required — Set 3D Secure condition. Value used to determine E-commerce indicator (ECI).
          - `cavv` string, required — Cardholder authentication verification value from the 3-D Secure authentication response. Format: base64 encoded.
          - `xid` string — Cardholder authentication transaction id. Format: base64 encoded.
          - `three_ds_version` string — 3DSecure version (for example `2.1.0` or `2.2.0`).
          - `directory_server_id` string — Directory Server Transaction ID from 3DSecure 2.0 authentication. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        - object — Wallet authentication for decrypted Apple Pay or Google Pay payments.
          - `cavv` string, required — Wallet payment cryptogram (submitted in the repurposed 3-D Secure `cavv` field).
          - `eci` string — Electronic Commerce Indicator from the wallet payment data (submitted in the repurposed 3-D Secure `eci` field).
    - CreateCustomerBilling[]
      - `id` string — Billing information identifier. If not provided, one will be generated.
      - `first_name` string — First name
      - `last_name` string — Last name
      - `company` string — Company name
      - `address1` string — Address line 1
      - `address2` string — Address line 2
      - `city` string — City
      - `state` string — State or province. Format: `CC`
      - `zip` string — ZIP or postal code
      - `country` string — Country code (ISO 3166-1 alpha-2). Format: `CC`
      - `phone` string — Phone number
      - `email` string, email — Email address
      - `fax` string — Fax number
      - `currency` string — Currency code (e.g., USD)
      - `priority` integer, nullable — Priority of the billing address
      - `payment_details` union, required — Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, Apple Pay encrypted payload, or Google Pay encrypted payload. Do not combine fields from different variants.
        - object — Non-tokenized credit card data.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
          - `card_cvv` string — The card security code.
        - object — Bank account (ACH) details for this transaction.
          - `check_name` string, required — The name on the customer's ACH account
          - `check_aba` number, required — The customer's bank routing number
          - `check_account` number, required — The customer's bank account number
          - `account_type` 'checking' | 'savings', required — The type of ACH account the customer has
          - `account_holder_type` 'personal' | 'business', required — The type of ACH account the customer has
          - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK', required — The Standard Entry Class code of the ACH transaction
          - `check_number` string — Check number
        - object — Single-use or vault token from Payment Component or Collect.js (not Apple Pay / Google Pay).
          - `payment_token` string, required — The tokenized version of the customer's card or check information
        - object — Encrypted payment data from the Apple Pay SDK.
          - `applepay_payment_data` string, required — The encrypted token created when integration directly to the Apple Pay SDK
        - object — Encrypted payment data from the Google Pay SDK.
          - `googlepay_payment_data` string, required — The encrypted token created when integration directly to the Google Pay SDK
        - object — Merchant-decrypted Apple Pay payment data.
          - `decrypted_applepay_data` true, required — Merchant-decrypted Apple Pay flag.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
        - object — Merchant-decrypted Google Pay payment data.
          - `decrypted_googlepay_data` true, required — Merchant-decrypted Google Pay flag.
          - `card_number` string, required — Credit card number
          - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
      - `cardholder_auth` union — Cardholder authentication data. Use the 3-D Secure variant for EMV authentication results. Use the Decrypted wallet variant for merchant-decrypted Apple Pay or Google Pay, which relays the cryptogram and ECI to the 3-D Secure fields.
        - object — EMV 3-D Secure authentication result fields.
          - `status` 'verified' | 'attempted', required — Set 3D Secure condition. Value used to determine E-commerce indicator (ECI).
          - `cavv` string, required — Cardholder authentication verification value from the 3-D Secure authentication response. Format: base64 encoded.
          - `xid` string — Cardholder authentication transaction id. Format: base64 encoded.
          - `three_ds_version` string — 3DSecure version (for example `2.1.0` or `2.2.0`).
          - `directory_server_id` string — Directory Server Transaction ID from 3DSecure 2.0 authentication. Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        - object — Wallet authentication for decrypted Apple Pay or Google Pay payments.
          - `cavv` string, required — Wallet payment cryptogram (submitted in the repurposed 3-D Secure `cavv` field).
          - `eci` string — Electronic Commerce Indicator from the wallet payment data (submitted in the repurposed 3-D Secure `eci` field).
  - `shipping` object — Optional shipping address information
    - `id` string — Shipping information identifier. If not provided, one will be generated.
    - `first_name` string — First name
    - `last_name` string — Last name
    - `company` string — Company name
    - `address1` string — Address line 1
    - `address2` string — Address line 2
    - `city` string — City
    - `state` string — State or province. Format: `CC`
    - `zip` string — ZIP or postal code
    - `country` string — Country code (ISO 3166-1 alpha-2). Format: `CC`
    - `phone` string — Phone number
    - `email` string, email — Email address
    - `priority` integer, nullable — Priority of the shipping address

## Response `200`

Customer created successfully

- CustomerResponse — Customer response matching CustomerRestSerializer structure
  - `object` 'customer', required — Resource type identifier
  - `id` string, required — Customer vault ID
  - `created` string, date-time, nullable — Customer creation date in UTC ISO 8601 format
  - `billing` object[] — Array of billing addresses
    - `object` 'billing', required — Resource type identifier
    - `id` string, required — Billing address ID (address_name)
    - `first_name` string — First name
    - `last_name` string — Last name
    - `company` string — Company name
    - `address1` string — Address line 1
    - `address2` string — Address line 2
    - `city` string — City
    - `state` string — State or province
    - `zip` string — ZIP or postal code
    - `country` string — Country code (ISO 3166-1 alpha-2)
    - `phone` string — Phone number
    - `email` string, email — Email address
    - `fax` string — Fax number
    - `priority` integer, nullable — Priority of the billing address
    - `payment_details` union — Payment method details. Exactly one variant: raw card data, ACH (check) data, **payment_token**, Apple Pay encrypted payload, or Google Pay encrypted payload. Do not combine fields from different variants.
      - object — Non-tokenized credit card data.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
        - `card_cvv` string — The card security code.
      - object — Bank account (ACH) details for this transaction.
        - `check_name` string, required — The name on the customer's ACH account
        - `check_aba` number, required — The customer's bank routing number
        - `check_account` number, required — The customer's bank account number
        - `account_type` 'checking' | 'savings', required — The type of ACH account the customer has
        - `account_holder_type` 'personal' | 'business', required — The type of ACH account the customer has
        - `sec_code` 'PPD' | 'WEB' | 'TEL' | 'CCD' | 'POP' | 'RCK', required — The Standard Entry Class code of the ACH transaction
        - `check_number` string — Check number
      - object — Single-use or vault token from Payment Component or Collect.js (not Apple Pay / Google Pay).
        - `payment_token` string, required — The tokenized version of the customer's card or check information
      - object — Encrypted payment data from the Apple Pay SDK.
        - `applepay_payment_data` string, required — The encrypted token created when integration directly to the Apple Pay SDK
      - object — Encrypted payment data from the Google Pay SDK.
        - `googlepay_payment_data` string, required — The encrypted token created when integration directly to the Google Pay SDK
      - object — Merchant-decrypted Apple Pay payment data.
        - `decrypted_applepay_data` true, required — Merchant-decrypted Apple Pay flag.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
      - object — Merchant-decrypted Google Pay payment data.
        - `decrypted_googlepay_data` true, required — Merchant-decrypted Google Pay flag.
        - `card_number` string, required — Credit card number
        - `card_exp` string, required — Credit card expiration date. Format: `MMYY`
  - `shipping` object[] — Array of shipping addresses
    - `object` 'shipping', required — Resource type identifier
    - `id` string, required — Shipping address ID (shipping_address_name)
    - `first_name` string — First name
    - `last_name` string — Last name
    - `company` string — Company name
    - `address1` string — Address line 1
    - `address2` string — Address line 2
    - `city` string — City
    - `state` string — State or province
    - `zip` string — ZIP or postal code
    - `country` string — Country code (ISO 3166-1 alpha-2)
    - `phone` string — Phone number
    - `email` string, email — Email address
    - `fax` string — Fax number
    - `priority` integer, nullable — Priority of the shipping address

## Other responses

- `400` — Bad Request - Validation Error
- `401` — Unauthorized

---

[API](https://skmtc.net/nmi/apis/embedded-components-api.md) · [All operations](https://skmtc.net/nmi/apis/embedded-components-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/nmi/embedded-components-api/versions/45c2ecda3685/schema)
