Submit and track Know Your Customer verification for workers
Know Your Customer (KYC) verification is required before a user can receive payments through Cadana. You submit identity documents and personal information via the API, and Cadana handles automated verification. This page covers the submission requirements, status tracking, and webhook events.
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 identity information and documents for a user. Upload document images first using the file upload flow, then pass the returned fileId values.Returns 204 on success. The user’s KYC status moves to processing.
If provided, all required address fields must be completed.
Field
API Field
Required
Street address
address.line1
Yes
Address line 2
address.line2
No
City
address.city
Yes
State / Province
address.state
Yes
Postal code
address.postalCode
Yes
Country
address.countryCode
Yes (2-letter ISO code)
An address proof document can be provided via addressProofFileId (utility bill, bank statement, or government document dated within the last 3 months).
Identity and address verification are tracked separately. A user needs at minimum identity: "approved" to receive payments. If a verification is rejected, the identityStatusReason or addressStatusReason field explains why.
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:
Section
Can resubmit when
Identity
Status is rejected
Address
Status is not started or rejected
At least one of identity or address must be provided. When a section is included, all of its fields are required.
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).
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.