kind on the same account — each account supports at most one active individual (KYC) and one business (KYB) profile. The Verification transitions through multiple statuses as the user completes the process: pending while they’re going through KYC, approved once identity is confirmed, rejected if the provider declines, and action_required when a payout provider needs additional information like a bank statement or tax ID.
Successful Verifications result in a fully verified identity with confirmed name, date of birth, country, and address — unlocking the account for payouts. If you create a Verification with pre-fill fields (first_name, address, etc.), it automatically seeds both the verification and the hosted KYC form so the user doesn’t re-enter information you already have. We recommend listening for the identity_profile.approved and identity_profile.rejected webhooks rather than polling, to react to status changes in real time. By using Verifications, you can onboard users for payouts through a single API integration, even as the underlying KYC providers and compliance requirements change over time.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /verifications?account_id={biz_ tag} | List verifications for an account |
GET | /verifications/{verification_id} | Retrieve a single verification by its idpf_ tag |
POST | /verifications | Create a verification and start a KYC/KYB session |
PATCH | /verifications/{verification_id} | Update identity fields or respond to RFIs |
DELETE | /verifications/{verification_id} | Soft-delete and unlink from the account |
Statuses
| Status | Description | Next step |
|---|---|---|
not_started | Verification exists but no KYC session has been started | Call POST /verifications to start |
pending | User needs to complete KYC at the session_url | Redirect the user to session_url |
approved | KYC passed — the account can transact | No action needed |
rejected | KYC was declined by the provider | Call POST /verifications with restart: true |
action_required | A payout provider needs additional information | Check rfis array and respond |
The numeric id of the verification record.Example:
verf_xxxxxxxxxxxxxThe most recent error code returned during verification. Null if no error has occurred.Available options:
abandoned, consent_declined, country_not_supported, device_not_supported, document_expired, document_type_not_supported, document_unverified_other, email_unverified_other, email_verification_declined, id_number_insufficient_document_data, id_number_mismatch, id_number_unverified_other, phone_unverified_other, phone_verification_declined, selfie_document_missing_photo, selfie_face_mismatch, selfie_manipulated, selfie_unverified_other, under_supported_ageA human-readable explanation of the most recent verification error. Null if no error has occurred.Example:
Document image was too blurry to read.The current status of this verification session.Available options:
requires_input, processing, verified, canceled, created, started, submitted, approved, declined, resubmission_requested, expired, abandoned, review, action_required
