Creates a bare customer — no card, barcode, or loyalty balances are created. To attach the customer to a campaign, use POST /v1/customers/register.
Auth: Authorization: Bearer <accessToken> — an organization-scoped token from Authentication. Missing or invalid token returns 401; an organization without an active subscription returns invalid_subscription (403).
Payload schema:
Body
Uniqueness checks ignore deleted customers. When email or phone hits an existing customer, look the customer up with GET /v1/customers/find and pass their id to POST /v1/customers/register as customer.id.
Example
Response
Returns 201 with the bare customer — cards is always empty and collectables is not present.
Notes:
- Optional fields that have no value are omitted from the response — you will not receive
null. Exception: opaqueId is null when not assigned.
data.phone is always returned in its normalized (E.164) form — the raw format you sent is not stored.
- A bare customer cannot take part in transactions (they have no card). Register them into a campaign first — the card, barcode, and loyalty balances are created at that step.
Last modified on September 29, 2026