Create Business Customer

Create a business customer.

Creates a business customer record for KYB. Idempotent on
(registration_number, country): if the business already exists it is returned
unchanged. Verification mode and KYB level fall back to the client's default
configuration when omitted.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Create a business customer record under your client for KYB. This endpoint only provisions the record and resolves its verification configuration; it does not start verification (use POST /api/v1/kyb/verify for that). It is idempotent on (registration_number, country): if a matching business already exists it is returned unchanged. The response reports the created (or existing) business along with its resolved verification mode, KYB level, and status.

Authentication & access

  • Requires a client API token: Authorization: Bearer <token>.
  • The caller must hold the kyb.businesses.write permission and have the OWNER or OPERATIONS role.

Request body

FieldTypeRequiredNotes
company_namestringyes1-255 characters.
registration_numberstringyes1-128 characters. Part of the idempotency key.
countrystringyesISO 3166-1 alpha-3 (exactly 3 characters). Normalized to uppercase. Part of the idempotency key.
legal_addressstringnoUp to 512 characters.
tax_idstringnoUp to 128 characters.
contact_emailstringnoValid email address.
verification_modestringnourbanpayx_kyb or external_attestation. Falls back to the client default when omitted.
kyb_levelstringnoKYB level key from GET /api/v1/kyb/levels. Lowercase alphanumerics, dashes, or underscores; max 64 characters.

Idempotency

A business is keyed on (registration_number, country) within your client. If a business with the same pair already exists:

  • It is returned unchanged (message is "Business already exists"), with no fields overwritten.
  • If you send a verification_mode that differs from the existing record's mode, the request is rejected with 409. To change the mode of an existing business, use PATCH /api/v1/kyb/businesses/{business_id}/verification-mode.
  • kyb_level is immutable for an existing record and is ignored on a repeat call.

Verification mode & KYB level

The effective verification mode is resolved in this order: the request verification_mode, then the client's default business verification mode, then urbanpayx_kyb.

  • UrbanpayX-managed KYB (urbanpayx_kyb): UrbanpayX runs the verification. The kyb_level you provide must be a currently active key in the level catalog (GET /api/v1/kyb/levels); if omitted, the catalog default is used.
  • External attestation (external_attestation): you attest the business's verification status yourself. kyb_level does not apply and is stored as null.

Response

200 OK with the business record:

  • id — the business customer id.
  • company_name, registration_number, country, contact_email — the stored details.
  • kyb_status — KYB lifecycle status; none for a freshly created business (no verification started yet). One of none, pending, approved, rejected, on_hold.
  • verification_mode — the resolved mode (urbanpayx_kyb or external_attestation).
  • kyb_level — the resolved level key under UrbanpayX-managed KYB, or null for external attestation.
  • external_verification_statuspending, verified, or rejected. pending for a new record.
  • verification_sourcenone, urbanpayx, or external. none for a new record.
  • created_at — creation timestamp.
  • message"Business created successfully" on creation, or "Business already exists" when an existing record was returned.

Error responses

StatusWhen
400The effective verification mode resolved to a mode that is not valid for business customers (only reachable when the client's configured default is not a business mode).
409A business with the same registration_number and country already exists with a different verification_mode than the one supplied.
422Request body failed validation (e.g. missing required field, wrong country length, malformed kyb_level format, or a kyb_level key not present in the active catalog under urbanpayx_kyb).
500A concurrent create raced and the record could not be resolved; retry.

Standard 401 (authentication), 403 (insufficient permission or role), and 429 (rate limit) responses apply to every endpoint and are documented in the Error reference.

Body Params
string
required
length between 1 and 255
string
required
length between 1 and 128
string
required
length between 3 and 3

ISO 3166-1 alpha-3

length ≤ 512
length ≤ 128
enum

Per-business verification mode. If omitted, client default is used.

length ≤ 64

KYB level key from GET /api/v1/kyb/levels. Required semantics: applies only when the effective verification_mode is urbanpayx_kyb; ignored otherwise. If omitted under urbanpayx_kyb, the server uses the catalog default.

Responses

Language
Credentials
Bearer
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json