Skip to main content
Validates a batch of 1–1000 terminal orders and enqueues an async upsert job. COMPLETED, VOIDED, REVERSED, REFUNDED, and CANCELLED are accepted. OPEN and CLOSED are rejected with 422. Live OPEN/CLOSED orders are never overwritten.
Requires an access token with the orders:write scope. See Token to obtain a token.
Migrate customers first. Every customer_id must already exist as a live customer. Store, channel, fulfillment, and optional brand identifiers are validated against live records. COMPLETED orders must be PAID and include at least one payment intent. Each intent’s tenders[] are the payments. REFUNDED orders must have payment_status REFUNDED. issued_at and resolved_at are required, and resolved_at must be greater than or equal to issued_at. If you omit fulfillment_status, it is derived from status (FULFILLED, VOIDED, REVERSED, CANCELLED, or REFUNDED). The fulfillment walker is not started.

Request

Response

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