Flow
Step 1: Create a KYC session
url that you open or embed for your user. Sessions expire after 1 hour.
Step 2: User completes KYC
Open or embed theurl in your application. The user completes identity verification on the Sumsub-powered page.
Step 3: Check session status
Poll the session status or subscribe to thekyc_session.completed webhook event.
Session statuses
| Status | Description |
|---|---|
creating | Session is being provisioned |
pending | Waiting for user to complete KYC |
completed | KYC approved — ready to create cardholder |
expired | Session expired (1 hour TTL) |
failed | KYC verification was rejected |
Step 4: Create the cardholder
Once the session status iscompleted, create the cardholder referencing the session:
Key details
firstNameandlastNameare extracted automatically from the completed Sumsub verification.- Each session can only be used for one cardholder (enforced by a unique constraint). Attempting to reuse a session returns
409 Conflict. - The session must be
completedbefore cardholder creation. If the session is stillpending, the endpoint performs a synchronous check against Sumsub as a fallback for delayed webhooks.
Required fields
| Field | Type | Description |
|---|---|---|
externalUserId | string | Your unique identifier for this user |
kycSource | string | Must be "web" |
kycSessionId | string | KYC session ID from step 1 |
email | string | Valid email address |
phoneNumber | string | E.164 formatted phone number |
Sandbox behavior
In sandbox mode,POST /partner/kyc-sessions returns a mock URL and the session auto-completes immediately. No real Sumsub interaction occurs.