Skip to main content

KYC

Every access token acts for one user, and that user must be KYC-verified before they can transact. Quotes, order reviews, and order creation all reject an unverified user with USER_KYC_VERIFICATION_REQUIRED.

You run the identity check with your own verification provider, then submit the result to AliX.

Status

StatusMeaning
NONENo submission has been made for this user.
PROGRESSINGA submission is under review. The user still cannot transact.
VERIFIEDThe user can transact.
REJECTEDThe 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, not URLs to files:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQ...

Malformed ones are rejected with KYC_DOCUMENT_FORMAT_INVALID.

Almost every field is required. The exceptions:

  • address and phone are optional as a whole — but if you send an address, only line 2 within it is optional.
  • backImage is 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.

You cannot submit twice concurrently — 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.

Why a verified user can still be turned away

Verification is not the only gate. A transaction can still be rejected for:

  • 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 are per-service and per-corridor. A user who can cash out in one currency is not guaranteed to be able to in another.