Start KYB verification for a business.
Returns a hosted verification link the business opens to submit its documents.
Only valid in urbanpayx_kyb mode — businesses in external_attestation
mode must record their decision via the external status endpoint. If a
verification is already in progress, the existing link is returned.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Initiates KYB (Know Your Business) verification for a business customer. Identify the business by its registration_number and country; if no matching business exists under your client it is created automatically with the catalog default KYB level, then an UrbanpayX-managed hosted verification session is started. The response returns the business id, its current kyb_status, and a verification_url to send the business through. To control the KYB level (rather than using the default), call POST /api/v1/kyb/businesses first with an explicit kyb_level.
Authentication & access
- Requires a Bearer token (client API credential or an authenticated client user session).
- Permission:
kyb.verification.initiate. - Client users must hold the
owneroroperationsrole. API credentials must carry the permission above. - The client must have KYB link generation enabled. If
kyb_links_enabledis disabled for your client, the request is rejected with403.
Request body
company_name(string, required) - 1 to 255 characters.registration_number(string, required) - 1 to 128 characters. Combined withcountry, this identifies the business under your client.country(string, required) - exactly 3 characters. Normalized to uppercase server-side.legal_address(string, optional) - up to 512 characters.tax_id(string, optional) - up to 128 characters.contact_email(string, optional) - must be a valid email address.callback_url(string, optional) - HTTPS URL the business is redirected to after completing verification, up to 1024 characters. Falls back to your client's default verification callback URL when omitted. A non-HTTPS or malformed URL is rejected with422.
Behavior
- The business is matched by
client_id+registration_number+country. A new business is created on the fly if none matches, using the catalog default KYB level. - If the matched business is configured for
external_attestationverification mode, the request is rejected; switch it tourbanpayx_kybbefore initiating KYB. - If the business is already in a terminal or in-progress state, no new session is started and the current state is returned instead:
approved- returnsverification_url: nullwith a message that the business is already verified.rejected- returnsverification_url: nulland a message to contact support.on_hold- returnsverification_url: nulland a message that KYB is temporarily on hold.
- For a business already
pendingwith a still-valid verification link, the existing link is reused (idempotent retry) rather than generating a new one. - The verification session is provisioned automatically from the resolved KYB level; the response shape is identical either way.
Responses
200 OK- returns aKYBVerificationResponse:business_customer_id(string) - the business id.kyb_status(string) - one ofnone,pending,approved,rejected,on_hold.verification_url(string or null) - the hosted link for the business to complete verification; null when no new session applies (e.g. already approved, rejected, or on hold).message(string) - human-readable status of the request.
Error responses
| Status | When |
|---|---|
403 | KYB link generation is disabled for the client. |
400 | The matched business is configured for external_attestation (switch verification_mode to urbanpayx_kyb first), or its stored KYB level is not accessible to your client. |
422 | Request body fails validation (missing or malformed fields, or a non-HTTPS callback_url). |
503 | The verification provider is not configured for the client or platform, or the business's stored KYB level is not recognized. |
502 | The verification provider did not return an applicant id or a verification URL. |
500 | Failed to initialize the business record, or an unexpected error occurred while initiating verification (retry later). |
Standard 401 (authentication), 403 (insufficient permission or role), and 429 (rate limit) responses apply to every endpoint and are documented in the Error reference.