Users
Create User
Create a new card user with Persona KYC verification
POST
Creates a new user and initiates KYC verification through Persona. Returns a
Denied
Needs Verification
verificationUrl where the user completes identity verification.
This is the v2 flow using Persona for KYC — it requires fewer fields than the legacy v1 endpoint and provides a smoother verification experience.
string
required
Bearer token. Example:
Bearer sk_staging_your_api_keystring
required
Unique key to prevent duplicate user creation. Use a UUID.
string
required
User’s first name. 1-100 characters.
string
required
User’s last name. 1-100 characters.
string
required
User’s email address. Must be unique across your partner account.
string
required
International phone number. Example:
+14155555555string
required
Purpose of the account. 1-200 characters. Example:
personal use, business expenses.string
required
User’s IP address at the time of registration.
boolean
required
Must be
true. Confirms the user has accepted the terms of service.string
required
Card program type. Either
custodial or non_custodial.string
Ethereum wallet address. Required if
program is non_custodial.string
HTTPS URL to redirect the user after Persona verification. Overrides the default redirect URL set in your profile.
string
required
User’s street address. 1-500 characters. Example:
123 Main Street.string
required
User’s city. 1-100 characters.
string
required
User’s state or region. 1-100 characters. Example:
CA, Lagos.string
required
User’s postal/zip code. 1-20 characters.
string
required
ISO 3166-1 alpha-2 country code of the user’s country of residence. Example:
US, KE, NG.After User Creation
- Redirect the user to the
verificationUrlto complete Persona KYC - After verification, the user is redirected to your configured redirect URL with
?referenceId={serviceId} - Listen for KYC webhook events to know when the user is approved
- Once approved (
user.kyc.approved), you can create a card for the user
Sandbox Testing
In the staging environment, you can control the KYC outcome by appending a keyword to the user’slastName field. This lets you test each scenario without going through real identity verification.
The keyword is case-sensitive and must be appended to the end of the last name with no spaces or separators.
Example Webhook Payloads
ApprovedverificationLink is only present on needsVerification events. reason is only present on denied events and contains one or more comma-separated denial codes.