KYC
Every access token acts for one user, and that user must be KYC-verified before they can
transact. Order reviews and order creation reject an unverified user with
USER_KYC_VERIFICATION_REQUIRED.
You run the identity check with your own verification provider, then submit the result to us.
Status
| Status | Meaning |
|---|---|
NONE | No submission has been made for this user. |
PROGRESSING | A submission is under review. The user still cannot transact. |
VERIFIED | The user can transact. |
REJECTED | The submission was rejected. rejectReason on the profile says why. |
Get KYC status returns just the status —
it is the cheap call to poll. Get KYC profile returns the
full profile, including rejectReason, once a submission exists.
Submitting
Submit KYC takes the user's identity fields, their document images, a selfie, and the verification report your provider produced. Images and the report are base64 data URLs rather than links to files:
data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...
Malformed ones are rejected with KYC_DOCUMENT_FORMAT_INVALID.
Almost every field is required. The exceptions:
addressandphoneare optional as a whole — but if you send an address, only line 2 within it is optional.backImageis not required for passports, which have no back side.
After you submit
The submission returns the resulting status, usually PROGRESSING. Poll
Get KYC status until it settles on VERIFIED or REJECTED.
A second submission while one is in review returns USER_KYC_UNDER_PROCESSING, and a national ID
that already belongs to a verified profile returns KYC_DOCUMENT_ALREADY_REGISTERED.
Supplementing a profile
Supplement KYC adds to or corrects a profile that has already been submitted. It takes the same fields as the submission, all of them optional. The fields you send replace the stored values and the rest stay as they are, so you can send an address on its own. The KYC status does not change, which means a verified user keeps transacting.
An address is sent complete, with line 1, city, state and postal code; line 2 stays optional. A user
who has not submitted KYC yet returns REQUESTED_INFO_NOT_FOUND; submit it first.
Other checks for verified users
A verified user's transactions also go through these checks:
HIGHER_KYC_LEVEL_REQUIRED— the service needs a higher level than the user holds.NATIONALITY_NOT_SUPPORTED— the nationality is not supported for that service.HIGH_RISK_USER— the user is flagged by risk screening.
These checks apply per service and per currency, so eligibility can differ from one currency to another.
Markets that need extra profile fields
Scan-to-Pay in BRL, ARS and PEN needs the user's address and gender when the user pays in the
currency of their own nationality: a Brazilian user paying in BRL, an Argentine user in ARS, or a Peruvian user in
PEN. If any of them is missing, order reviews and order creation return KYC_EXTRA_INFO_REQUIRED_FOR_LATAM_LOCAL_USER, and the message
names the fields to add:
Additional KYC information is required for payments in your local currency. Missing: address, gender. Please update your profile and try again.
The fields after Missing: are comma-separated and named as in the submission. Send them with the KYC submission
to avoid this. For a user who is already verified, add them with
Supplement KYC and retry the order. While we complete the user's
verification for that market, the order returns KYC_PROFILE_UNDER_REVIEW; retry it after a few minutes.