Create or upsert a customer
When external_ref is supplied, the endpoint upserts on the
unique (orgId, externalRef) key:
• Existing match → returns the existing record with HTTP 200.
No fields are overwritten.
• No match → creates a new customer, HTTP 201.
Without external_ref, the endpoint always creates and returns
HTTP 201 (or 409 if the supplied email already exists in the
org). Idempotency-Key remains the 24h replay cache; the
externalRef upsert is the permanent semantic dedupe.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Replay-safe request key. Repeated requests with the same value within 24h return the original response unchanged.
255Body
Response
Existing customer returned (externalRef upsert hit)
Partner-supplied identifier (Shopify customer GID, Toast
guest UUID, Square customer id, …). Unique per org. POST
/customers upserts on this when supplied.
Related topics
Find-or-create customer + enrolment (no transaction)Find-or-create customer + post transaction in one callList customersSynchronise customersCreate an enrollment
