Skip to main content

📄 Guide

Creating a user is the first step of a Partner-Managed integration. Whether your end users come from an exchange, a wallet or a project’s own app, a single call registers them in DCS and lays the foundation for the KYC verification and card issuance that follow. As a licensed issuer with its own BIN, DCS assigns every user a globally unique user ID (customerId) at this step and stores their basic contact details securely.

Mental model: the user is the anchor for everything that follows

Under Partner-Managed the partner owns the limits and makes the authorization decision, but the user as an identity is still managed centrally by DCS. Once a user is created, the customerId you receive runs through every action afterwards:
The user is the anchor for everything that followsThe user is the anchor for everything that follows
Store the customerId returned on success carefully: it is the required key that ties the later endpoints together.

Who does what

Prerequisites

  • You hold the Enterprise ApiKey / SecretKey and build the request headers as required by the authentication rules (including the HMAC-SHA256 signature and the nonce). If that is not set up yet, start with First steps and Authentication.
  • You send the request with Content-Type: application/json.

Endpoint

POST /open-api/customer/v1/create-customer

Request parameters

Plaintext vs ciphertext (please read) The mobile number and the email are each a choice between plaintext and ciphertext:
  • To send them in plaintext, fill in phone / email directly.
  • To add a layer of encryption on top of the transport (recommended if you are sensitive about PII), fill in phoneEncryption / emailEncryption instead and supply encryptionIV along with them. The algorithm is AES-GCM.
  • If you send both the plaintext and the ciphertext of the same field, the system uses the ciphertext.
Field note phoneCountryCode (the country code) and phone (which starts with + and carries the country prefix) both convey the country. Both are currently required: phoneCountryCode acts as the 2-letter ISO region for libphonenumber and phone is the full E.164 number, and the two must refer to the same country.

Minimum request example (plaintext)

Minimum request example (ciphertext)

Response example

Response fields (data)

Common response envelope

Every endpoint returns the same envelope, { code, message, messageDetail, data }:
How to read success: treat code == "SYS_SUCCESS" as the single source of truth for success, rather than inferring it from whether messageDetail is populated or from the wording of data.status. For error codes and troubleshooting, see Authorization declines and error codes.

Next steps

Once the user is created and you hold the customerId, the next step is to apply for KYC for that user. After KYC passes you can apply for a card.