Create Order
Create a new order
Request Flow
- Submit Order - Send order details including products and shipping address
- Validation - We validate product URLs and shipping address
- Queued - Order is queued for processing
- Processing - Our system places the order with the retailer
- Completed - You receive confirmation with tracking details

Product URLs
Provide direct product URLs from supported retailers. Each product must include:- url - Direct link to the product page
- quantity - Number of items to order (integer, default 1)
- variant - A list of label, value pairs indicating a variant of a product.
For example, if you’re ordering a shirt. The shirt may come in different colors and different sizes.
To indicate a red medium shirt, you would do:
Make sure the strings used for both the label and value match up to what is present on the retailer website. For example, if a
mediumis indicated by the valueM, useMfor the value. - condition_in / condition_not_in - Condition allow/deny lists. Limit which offers are eligible by item condition — useful for buying only new items, or for accepting used items down to a floor. See Condition Filtering.
Shipping Address
All orders require a valid shipping address. Addresses are validated using Google’s Address Validation API. Required fields:first_nameandlast_nameaddress_line1(useaddress_line2for apartment/suite, optional)citypostal_codephone_number
state— omit for countries that don’t use states/provincescountry— ISO 3166-1 alpha-2 code (e.g.US,CA,GB,DE); defaults toUS
country as an ISO 3166-1 alpha-2 code; state is optional where it doesn’t apply.Payment
By default, orders draw from your prepaid wallet — nopayment object needed. To charge your own end-customer’s card instead and keep a margin, include a payment object with mode: "connect". See the Stripe Connect guide for the full flow.
| Field | Required | Description |
|---|---|---|
mode | "wallet" (default) or "connect". | |
payment_method | connect | Your end-customer’s saved Stripe payment-method id (pm_…) on your connected account. |
customer | connect | Your end-customer’s Stripe Customer id (cus_…) on your connected account. |
margin | connect | Your markup: { "type": "flat", "value": <cents> } or { "type": "percent", "value": <percent> }. |
max_price; your end-customer is charged the actual total when Zinc places the order with the retailer.
Optional Order Data
You can include additional data with your order for tracking and reference purposes. This data will be used by our system as input to any fields during checkout that match.- po_number - Your internal purchase order number for tracking and reconciliation
- is_gift - Mark the order as a gift (boolean, default
false). Prices are suppressed on the packing slip where the fulfillment method supports it. - handling_days_max - Optional ceiling on a seller’s handling days (integer,
minimum
1). Offers from sellers whose handling time exceeds this are skipped. Omit or sendnullfor no limit.
Response
A successful order creation returns:- id - Unique order identifier (UUID)
- status - Current order status (initially “pending”)
- items - Array of order items with their details
- shipping_address - Confirmed shipping address
- created_at - Timestamp of order creation
id to retrieve order status and updates.Authorizations
Zinc API key (Bearer zn_...)
Headers
Body
Request model for creating a new order.
Shipping address model.
Supports international addresses. The state field is optional for countries
that don't use states/provinces. The country field uses ISO 3166-1 alpha-2
country codes (e.g., "US", "CA", "GB", "DE").
Maximum price (in cents) allowed for an order before it is finalized.
Optional idempotency key to prevent duplicate orders. If not provided, one will be generated.
36Optional short ID (e.g., 'zn_acct_XXXXXXXX') of specific retailer credentials to use for this order. If not provided, credentials will be selected automatically.
Optional metadata to attach to the order. Can contain arbitrary key-value pairs.
Optional purchase order number for the order.
Optional ceiling on a seller's shipping and handling days. Omit or send null for no limit.
x >= 1Mark the order as a gift. Prices are suppressed on the packing slip where the fulfillment method supports it.
Optional payment block. Omit for prepaid-wallet billing (default).
Response
Successful Response
Response model for order data.
pending, in_progress, order_placed, order_failed, cancelled, cancelled_by_retailer Fulfillment result and price breakdown for a completed or failed order; null while processing.
Stripe Connect charge details when this order was paid via Connect; null for prepaid-wallet orders.

