KYC Flow
You may also see
pending while verification is underway — treat it like processing and wait for approved or rejected.
Most verifications complete automatically within minutes. If automated checks can’t verify the user’s identity, a manual review may take 1-2 business days.
Submit KYC
Submit identity information and documents for a user. Upload document images first using the file upload flow, then pass the returnedfileId values.
Returns 204 on success. The user’s KYC status moves to processing.
Personal Information
Identity Document
Supported document types:
Images must be clear and readable with all text visible. Supported formats: JPEG, PNG.
Address (Optional)
If provided, all required address fields must be completed.
An address proof document can be provided via
addressProofFileId (utility bill, bank statement, or government document dated within the last 3 months).
Check KYC Status
Retrieve a user’s current KYC status. Response:identity: "approved" to receive payments. If a verification is rejected, the identityStatusReason or addressStatusReason field explains why.
Resubmit KYC
If a user’s identity or address verification is rejected, use the PATCH endpoint to resubmit corrected information. You can resubmit identity, address, or both in a single request. Resubmission rules:At least one of
identity or address must be provided. When a section is included, all of its fields are required.Resubmit identity only
Resubmit address only
Returns204 on success. Only the resubmitted section(s) move to processing — approved sections remain unchanged.
Webhook Events
user.kyc.updated
Fired on every KYC status change — processing, approved, or rejected. Thetype field indicates which verification component changed.
For rejected verifications, fetch the user’s KYC details with
GET /v1/users/{userId}/kyc to see the failure reason.
user.kyc.expiry
Fired when a user’s identity document is approaching expiry or has expired.
See Events for all event types and payload details.
Handling Rejections
When KYC is rejected, the user needs to resubmit. Common rejection reasons:
To resubmit, call
PATCH /v1/users/{userId}/kyc with corrected information for the rejected section(s). The status resets to processing.
Sandbox Testing
Use sentinel values to simulate KYC approval or rejection in the sandbox environment without waiting for real verification. These sentinels work with both initial submission (POST) and resubmission (PATCH).
Identity Verification
SetidDetails.number to a sentinel value:
Address Verification
Setaddress.line2 to a sentinel value:
You can combine both sentinels in a single request to auto-resolve identity and address independently. For example,
idDetails.number: "auto-approve" with address.line2: "auto-reject" will approve identity and reject address.
When a sentinel is used, the document file IDs (
frontFileId, selfieFileId, addressProofFileId) can be omitted — no file upload is needed. If you do pass them, they must reference files you actually uploaded; made-up IDs are rejected with a 404. Without a sentinel, file IDs are required, as in production.Testing the Resubmission Flow
To test the full rejection-to-resubmission cycle in sandbox:- Submit KYC with
idDetails.number: "auto-reject"to get a rejected identity - Resubmit via PATCH with
idDetails.number: "auto-approve"to approve it
Next Steps
Working with Files
Upload identity documents before submitting KYC
KYB Requirements
Business verification requirements
Onboard Workers
Create Person and User records
Sandbox & Testing
Test values and simulated scenarios