Skip to main content
Validates a batch of 1–1000 customers and enqueues an async upsert job. The HTTP response returns as soon as the job is queued. Processing happens in a workflow that upserts by id + merchant_id + env.
Requires an access token with the customers:write scope. See Token to obtain a token.
Payments are not imported. Soft-deleted customers do not conflict; the import creates a live row. Duplicate id or email values inside the same batch are rejected with 422. Each item uses the same body as register customer, except payments are ignored. notification_preferences accepts email, push, push_token, and push_token_expires_at. push_token and push_token_expires_at must be sent together; the expiry must be in the future and at most 180 days from now.

Request

Response

Returns 201 with the queued job:
Track progress in the dashboard under Customers → Migrations. Successful and failed jobs older than 30 days are deleted.