Initiate KYC verification
Creates the user if they don't already exist, registers them with the identity
verification provider, and returns a verification link to send to the user.
Only applicable to users in URBANPAYX_KYC verification mode.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Initiates KYC verification for an end user under the authenticated client. The endpoint creates the user if one with the given email does not already exist, registers them for UrbanpayX-managed verification, and returns a hosted verification link to send to the user. If the user already has a terminal KYC status, the existing state is returned instead of starting a new session. This endpoint applies only to users in urbanpayx_kyc verification mode.
Authentication & access
- Requires a Bearer token in the
Authorizationheader. - Requires the
kyc.verification.initiatepermission. - For dashboard (user) sessions, the account role must be
owneroroperations. Thedeveloperrole is not allowed. - API-credential callers must carry the
kyc.verification.initiatepermission on the credential. - The client must have KYC link generation enabled. If it is disabled, the request is rejected with
403.
Request body
email(required) - email address of the user. Normalized to lowercase before lookup; the user record is keyed on(client, email).full_name(required) - full name of the user.level_name(optional, defaultid-and-liveness) - verification level key fromGET /api/v1/kyc/levels, 1-64 characters. The key must exist in the catalog, be active, and be accessible to your client; otherwise the request is rejected with400.callback_url(optional, HTTPS only, max 1024 characters) - URL the user is redirected to after completing verification. When omitted, it falls back to your client's default verification callback URL. A non-HTTPS or malformed URL is rejected with422.
The verification level maps to UrbanpayX-managed verification settings internally; callers reference levels only by their catalog key.
Behavior
- If a matching user exists in
external_attestationmode, the request is rejected with400; the user must be switched tourbanpayx_kycfirst. - If a matching user already has a terminal status (
approved,rejected, oron_hold), that status is returned immediately and no new session is created. For these users the response carries noverification_url. - Otherwise (new user, or a user with status
noneorpending) a verification session is created, the user's status is set topending, and a freshverification_urlis returned.
Response
200 OK returns a KYCVerificationResponse:
user_id- the user's unique ID.kyc_status- one ofnone,pending,approved,rejected,on_hold.verification_url- the link to send to the user, ornullwhen no link applies (for example an already-approved, rejected, or on-hold user).message- human-readable description of the current verification state.
Error responses
| Status | When |
|---|---|
400 | level_name is unknown, inactive, or not accessible to this client, or the target user is in external_attestation mode. |
403 | KYC link generation is disabled for the client. |
422 | Request body fails validation (for example missing email/full_name, level_name length out of range, or a non-HTTPS callback_url). |
502 | The verification provider did not return a valid applicant id, verification URL, or session. |
503 | Verification is not configured for the client or platform. |
500 | Unexpected failure while initializing the user or initiating verification. |
Standard 401 (authentication), 403 (insufficient permission or role), and 429 (rate limit) responses apply to every endpoint and are documented in the Error reference.