If you run a Shopify store, there's a good chance your revenue numbers are wrong — and not because of a reporting bug. The discrepancy is usually caused by what payment reconciliation professionals call ghost orders: transactions that Shopify recorded as successfully paid, but that your payment gateway never actually settled.
Most merchants never notice. Shopify's dashboard shows a clean "Paid" status. The gateway account shows a slightly different total. The difference gets attributed to fees, timing, or a vague sense that "the numbers are always a bit off." Over months, this gap can represent thousands of dollars in unrecovered revenue — and it's the most common form of a Shopify missing payout: an order Shopify counted as paid that never actually settled.
Why ghost orders happen
Shopify marks an order as "Paid" the moment the customer completes checkout — before the payment gateway has confirmed that the funds actually transferred. In most cases, the gateway confirms immediately and everything lines up. But several scenarios can break this flow:
- Gateway timeouts: The customer's bank authorises the charge, but a network timeout means the gateway never receives the confirmation. Shopify marks the order paid; the settlement never arrives.
- Webhook failures: Shopify notifies your gateway via webhook when an order completes. If that webhook fails silently, the payout is never triggered.
- Retry logic errors: Some gateways retry failed charges and record both the failure and the eventual success. Without reconciliation, you may count revenue that was charged twice but settled once — or vice versa.
- Partial refunds: A refund processes on one side (Shopify or the gateway) but not the other. The order still shows as paid in full on Shopify, while the gateway shows a different net amount.
- Chargeback settlements: Chargebacks reduce your gateway payout without updating the Shopify order status. The order stays "Paid" in Shopify; the money is gone from your bank.
How to detect ghost orders manually
The manual process requires exporting data from both Shopify and your gateway, then matching every order to its corresponding payout. Here's how to do it:
The problem with manual reconciliation
For a store processing 200 orders per month, this manual process takes 3–5 hours. For 1,000 orders, it's a part-time job. And it needs to be done every month — because ghost orders don't stop accumulating.
The other issue is precision. Spreadsheet formulas use floating-point arithmetic, which introduces rounding errors when comparing currency amounts. A $0.01 discrepancy looks like a rounding error; it may actually be a systematic fee miscalculation applied to hundreds of orders.
Proper reconciliation requires cent-safe integer arithmetic — comparing amounts in the smallest currency unit (cents, pence, paisa) rather than decimals. Most manual spreadsheet approaches don't do this, which means small discrepancies get dismissed rather than investigated.
What to do when you find ghost orders
Once you've identified orders that settled in Shopify but not in your gateway, you have a few options:
- Contact your payment gateway with the order reference number and request they investigate the missing settlement.
- Check if the payment was captured vs. only authorised — some gateways require a separate capture step that may have been missed.
- If the order is recent (under 90 days), you can request a manual re-settlement from most major gateways.
- For older orders, document the discrepancy for your accountant — it may be deductible as a business loss or adjustable against future tax liability.
How often should you reconcile?
Monthly is the minimum for most merchants. If you're processing more than 500 orders per month or using multiple gateways simultaneously, weekly reconciliation is worth the investment — discrepancies are easier to investigate when they're fresh, and the compounding effect of undetected ghost orders grows quickly at higher volumes.
The right answer for most growing Shopify stores is automated reconciliation: a system that continuously cross-references Shopify orders against gateway payouts and surfaces exceptions immediately, rather than letting them accumulate for a monthly review.
Fincile automates everything above
Connect your Shopify store via OAuth, select your gateway, and run your first audit in under 5 minutes. Stripe, PayPal, and Shopify Payments sync live via API. Results in minutes, not hours.
No credit card required · Read-only access · Results in minutes