Skip to main content
This resource has a successor in the Whop API, the versioned API that new integrations should build on. This page stays fully supported.
A Verification guides a person or business through the identity checks required for an account to receive payouts. Individuals complete Know Your Customer (KYC) checks, and businesses complete Know Your Business (KYB) checks. For example, create a Verification before a user’s first withdrawal. You can prefill their name and address so they can complete the hosted form without a custom verification UI. Later, use the same Verification to retrieve their verified identity data and respond to RFIs from downstream payout providers. Create a Verification when an account needs to be verified before transacting — typically before their first withdrawal. Before creating, make sure you have a Company with a ledger account (created automatically when you create a company). Don’t create multiple Verifications of the same 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

Statuses

string
required
The numeric id of the verification record.Example: verf_xxxxxxxxxxxxx
VerificationErrorCodes | null
required
The 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_age
string | null
required
A human-readable explanation of the most recent verification error. Null if no error has occurred.Example: Document image was too blurry to read.
VerificationStatuses
required
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, manual_review