Skip to main content

Create Customer

Creates a customer in the workspace (v2 called it an account). A new customer starts pending, with verification_status incomplete: verify an individual through KYC.

Takes a workspace-scoped API key or a dashboard session. An account-scoped key is refused with 401.

Replaces POST /api/v2/accounts.

Authorization:

Every request is signed with your API key: a short-lived JWT, signed with your private key, sent in one header on /v3/* and /api/v2/* alike.

Headers:
Authorization: APIKey {SIGNED_JWT}

How to build and sign the JWT: Authentication.

Endpoint

POST

/v3/customers

Headers​

HeaderDescription
Idempotency-KeyRequired, for every caller. One key per intended customer: any printable-ASCII string of 1 to 255 characters (a UUID is recommended), sent again unchanged on every retry of it. A retry answers the first response, with Idempotency-Replayed: true, instead of creating the customer twice. See API v3 overview.

Request Body Sample​

{
"customer_type": "individual",
"name": "Samantha Reyes",
"email": "samantha@example.com"
}

Request Body Schema​

FieldTypeDescription
customer_typestringRequired. individual or business.
namestringRequired. 3 to 255 characters, surrounding spaces trimmed.
emailstringRequired. A valid email, at most 255 characters, not used by another customer of the workspace.

Response Sample​

{
"id": "cst_01k8x40x9gfx6sv8a99hswy9bd",
"reference": "019a3a40-7530-7f4d-9da1-494c73cf256d",
"name": "Samantha Reyes",
"email": "samantha@example.com",
"customer_type": "individual",
"status": "pending",
"verification_status": "incomplete",
"created_at": "2025-10-31T12:31:34Z",
"updated_at": "2025-10-31T12:31:34Z"
}

Answers 200 with the new customer.

Response Schema​

A customer, with the fields of a List Customers item. reference is the UUID form of id.

Errors​

StatusmessageWhen
400invalid_customer_namename is shorter than 3 or longer than 255 characters.
400invalid_emailemail is longer than 255 characters or cannot be read as an address.
400failed to parse requestThe body is not valid JSON, or customer_type is not individual or business.
400idempotency_key_requiredNo Idempotency-Key header, or an empty one.
400idempotency_key_invalidThe Idempotency-Key is longer than 255 characters, or not printable ASCII.
401unauthorizedMissing or invalid signature, or the caller is an account-scoped key or a customer session.
403forbiddenA dashboard member whose role does not allow this. A workspace-scoped key always may.
409customer_email_existsA customer of this workspace already has this email.
409idempotency_in_progressThe same Idempotency-Key is still running. Retry after Retry-After seconds with the same key.
422Validation failedA required field is missing or email is not an email; details names it.
413body_too_largeThe signed body is over 1 MiB.
422idempotency_key_conflictThe same Idempotency-Key was used for a different request.
503idempotency_unavailableThe retry store could not be reached. Nothing was created: retry later with the same key.

Coming from v2​

v2 (POST /api/v2/accounts)v3
no idempotency headerIdempotency-Key required
accountTypecustomer_type
accountNamename
firstName, lastNamenot taken; the applicant's names go on the KYC record
reference (your own value)not taken; v3 sets reference to the id's UUID
id (uuid) in the responseid (cst_…)
createdAt, updatedAtcreated_at, updated_at

Support and Resources​

If you need assistance or have any questions, our support team is here to help. You can contact our support team at support@blockwyre.com.

Stay Updated​

Stay up-to-date with the latest news, updates, and features from BlockWyre by following us on social media:

We are excited to have you on board and look forward to seeing how you leverage BlockWyre's powerful tools to enhance your financial operations. Happy integrating!