---
title: "Push order"
method: POST
path: "/orders"
tags: ["Orders"]
---

# Push order

`POST /orders`

Pushes a normalized order from any e-commerce platform. Triggers the matching ecommerce.* event (order placed, cancelled, fulfilled, or refunded), updates the customer's revenue attributes (ltv, totalSpent, ordersCount, aov), cancels superseded commerce automations, and schedules replenishment reminders. Processing is asynchronous.

## Request body

- object
  - `orderId` string, required — Unique order identifier in your platform. Used for idempotency - pushing the same orderId twice never double counts revenue.
  - `orderNumber` string, nullable — Human-facing order number, if different from orderId
  - `status` 'placed' | 'cancelled' | 'fulfilled' | 'refunded' — Lifecycle status of this order event
  - `totalCents` integer, required — Order total in cents
  - `currency` string, required — ISO 4217 currency code
  - `orderedAt` string, date-time — ISO 8601 timestamp of when the order happened. Defaults to now.
  - `customer` CommerceCustomer, required
    - `email` string, email, required
    - `externalId` string — Customer-owned app/customer/user ID
    - `firstName` string
    - `lastName` string
    - `attributes` object — Custom subscriber attributes to merge into the profile. Synced to ClickHouse for segment filtering.
  - `items` CommerceOrderItem[] — Order line items
    - `productId` string, required — Your product identifier (same value used when upserting products)
    - `variantId` string, nullable — Your variant identifier within the product
    - `sku` string, nullable
    - `title` string, required
    - `variantTitle` string, nullable
    - `quantity` integer, required
    - `priceCents` integer, nullable — Unit price in cents
  - `refundAmountCents` integer, nullable — For refunded orders - refunded amount in cents
  - `customerTotals` object, nullable — Authoritative customer aggregates from your platform. When provided, these override Sequenzy's additive revenue bookkeeping.
    - `ordersCount` integer
    - `totalSpentCents` integer
  - `properties` object — Extra event properties to attach to the triggered ecommerce.* event

## Response `202`

Order queued for processing

- object
  - `success` boolean
  - `queued` boolean
  - `jobId` string
  - `orderId` string
  - `status` string

## Other responses

- `400` — Validation error (e.g. invalid orderedAt)
- `401` — Unauthorized
- `503` — Failed to queue order

---

[API](https://skmtc.net/sequenzy/apis/sequenzy-api.md) · [All operations](https://skmtc.net/sequenzy/apis/sequenzy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sequenzy/sequenzy-api/versions/af1cf9620482/schema)
