Create the customer
POST /api/v0/customer with identity
fields, the questionnaire and custom fields. The whole payload is validated
first — one bad field and nothing is created.Required fields
201 with the userId. Save it — every later call uses it.Upload the photo ID
POST /api/v0/customer/{userId}/documents
as multipart/form-data.PENDING once the
provider has everything it needs.Upload the selfie
Same endpoint, The response’s
idDocType=SELFIE.missing array tells you what is still outstanding:Identity fields
Document types
idDocType is validated — a value outside this list returns 400.
PASSPORT · ID_CARD · DRIVERS_LICENSE · RESIDENCE_PERMIT · SELFIE
side is not validated. FRONT and BACK are meaningful only for two-sided
documents (ID_CARD, DRIVERS_LICENSE). For a passport or selfie it is ignored,
and any value — even nonsense — is accepted and passed through..jpg returns 400.
Hosted verification instead of uploads
If you would rather not handle documents yourself, generate a KYC link and send the customer to it.ttlSeconds is one hour. Requesting one for an already
verified customer returns 409.
Importing an already-verified customer
Pass ashareToken instead of the identity payload. Only email is required
alongside it; identity comes from the token, and any identity fields you send are
ignored and listed back in warnings.
Request
Deleting
Delete is a soft delete. The customer stops appearing in listings and a laterGET returns 404. The email is
released, so the same person can be onboarded again.
A customer holding a balance cannot be deleted — that returns 409, and the
amount is never disclosed.