Choosing a flow
Requirements List
Some countries add specific additional requirements. See Country-specific requirements.
Supply
userInfo.email when creating the customer. Read the overall status with GET /organization/{organizationId}/kyc.
Requirements unlock in stages
A customer does not owe every requirement at once. Verification runs in stages, and each stage asks for its own requirements. Today a customer moves through these stages in this order:- Routing. The country in their personal data decides which requirements apply. Nothing else can be sent until this lands.
- Identity.
personalData,identityDocument,selfie,occupation, and any country-specific requirement. - Proof of address. Only when the identity document carried no address.
- Agreement.
customerAgreement.
- The breakdown lists only the current stage, plus requirements already satisfied. A requirement from a later stage is not in the list at all until the customer reaches that stage.
- Send a requirement only once it is in the list as
pendingoractionRequired. If you send it earlier, the request is accepted with a202, then refused in the background. AkycUpdatedwebhook arrives withneedsWork: true, and nothing retries it. - A stage moves on by itself. When everything the current stage asks for has landed, it is submitted for review and the overall
statusbecomessubmitted. When the review clears, the next stage’s requirements appear in the list andstatusreturns toinProgress. Both moves sendkycUpdated. Review is usually a few seconds; a manual review takes longer. - Proof of address is the one exception. You may send it before its stage, as long as the identity stage has not been submitted yet. Send it in the same request as the identity document. It is used only if the proof of address stage is reached.
1
Read the breakdown
2
Send what is pending
Everything in the list with
status: "pending" or "actionRequired" and requiresLaunch: false.3
Wait for the next kycUpdated
It arrives when the stage is submitted, and again when the next stage arrives. Without a
kycUpdated subscription, read the breakdown again after a few seconds.4
Repeat until only launch rows are left
When everything outstanding reads
requiresLaunch: true, launch the customer. When nothing is outstanding, wait for status: "approved".Tracking verification status
The overall status
The per-requirement breakdown
Add?requirements=true for a step-by-step account of what the customer still needs. It is opt-in: without it the response leaves requirements out.
customerAgreement is not in the list yet, so it cannot be sent yet. Once the identity stage clears, the same call returns:
type matches a requirement in the Requirements List or a country-specific one. requiresLaunch: true marks the rows only the WebSDK can satisfy.
We reserve the right to add new requirements, and will update these docs when we do. Some countries may also gain requirements of their own.
Requirement statuses
Country-specific requirements
🇲🇽 Mexico
🇲🇽 Mexico
It must be legible and belong to the customer being verified. Submit it as the
tax_document part of POST /organization/{organizationId}/verification/documents, or let the customer upload it in the widget.In sandbox, the constancia is the one document that has to look real. Any real constancia with any data in it works. Use this example constancia.In sandbox, the customer’s name must be
LETICIA HERNANDEZ GONZALEZ. The RFC registry check still runs, and the sandbox registry returns only this test person. Any other name is rejected.