---
title: "[V2] Server-side create user"
method: POST
path: "/api/v2/user"
tags: ["Onboarding/OffChain"]
---

# \[V2\] Server-side create user

`POST /api/v2/user`

## Request

- Base URL: `https://api-baas.wirexapp.com`
- URL: `https://api-baas.wirexapp.com/api/v2/user`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Chain-Id` and API key in header `Authorization`

Creates a new user in the Wirex system using server-side Wirex Partner Credentials authorization. Optionally accepts sharing_token or initial_data for KYC registration.

## Request body

- RequestUserCreateUserServerRequestV2
  - `initial_data` RequestUserInitialData
    - `is_pep` boolean, required
    - `profile` RequestUserProfile, required
      - `date_of_birth` string, required: Date of birth in YYYY-MM-DD format
      - `email` string, required: Email address of the user
      - `first_name` string, required: First name of the user
      - `last_name` string, required: Last name of the user
      - `nationality` string, required: Nationality as ISO 3166-1 alpha-2 country code
      - `phone_number` string, required: Phone number with country code
    - `residence_address` RequestUserResidenceAddress, required
      - `city` string, required: City
      - `country` string, required: Country as ISO 3166-1 alpha-2 country code
      - `line1` string, required: Address line 1
      - `line2` string: Address line 2 (optional)
      - `post_code` string, required: Postal code
      - `state` string: State or province (optional)
  - `sharing_data` RequestUserSharingData
    - `email` string, required: Email address of the user
    - `sharing_token` string, required: Sharing token obtained from SumSub KYC provider for Wirex client id.
  - `user_address` string: EOA of the user, compliant with the format of the chain you're using. This address should be unique, otherwise, the request will fail. Preferred over wallet_address; either field may be supplied.
  - `wallet_address` string: Deprecated: still accepted for backward compatibility, but callers should send user_address — this field carries the user's EOA, which is now accepted as user_address. Either field may be supplied; if both are provided they must match.

## Response `200`

OK

- ResponseIdResponse
  - `id` string, required: Identifier of the created entity

## Other responses

- `400`: Bad Request
- `500`: Internal Server Error

## Changes

- **2026-11-03** `760446c7ebd2`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/wirexapp/apis/wirex-baas-api/changes/api/v2/user/post.md)

---

[API](https://skmtc.dev/wirexapp/apis/wirex-baas-api.md) - [All operations](https://skmtc.dev/wirexapp/apis/wirex-baas-api/llms.txt) - [OpenAPI document](https://skmtc.dev/wirexapp/apis/wirex-baas-api/revisions/760446c7ebd2?raw)
