Order Statuses Compared: Shopify vs WooCommerce vs BigCommerce
Three different models
| WooCommerce | Shopify | BigCommerce | |
|---|---|---|---|
| Statuses per order | 1 | 2 (payment + fulfillment) | 1 |
| Number of values | 8 | 8 financial, 10 fulfillment | 15 (IDs 0–14) |
| Paid, not yet shipped | Processing | Paid + Unfulfilled | Awaiting Fulfillment |
| Offline/delayed payment | On hold | Pending | Awaiting Payment |
| Shipped | Completed (set manually) | Paid + Fulfilled | Shipped |
| Checkout abandoned | Draft / Pending payment | — | Incomplete / Pending |
WooCommerce: one status, and stock moves with it
WooCommerce's eight statuses do double duty as inventory triggers.
| Status | WooCommerce's definition (abridged) |
|---|---|
| Draft | "temporary checkout records used by the block-based checkout before an order is submitted" |
| Pending payment | "The order has been received, but no payment has been made." |
| Processing | "Payment has been received (paid), and the stock has been reduced. The order is awaiting fulfillment." |
| On hold | "The order is awaiting payment confirmation. Stock is reduced, but you need to confirm payment." |
| Completed | "The order has been fulfilled and is complete. Requires no further action." |
| Failed | "The customer’s payment failed or was declined, and no payment has been successfully made." |
| Cancelled | "The order was canceled by an admin or the customer." |
| Refunded | "An admin or shop manager has fully refunded the order’s value after payment." |
Processing is the one that needs a person. It is "the store owner’s or warehouse’s cue to ship the order and manually change the status to Completed." Nothing moves an order to Completed automatically except that "All orders require processing except those in which all products are both virtual and downloadable."
Stock is tied to status in both directions. Processing and On hold reduce it. When an order moves to Failed, "WooCommerce returns it to inventory," and on Cancelled "stock for line items on the order is returned to the store’s inventory if inventory management is enabled." With the Hold Stock setting on, WooCommerce "automatically cancels eligible Pending payment orders created through checkout after the configured time limit."
One warning from WooCommerce itself: with the Manual Refund option, "the order can reach this status without the customer’s funds having been returned." Refunded is a record, not proof of a refund.
Shopify: payment and fulfillment are separate
Shopify's API exposes two display statuses on every order.
Financial status — eight values: Authorized, Expired, Paid, Partially paid, Partially refunded, Pending, Refunded and Voided. Two are specific to manual capture. Authorized "appears only for manual payment capture and indicates payments should be captured before the authorization period expires." Expired means "Payment wasn't captured before the payment provider's deadline on an authorized order."
Fulfillment status — Unfulfilled, Partially fulfilled, Fulfilled, In progress, On hold, Scheduled, Request declined and three older values that Shopify has since replaced (Open, Pending fulfillment and Restocked).
Keeping them apart means Shopify never has to encode combinations like "paid but on hold" or "partially refunded and partially shipped" as statuses of their own. Shopify is explicit that they are independent: a Voided payment "is the payment's financial status and is distinct from the order's status: an order can remain open even when its payment is voided."
BigCommerce: fifteen numbered statuses
BigCommerce's API returns a fixed list of statuses with numeric IDs:
| ID | Status | BigCommerce's description |
|---|---|---|
| 0 | Incomplete | "a shopper reached the payment page, but did not complete the transaction" |
| 1 | Pending | "Customer started the checkout process, but did not complete it." |
| 2 | Shipped | "Order has been shipped, but receipt has not been confirmed" |
| 3 | Partially Shipped | "Only some items in the order have been shipped" |
| 4 | Refunded | "Seller has used the Refund action." |
| 5 | Cancelled | "Seller has cancelled an order, due to a stock inconsistency or other reasons." |
| 6 | Declined | "Seller has marked the order as declined for lack of manual payment, or other reasons." |
| 7 | Awaiting Payment | "Customer has completed checkout process, but payment has yet to be confirmed." |
| 8 | Awaiting Pickup | "Order has been pulled, and is awaiting customer pickup from a seller-specified location." |
| 9 | Awaiting Shipment | "Order has been pulled and packaged, and is awaiting collection from a shipping provider." |
| 10 | Completed | "Client has paid for their digital product and their file(s) are available for download." |
| 11 | Awaiting Fulfillment | "Customer has completed the checkout process and payment has been confirmed." |
| 12 | Manual Verification Required | "Order is on hold while some aspect needs to be manually confirmed." |
| 13 | Disputed | "Customer has initiated a dispute resolution process for the PayPal transaction that paid for the order." |
| 14 | Partially Refunded | "Seller has partially refunded the order." |
Two things stand out. Completed means digital: status 10 is defined as a paid digital product with files ready to download, not "a finished order" in general — a physical order's last status is Shipped. And BigCommerce splits warehouse work more finely than the others: Awaiting Fulfillment (paid), Awaiting Shipment (packed, waiting for the carrier) and Awaiting Pickup are three separate statuses.
Which model to copy
- If payment and delivery can happen in any order, use two statuses. Shopify's split avoids an explosion of combined states. A single status list works when the sequence is fixed.
- Tie inventory to status explicitly. WooCommerce documents exactly which statuses reduce and restore stock. That is the question your first real merchant will ask.
- Use numeric IDs with care. BigCommerce's IDs are stable, but the order isn't the lifecycle — 11 (Awaiting Fulfillment) comes before 2 (Shipped). Never sort orders by status ID.
Method and limits
WooCommerce statuses are from its order-status documentation; Shopify's from its Admin GraphQL API reference (the OrderDisplayFinancialStatus and OrderDisplayFulfillmentStatus enums), since its help centre blocks automated reading; BigCommerce's from its order-status API reference. All read on 2026-09-24. Store owners can relabel statuses in some of these platforms. We have no affiliation with any of the three.
Sources
- WooCommerce — Order statuses
- Shopify — OrderDisplayFinancialStatus
- Shopify — OrderDisplayFulfillmentStatus
- BigCommerce — Order status API
Researched by SaaSReadyit, which writes AI-generated validation reports for software ideas. Related: Invoice statuses compared · Subscription statuses compared.