Create a customer
Authorizations
Token from POST /auth/token
Headers
Client-supplied request key. Required on all non-auth POST requests.
Body
Create a new customer. Almost all fields are optional — only type is required. PII fields (birthDate, residentialAddress, ipAddress, identifyingInformation) are write-only and never returned in responses. Whether identity verification is required, and whether OMS relies on your attestation or a vendor verifies, is configured per project, not per request.
Customer type. Individuals follow the project's KYC policy, businesses its KYB policy.
individual, business "individual"
Customer's legal first name.
"Jane"
Customer's middle name.
Customer's legal last name.
"Smith"
"jane@example.com"
Primary phone in E.164 format.
"+12125551234"
Date of birth in YYYY-MM-DD format. Write-only.
"1990-05-15"
ISO 3166-1 alpha-2 country code.
"US"
End-user's IP address. Used for geo-based compliance checks on the basic endorsement. Write-only.
Developer's own user ID for cross-referencing.
"usr_12345"
Whether the customer has accepted OMS terms of service. Default false.
Customer's residential address. Write-only.
Array of ID documents. Write-only. Supported types: ssn, itin, driversLicense, passport.
Endorsements to request: basic, cryptoCustody, usd. If omitted, OMS defaults to cryptoCustody and usd (which auto-includes basic).
basic, cryptoCustody, usd Response
Customer created
Customer response object. PII fields (birthDate, residentialAddress, ipAddress, identifyingInformation) are write-only — accepted in POST/PATCH but never returned in responses.
"cst_01H9Xa8F5dN6mP3q"
"customer"
Customer type. Individuals are subject to the project's KYC policy, businesses to its KYB policy.
individual, business "individual"
"Jane"
null
"Smith"
"jane@example.com"
Primary phone in E.164 format.
"+12125551234"
ISO 3166-1 alpha-2 country code.
"US"
Developer's own user ID for cross-referencing.
"usr_12345"
Opaque customer identity for the OMSX browser risk SDK. Present only when risk enrollment is complete.
active or inactive. Inactive customers cannot create new transactions. No intermediate states — all granularity lives in endorsement statuses.
active, inactive "active"
Whether the customer has accepted OMS terms of service.
true
Timestamp when signedAgreement was set to true. Null if not yet signed.
"2026-03-20T14:15:22Z"
Simplified flat view: one entry per wallet-asset combination. Use GET /wallets/{id} for the full representation.
Endorsements track KYC/compliance status. Types: basic, cryptoCustody, usd. Statuses use SCREAMING_CASE: INACTIVE, PENDING, ISSUES, ACTIVE, REJECTED, REVOKED_ISSUES, OFFBOARDED.