---
title: "Create customer"
method: POST
path: "/api/v1/customers"
tags: ["customers"]
---

# Create customer

`POST /api/v1/customers`

Registers a new customer within the caller account. The document is deduplicated per account.

## Request body

- CustomerCreate
  - `document` string, nullable — CPF (11 digits) or CNPJ (14 characters). Optional.
  - `type` 'PF' | 'PJ', nullable
  - `birth_date` string — Date of birth.
  - `metadata` object, nullable
  - `name` string, required
  - `email` string, nullable
  - `phone` string, nullable

## Response `201`

Customer created.

- CustomerCreateResponse
  - `id` string, required
  - `document` string, nullable, required
  - `type` 'PF' | 'PJ', nullable, required
  - `name` string, required
  - `email` string, nullable, required
  - `phone` string, nullable, required
  - `birth_date` string, nullable, required
  - `metadata` object, nullable, required
  - `created_at` string, required
  - `updated_at` string, required

## Other responses

- `400` — Request payload, query string, or path parameter failed validation.
- `401` — Authentication is missing, malformed, expired, or refers to a session that is no longer active.
- `403` — The caller is authenticated but lacks the required permission for this action.
- `409` — A customer with the same document already exists in the caller account.
- `422` — The payload passed schema validation but breaks a domain invariant.
- `500` — Unexpected server error. The response body never leaks internal details.

## Changes

- **2026-07-07** `a3b4750a505f` — 2 breaking, 12 info
  - added the new required request property `name`
  - the `document` request property type/format changed from `object`/`` to `string`/``
  - added the new optional request property `email`
  - added the new optional request property `phone`
  - …10 more
- **2026-07-07** `84194c31ab85` — 18 breaking, 5 warning, 4 info
  - the `document` request property type/format changed from `string`/`` to `object`/``
  - removed the required property `avg_ticket` from the response with the `201` status
  - removed the required property `birth_date` from the response with the `201` status
  - removed the required property `created_at` from the response with the `201` status
  - …23 more

[Change history](https://skmtc.dev/kruzer-corp/apis/oms-api/changes/api/v1/customers/post.md)

---

[API](https://skmtc.dev/kruzer-corp/apis/oms-api.md) · [All operations](https://skmtc.dev/kruzer-corp/apis/oms-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kruzer-corp/oms-api/revisions/38ef6e16a7a8/schema)
