At a glance
Order distribution by displayFinancialStatus. The payment-state health view: how many orders are paid vs pending vs voided vs partially-refunded vs refunded?
| What it counts | GROUP BY displayFinancialStatus. Each order contributes one to its status bucket. Statuses include PAID, PENDING, AUTHORIZED, PARTIALLY_PAID, PARTIALLY_REFUNDED, REFUNDED, VOIDED, EXPIRED. |
| API endpoint | Admin GraphQL. Order.displayFinancialStatus. |
| State semantics | PAID = capture complete; PENDING = awaiting authorisation or capture; AUTHORIZED = card auth held but not captured; PARTIALLY_PAID = partial capture (rare, layby-style); PARTIALLY_REFUNDED = goods kept, partial money returned; REFUNDED = full money back; VOIDED = auth voided pre-capture; EXPIRED = auth window ran out without capture. |
| VAT / tax treatment | Not applicable (count distribution). |
| Shipping | Not applicable. |
| Discounts | Not applicable. |
| Refunds | A REFUNDED order is a count in the refunded bucket; cross-reference Refund Rate for the share. |
| Cancelled / voided orders | VOIDED is its own bucket here. |
| Currency | Multi-currency safe (count distribution). |
| Channels / sources | Online + POS + B2B all contribute. POS orders are typically PAID at the till; pending statuses are rare for POS. |
| B2B “Net 30 / Net 60” | B2B Plus stores can have orders in PENDING for extended periods (waiting for invoice payment). These dominate the PENDING bucket on B2B-heavy stores; that is structural, not a problem. |
| Time window | 30D (single window) |
| Alert trigger | None on this card directly; pair with cancellation alerts and refund alerts. |
| Roles | owner, operations |
Calculation
Worked example
A US multi-channel home goods brand with B2B catalogue on Shopify Plus. Period: 12 Apr 26 to 11 May 26.displayFinancialStatus | Order count | Share | Note |
|---|---|---|---|
PAID | 5,948 | 87.0% | Captured, healthy |
PARTIALLY_REFUNDED | 312 | 4.6% | Goods kept, partial money returned |
REFUNDED | 218 | 3.2% | Full money back |
PENDING | 218 | 3.2% | B2B Net 30 invoices outstanding |
VOIDED | 78 | 1.1% | Cancellations (pre-capture) |
AUTHORIZED | 42 | 0.6% | Auth held, capture not yet triggered |
EXPIRED | 18 | 0.3% | Auth windows ran out |
PARTIALLY_PAID | 6 | 0.1% | Layby / split-payment (rare) |
| Total | 6,840 | 100% |
- PAID at 87% is healthy for a mixed B2B / DTC store. Pure DTC typically runs 92 to 96% PAID; B2B drags the rate because of Net 30 / Net 60 invoicing. The 3.2% PENDING is almost entirely B2B; check by tag-filter on the orders.
- PARTIALLY_REFUNDED at 4.6% is the silent-margin-leak. Customers who returned 1 of 3 items, or got a 20% post-purchase goodwill credit, sit here. Each is a small loss but they aggregate. Pair with Top Refunded Products to see which SKUs drive partial returns.
- AUTHORIZED at 0.6% needs follow-up. 42 orders held in auth but never captured. Some are intentional (manual capture workflow); some are stuck. Capture windows on most card networks are 7 days; orders sitting in AUTHORIZED for >5 days are at risk of EXPIRED. Set up a daily review of orders aged >3 days in AUTHORIZED.
- EXPIRED at 0.3% is genuine lost revenue. 18 orders where the customer’s card auth expired before capture. Fix the workflow that’s letting orders sit too long. Most often a manual-fulfilment delay coupled with manual-capture toggle on; switch to auto-capture or set a 48h SLA on capture.
- VOIDED at 1.1% should match Cancellation Rate loosely. Voided is the financial-status counterpart to cancelled-status. The two should track within 0.5 ppt.
Sibling cards merchants should reference together
Financial status is a payment-state diagnostic. Pair with these:| Card | Why pair it with Financial Status | What the combination tells you |
|---|---|---|
| Cancellation Rate | The cancelled-status counterpart. | VOIDED bucket here ≈ cancelled count. Cross-check for consistency. |
| Refund Rate | The refund counterpart. | REFUNDED + PARTIALLY_REFUNDED here ≈ refund count. |
| Order Count | Total denominator. | Status shares × total orders = absolute counts per status. |
| Payment Methods | Method × status cross-tab. | PENDING heavy on bank-transfer methods; AUTHORIZED on saved-card flows. |
| Gateway Revenue | Money flow per gateway. | A gateway with high PENDING share has slow capture; check capture latency. |
stripe.failed_charges | Stripe-side payment failures. | Stripe failures correlate with EXPIRED + VOIDED on Stripe-paid orders. |
paypal.paypal_pending_payments | PayPal-side pending. | PayPal e-checks and bank transfers can sit pending for days; check the PayPal-share of PENDING bucket. |
Reconciling against the vendor’s own dashboard
Where to look in Shopify Admin: Orders → filter by Payment status (each value matches adisplayFinancialStatus). Counts per filter should align with this card.
Other Shopify Admin views:
- Reports → Sales by financial status: a £-revenue split by status; useful for understanding £ at risk in pending / authorised.
- Settings → Payments: configures capture and authorisation settings; doesn’t show counts but explains why certain statuses are common (manual capture vs auto-capture).
- Apps like Eva.guru, Stripe dashboard direct: gateway-level views; finer-grained payment state.
| Reason | Direction | Why |
|---|---|---|
| Time zone | Boundary days | Standard time-zone gap. |
| Status timing | Either | A PENDING order in your window may flip to PAID after webhook; the next index update reflects the change. Snapshot timing matters. |
| Test orders | Ours slightly higher | We do not yet filter Order.test = true. |
| Sync lag | Ours lower for “today” | 5 to 15 minute index lag. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
stripe.failed_charges | Stripe failed-capture events correlate with EXPIRED + VOIDED orders | Some failures are recovered (retried successfully); not all surface here. |
paypal.paypal_pending_payments | PayPal pending count ≈ PayPal-paid orders in PENDING here | PayPal e-checks can sit pending for 5 to 7 days; expected. |
Known limitations / merchant FAQs
Why is my PENDING share so high? Three usual causes:- B2B Net 30 / Net 60 invoices. Outstanding for days or weeks; structural for B2B.
- Bank-transfer / e-check payments. PayPal e-checks, Klarna pay-later flows, ACH transfers. 1 to 7 day clearing time; expected.
- Manual capture toggle. Some merchants run manual capture (capture only on fulfilment). Orders sit AUTHORIZED until you click capture; that bucket flows through PENDING in some configurations.
- Pull the EXPIRED orders. Check creation-to-expiry lag; usually it’s the days-to-capture metric.
- Audit fulfilment workflow. If orders sat unfulfilled for >5 days, capture expired.
- Switch to auto-capture for routine orders if you’re on manual.
- For B2B / large orders that need manual review, set a 48h SLA on capture decisions.
- Customer-service follow-up: contact EXPIRED customers; offer to recreate the order. Recovery rate is typically 30 to 50% if reached within a week.