Create User

Create or retrieve a user

Creates a new end user for the authenticated client. If a user with the same email
already exists, the existing record is returned along with a confirmation message.

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

Create (or retrieve) an end user under the authenticated client for identity-verification tracking. The user's email is matched case-insensitively: if a user with the same email already exists for your client, the existing record is returned unchanged; otherwise a new user is created with no verification yet. Returns the user record and a message indicating whether it was created or already existed.

Authentication & access

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

Request body

FieldRequiredNotes
emailyesThe user's email address. Normalized (trimmed and lowercased) and used as the per-client uniqueness key.
full_namenoThe user's full name.
verification_modenoPer-user verification mode: urbanpayx_kyc (UrbanPayX-managed verification) or external_attestation (you attest the user's status yourself). When omitted, the client's default verification mode is applied.

Create vs. retrieve

  • New email — a user is created with kyc_status = none, external_verification_status = pending, and verification_source = none. The response message is User created successfully.
  • Existing email — the stored record is returned as-is and message is User already exists. This call never mutates an existing user.
  • Mode conflict — if you pass verification_mode explicitly and it differs from the existing user's mode, the request is rejected with 409. Use PATCH /api/v1/kyc/users/USER_ID/verification-mode to change the mode of an existing user.

Response

200 — returns the user record:

  • id — unique user ID.
  • email, full_name.
  • kyc_status — one of none, pending, approved, rejected, on_hold.
  • verification_mode — the mode assigned to this user.
  • external_verification_statuspending, verified, or rejected (relevant in external-attestation mode).
  • verification_sourcenone, urbanpayx, or external.
  • created_at — creation timestamp.
  • messageUser created successfully or User already exists.

Error responses

StatusWhen
409An explicit verification_mode was supplied that conflicts with the existing user's mode
422Request body failed validation (e.g. missing or malformed email, unsupported verification_mode value)
500User creation failed unexpectedly during a concurrent insert; retry the request

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

The email of the user

The full name of the user

enum

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

Responses

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