Skip to main content
POST
Creates a new customer with the provided information. The customer can then be used for creating checkouts and other operations. Every Soap API request is authenticated with a bearer token in the Authorization header:
Your API key is in the Soap Dashboard under the Developers section. It looks like key_.... Requests with a missing or invalid API key return 422 — never 401 — with a JSON error field, usually {"error": "API key not found."}. Branch on the status code rather than the message: GET /api/v1/device_pings/latest_geo_check does not yet return the same wording. Never expose your API key in client-side code — it is server-side only.
Legal name. In production, when KYC is enabled for a checkout type, every checkout of that type with a verified identity checks that the verified identity’s name is consistent with the customer profile’s current first_name and last_name. Use the customer’s legal first name and surname as shown on their ID, with no nicknames, middle names, initials or suffixes in those fields. A mismatch restricts the customer with reason code KYC_DOES_NOT_MATCH_PROFILE_NAME; fix the profile with Update Customer and lift the restriction in the dashboard.

Authorizations

Authorization
string
header
required

Bearer token authentication using your API key (key_...). Used for every endpoint except POST /api/v1/device_pings.

Body

application/json

The required list below reflects the default account configuration (email, first_name and last_name). Other accounts are configured to require first_name and last_name plus either email or phone_number, or email alone; if that is you, treat this schema's required list as advisory and ask Soap which rule applies. Unknown fields are rejected.

email
string<email> | null
required

Email address of the customer. Required on the default configuration. Must be unique within your business.

Example:

"john@acme.com"

first_name
string
required

Customer's legal first name as shown on their ID, with no nicknames, middle names or initials. In production this is checked against the verified identity on KYC-enabled checkouts.

Minimum string length: 1
Example:

"John"

last_name
string
required

Customer's legal surname as shown on their ID, with no suffixes. In production this is checked against the verified identity on KYC-enabled checkouts.

Minimum string length: 1
Example:

"Doe"

phone_number
string | null

10-digit US phone number with no country code, spaces or punctuation (for example 5551234567). Must be unique within your business.

Pattern: ^\d{10}$
Example:

"8008001234"

date_of_birth
string<date> | null

Date of birth of the customer as YYYY-MM-DD.

Example:

"1990-01-01"

internal_id

Your own identifier for the customer. A string or an integer; when present it must be unique within your business (creating a second customer with the same internal_id fails).

Example:

"3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b"

Response

Customer created.

id
string

Unique identifier for the customer to be used for future transactions.

Example:

"cus_pQsQ4kz3Af6Mb9rCupnWj6VFzxJsmkYK"

internal_id

Your identifier for the customer, as supplied; null when none was given.

Example:

"3f1b8c4e-7c2e-4c2c-8d2f-179cf0efb36b"

email
string | null
Example:

"john@acme.com"

first_name
string | null

Null only on accounts configured to create customers without names.

Example:

"John"

last_name
string | null

Null only on accounts configured to create customers without names.

Example:

"Doe"

phone_number
string | null
Example:

"8008001234"

date_of_birth
string<date> | null
Example:

"1990-01-01"

created_at
string<date-time>
Example:

"2025-03-05T18:26:43.069Z"