curl --request GET \
--url https://api.zinc.com/orders/{order_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders/{order_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.zinc.com/orders/{order_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zinc.com/orders/{order_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zinc.com/orders/{order_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zinc.com/orders/{order_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders/{order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"max_price": 123,
"attempts": 123,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"quantity": 123,
"status": "pending",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [
"New"
],
"condition_not_in": [
"New"
],
"cancellation_reason": "<string>"
}
],
"shipping_address": {},
"retailer_credentials_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 123,
"is_gift": false,
"gift_message": "<string>",
"retailer_credentials_uuid": "<string>",
"job_result": {
"success": true,
"error": "<string>",
"error_type": "<string>",
"error_details": {
"code": "<string>",
"message": "<string>",
"address_validation_reasons": [],
"field_errors": []
},
"price_components": {
"subtotal": 123,
"tax": 123,
"shipping": 123,
"discount": 123,
"fees": 123,
"total": 123,
"converted_payment_total": 123,
"currency": "<string>",
"payment_currency": "<string>",
"cart_items": [
{
"name": "<string>",
"product_id": "<string>",
"quantity": 123,
"unit_price": 123,
"line_total": 123
}
],
"line_items": [
{}
]
},
"estimated_delivery": "<string>",
"merchant_order_ids": [
{}
]
},
"merchant_order_ids": [],
"tracking_numbers": [],
"created_by": "<string>",
"user_id": 123,
"returns": [],
"connect": {
"state": "<string>",
"secured_amount": 123,
"order_cost": 123,
"customer_margin": 123,
"zinc_fee": 123,
"stripe_fee": 123,
"final_charge": 123,
"transfer_amount": 123,
"payment_intent_id": "<string>",
"connected_account_id": "<string>",
"simulated": false
},
"customer_notifications": {
"email": "<string>",
"delivered": true
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Get Order
Retrieve the status and details of a specific Zinc order by its ID.
curl --request GET \
--url https://api.zinc.com/orders/{order_id} \
--header 'Authorization: <api-key>'import requests
url = "https://api.zinc.com/orders/{order_id}"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.zinc.com/orders/{order_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.zinc.com/orders/{order_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zinc.com/orders/{order_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zinc.com/orders/{order_id}")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zinc.com/orders/{order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "pending",
"max_price": 123,
"attempts": 123,
"items": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"url": "<string>",
"quantity": 123,
"status": "pending",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"variant": [
{
"label": "<string>",
"value": "<string>"
}
],
"condition_in": [
"New"
],
"condition_not_in": [
"New"
],
"cancellation_reason": "<string>"
}
],
"shipping_address": {},
"retailer_credentials_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"metadata": {},
"po_number": "<string>",
"handling_days_max": 123,
"is_gift": false,
"gift_message": "<string>",
"retailer_credentials_uuid": "<string>",
"job_result": {
"success": true,
"error": "<string>",
"error_type": "<string>",
"error_details": {
"code": "<string>",
"message": "<string>",
"address_validation_reasons": [],
"field_errors": []
},
"price_components": {
"subtotal": 123,
"tax": 123,
"shipping": 123,
"discount": 123,
"fees": 123,
"total": 123,
"converted_payment_total": 123,
"currency": "<string>",
"payment_currency": "<string>",
"cart_items": [
{
"name": "<string>",
"product_id": "<string>",
"quantity": 123,
"unit_price": 123,
"line_total": 123
}
],
"line_items": [
{}
]
},
"estimated_delivery": "<string>",
"merchant_order_ids": [
{}
]
},
"merchant_order_ids": [],
"tracking_numbers": [],
"created_by": "<string>",
"user_id": 123,
"returns": [],
"connect": {
"state": "<string>",
"secured_amount": 123,
"order_cost": 123,
"customer_margin": 123,
"zinc_fee": 123,
"stripe_fee": 123,
"final_charge": 123,
"transfer_amount": 123,
"payment_intent_id": "<string>",
"connected_account_id": "<string>",
"simulated": false
},
"customer_notifications": {
"email": "<string>",
"delivered": true
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Path Parameters
- order_id (required) - The UUID of the order to retrieve
Response
Returns a complete order object with:- id - Order UUID
- status - Current order status
- items - Array of order items with individual statuses
- shipping_address - Delivery address
- job_result - Detailed processing results (when available)
- merchant_order_ids - The retailer’s own order number(s) for this order
- created_at - Order creation timestamp
- updated_at - Last update timestamp
Merchant Order IDs
merchant_order_ids holds the retailer’s own order number(s) for this order — for
example an Amazon 113-… ID — as recorded when the order was placed. Use it to
cross-reference Zinc orders against retailer records, invoices, or a customer’s
account history.
{
"merchant_order_ids": ["113-1234567-1234567"]
}
GET /orders?merchant_order_id=…. The filter is an exact match, not a partial one, and matches dashes both as typed and stripped.Item-Level Status
Each item in the order has its own status tracking:{
"id": "item-uuid",
"url": "https://www.amazon.com/...",
"quantity": 2,
"status": "shipped",
"created_at": "2025-11-24T10:00:00Z",
"updated_at": "2025-11-24T12:30:00Z"
}
Job Results
For completed or failed orders, thejob_result field contains detailed information about the order processing, including:
- Success/failure status
- Retailer confirmation numbers
- Tracking information
- Error details (if failed)
Price Components
Once the retailer total is known,job_result.price_components breaks the charge down. All amounts are in cents.
| Field | Description |
|---|---|
subtotal | Item subtotal before tax and shipping |
tax | Tax charged by the retailer |
shipping | Shipping charged by the retailer |
total | Order total in the order currency (subtotal + tax + shipping) |
converted_payment_total | total converted to the currency actually charged |
currency | Currency of total (e.g. USD) |
payment_currency | Currency the order was paid in |
line_items | Itemized rows, each { description, amount, category } |
{
"job_result": {
"success": true,
"price_components": {
"subtotal": 4800,
"tax": 396,
"shipping": 0,
"total": 5196,
"converted_payment_total": 5196,
"currency": "USD",
"payment_currency": "USD",
"line_items": [
{ "description": "Subtotal", "amount": 4800, "category": "subtotal" },
{ "description": "Tax", "amount": 396, "category": "tax" }
]
}
}
}
Connect Charge
For orders paid via Stripe Connect, the response includes aconnect object with the charge breakdown and its current state. It is null for prepaid-wallet orders. All amounts are in cents.
| Field | Description |
|---|---|
state | secured → captured, or released / refunded on a terminal outcome. |
secured_amount | Amount held on the end-customer’s card when the order was placed (sized from max_price). |
order_cost | Actual order cost (goods), captured once Zinc places the order with the retailer. |
customer_margin | Your margin, transferred to your connected account. |
zinc_fee | Zinc’s platform fee. |
stripe_fee | Stripe’s processing fee on the charge. |
final_charge | Total captured from the end-customer (order_cost + customer_margin + zinc_fee + stripe_fee). |
transfer_amount | Amount transferred to your connected account (your margin). |
payment_intent_id | Stripe PaymentIntent id (pi_…) for the charge. |
connected_account_id | Your connected account id (acct_…). |
simulated | true for test-mode orders that didn’t hit Stripe. |
order_cost and below) are populated once the order is placed and the actual total is captured; before that they are null and state is secured.
{
"connect": {
"state": "captured",
"secured_amount": 6041,
"order_cost": 4800,
"customer_margin": 250,
"zinc_fee": 100,
"stripe_fee": 185,
"final_charge": 5335,
"transfer_amount": 250,
"payment_intent_id": "pi_3ExampleCharge",
"connected_account_id": "acct_1ExampleConnected",
"simulated": false
}
}
Error Responses
- 404 Not Found - Order ID does not exist or you don’t have access to it
- 401 Unauthorized - Invalid or missing authentication
Authorizations
Zinc API key (Bearer zn_...)
Headers
Path Parameters
Response
Successful Response
Response model for order data.
pending, in_progress, order_placed, order_failed, cancelled, cancelled_by_retailer Show child attributes
Show child attributes
Fulfillment result and price breakdown for a completed or failed order; null while processing.
Show child attributes
Show child attributes
The retailer's own order number(s) for this order (e.g. an Amazon 113-… ID), as recorded when it was placed. Empty while processing, or if the order never reached the retailer.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Stripe Connect charge details when this order was paid via Connect; null for prepaid-wallet orders.
Show child attributes
Show child attributes
End-customer email-notification status when the order opted into the notifications add-on; null when it didn't.
Show child attributes
Show child attributes

