> ## Documentation Index
> Fetch the complete documentation index at: https://pay-docs.holdstation.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create Customer KYC

> Create a partner customer KYC record.

Create a partner customer KYC record. The path `{id}` is the partner-provided KYC id, later referenced as `kyc_id` on onramp, offramp, and withdraw orders. Fails with `409 Conflict` if a record with that id already exists.

See the [Partner Customer KYC guide](/guides/partner-customer-kyc/overview) for the field reference and required-field rules.

## Authentication

<ParamField header="Partner-App-Key" type="string" required>
  Your partner app key.
</ParamField>

<ParamField header="X-HSPay-Signature" type="string" required>
  Base64-encoded Ed25519 signature of the sign data.
</ParamField>

<ParamField header="X-HSPay-Timestamp" type="string" required>
  Unix timestamp (seconds) of the request. Must be within 60 seconds of server time.
</ParamField>

## Path Parameters

<ParamField path="id" type="string" required>
  Partner-provided unique id for this customer. Use this value as `kyc_id` on subsequent orders.
</ParamField>

## Body Parameters

<ParamField body="name" type="string" required>
  Full name.
</ParamField>

<ParamField body="email" type="string" required>
  Email.
</ParamField>

<ParamField body="phone" type="string" required>
  Phone number.
</ParamField>

<ParamField body="address" type="string" required>
  Residential address.
</ParamField>

<ParamField body="id_number" type="string" required>
  Identity document number.
</ParamField>

<ParamField body="id_type" type="integer" required>
  `1` = Citizen ID, `2` = Passport, `3` = License.
</ParamField>

<ParamField body="sex" type="integer" required>
  `1` = Male, `2` = Female, `3` = Other.
</ParamField>

<ParamField body="nationality" type="string" required>
  Nationality.
</ParamField>

<ParamField body="date_of_issue" type="string" required>
  Identity document issue date in ISO `YYYY-MM-DD` format.
</ParamField>

<ParamField body="date_of_expiry" type="string" required>
  Identity document expiry date in ISO `YYYY-MM-DD` format.
</ParamField>

<RequestExample>
  ```json Request theme={null}
  {
    "name": "Jane Doe",
    "email": "jane@example.com",
    "phone": "+84123456789",
    "address": "123 Le Loi, District 1, Ho Chi Minh City",
    "id_number": "012345678",
    "id_type": 2,
    "sex": 2,
    "nationality": "VN",
    "date_of_issue": "2020-01-01",
    "date_of_expiry": "2030-01-01"
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "message": "success",
    "data": {
      "id": "cust-001",
      "name": "Jane Doe",
      "email": "jane@example.com",
      "phone": "+84123456789",
      "address": "123 Le Loi, District 1, Ho Chi Minh City",
      "id_number": "012345678",
      "id_type": 2,
      "sex": 2,
      "nationality": "VN",
      "date_of_issue": "2020-01-01",
      "date_of_expiry": "2030-01-01"
    }
  }
  ```

  ```json 409 theme={null}
  {
    "error": "kyc already exists",
    "error_code": "KYC_ALREADY_EXISTS",
    "message": "A KYC record with this id already exists"
  }
  ```
</ResponseExample>
