Shopify — data contract (compatible with Shopify’s documented schema; not affiliated with Shopify)
Shopify orders CSV export — core columns from the Store admin Orders export. Compatible with Shopify's documented orders CSV; not affiliated with Shopify. Values are CSV strings; money columns are validated as decimal strings.
Validate a client's Shopify export at ingest into your warehouse, or with POST /egress before sending the same shape to a partner, reverse ETL, or an AI agent.
Also available: ODCS v3.1.0 YAML. “Use this contract” forks it into your org, then opens the validation playground so you can upload the client file.
Fields
| Name | Type | Required | Rule | Description |
|---|---|---|---|---|
| Name | string | required | pattern /^#?[A-Za-z_-]{0,20}[0-9]{1,12}[A-Za-z0-9_-]{0,20}$/ | Order name as shown in the admin. The default is #1001; stores often add a prefix or suffix, for example SH1001 or 1001-A. |
| string | optional | email format | — | |
| Financial Status | string | optional | one of: pending, authorized, paid, partially_paid, refunded, voided, partially_refunded, expired | Admin payment status (the values behind displayFinancialStatus). expired is included. unpaid is not a status — Shopify uses it as a filter grouping of authorized, pending, expired, and partially paid orders. The legacy REST financial_status field still omits expired and reports those orders as pending. |
| Fulfillment Status | string | optional | one of: fulfilled, unfulfilled, partial, restocked | — |
| Currency | string | required | pattern /^[A-Z]{3}$/ | — |
| Subtotal | string | optional | pattern /^-?[0-9]+(\.[0-9]{1,2})?$/ | — |
| Shipping | string | optional | pattern /^-?[0-9]+(\.[0-9]{1,2})?$/ | — |
| Taxes | string | optional | pattern /^-?[0-9]+(\.[0-9]{1,2})?$/ | — |
| Total | string | required | pattern /^-?[0-9]+(\.[0-9]{1,2})?$/ | Order total in the order currency. |
| Created at | string | optional | — | — |
Sample rows
Three synthetic rows we wrote. They validate against this contract with zero violations. No real customer data.
[
{
"Created at": "2026-01-15 09:30:00 -0500",
"Currency": "USD",
"Email": "shopper@example.com",
"Financial Status": "paid",
"Fulfillment Status": "fulfilled",
"Name": "#1001",
"Shipping": "5.00",
"Subtotal": "42.00",
"Taxes": "3.36",
"Total": "50.36"
},
{
"Created at": "2026-01-16 14:05:00 -0500",
"Currency": "USD",
"Email": "buyer@example.org",
"Financial Status": "pending",
"Fulfillment Status": "unfulfilled",
"Name": "#1002",
"Shipping": "0.00",
"Subtotal": "19.99",
"Taxes": "1.60",
"Total": "21.59"
},
{
"Created at": "2026-01-17 11:45:00 -0500",
"Currency": "CAD",
"Email": "returns@example.com",
"Financial Status": "refunded",
"Fulfillment Status": "restocked",
"Name": "SH1003",
"Shipping": "12.50",
"Subtotal": "120.00",
"Taxes": "17.16",
"Total": "149.66"
}
]Provenance
- Verified against
- https://help.shopify.com/en/manual/orders/export-orders
- Checked
- 2026-11-06
- Version
- v1.0
- Author
- DataContractGate
- License
- MIT
Spotted a mismatch with the vendor’s current schema? Report an issue.
Stripe, Shopify, QuickBooks, Xero, HubSpot, Salesforce, Google Analytics and Square are trademarks of their respective owners. DataContractGate is not affiliated with or endorsed by them. These contracts describe data shaped like these vendors’ documented schemas; they are not official and are not certified by any vendor.