Home/Blog/Stripe + Shopify Reconciliation
    Payment Reconciliation

    Shopify + Stripe Reconciliation: Why Your Payouts Don't Match Your Orders

    By Krishna Mandala·July 2026·7 min read

    Stripe is the most popular payment gateway for Shopify merchants — and also the source of the most reconciliation confusion. If you've ever exported your Shopify orders and your Stripe payouts and tried to match them manually, you know the problem: the numbers almost never line up cleanly.

    This isn't a Stripe bug or a Shopify bug. It's a structural gap between how the two platforms record transactions. Understanding it is the first step to fixing it.

    How Shopify and Stripe record transactions differently

    Shopify records a transaction at the order level — one line per order, with the total amount the customer paid. Stripe records transactions at the charge level — including authorizations, captures, refunds, disputes, and fees as separate line items.

    A single Shopify order can generate up to six separate Stripe records: an authorization, a capture, a Stripe processing fee, a payout batch entry, possibly a refund, and possibly a dispute record. Reconciliation means mapping all of these back to one Shopify order — correctly.

    The 6 most common Stripe-Shopify mismatch causes

    1
    Stripe processing fees are deducted from the payout, not shown in Shopify
    Stripe charges 2.9% + $0.30 per transaction (or your negotiated rate). These fees are deducted before your payout lands in your bank. Shopify shows the gross amount the customer paid. If you're comparing Shopify totals to Stripe payouts, you'll always see a gap equal to your Stripe fees — this is expected, but still needs to be accounted for in your books.
    2
    Stripe batches payouts across multiple days
    Stripe's default payout schedule is a 2-day rolling basis. Orders from Monday and Tuesday may arrive in a single Wednesday payout. Shopify reports sales by the date of the order; Stripe reports by the date of settlement. Matching on date ranges without accounting for this delay causes apparent mismatches that are actually just timing differences.
    3
    Refunds create separate Stripe records not linked to the original charge ID in Shopify
    When you issue a refund in Shopify, Stripe creates a new refund record with its own ID. The original charge record remains in Stripe as a separate entry. Without reconciliation, you may count both the original charge and the refund as revenue, overstating your income.
    4
    Chargebacks deduct from future payouts silently
    When a customer disputes a charge, Stripe deducts the disputed amount plus a $15 dispute fee from your next payout. This doesn't update the Shopify order status — the order still shows "Paid." Without reconciliation, chargebacks are invisible in your Shopify revenue view.
    5
    Partial captures and authorization holds
    Some orders — particularly for pre-orders, subscriptions, or high-risk items — are authorized but not immediately captured. If the capture fails or is never completed, Stripe records no charge, but Shopify may still show the order as "Authorized." These represent revenue Shopify expected but Stripe never collected.
    6
    Currency conversion creates systematic rounding differences
    If your Shopify store accepts multiple currencies but your Stripe account settles in a single currency, every cross-currency transaction involves a conversion. Stripe applies its own exchange rate; Shopify reports in the customer's currency. The resulting rounding differences accumulate at scale and appear as unexplained gaps in your reconciliation.

    How to reconcile Shopify orders with Stripe payouts manually

    The correct approach matches on Stripe charge ID, not on order amount or date. Here's the process:

    • Export Shopify orders as CSV (include the "Payment reference" column — this is the Stripe charge ID)
    • Export Stripe payments as CSV from the Stripe Dashboard → Payments → Export
    • Join the two datasets on the Stripe charge ID (VLOOKUP in Excel, or MATCH in Google Sheets)
    • For matched rows, compare: Shopify order total vs. Stripe charge amount (gross, before fees)
    • Separately, export Stripe fee data and subtract to get net amounts
    • Flag any Shopify orders with no matching Stripe charge ID — these are potential ghost orders
    • Export Stripe refunds and disputes separately and reconcile against Shopify refund records

    How long does Shopify-Stripe reconciliation take?

    For a store processing 100 orders per month: 1–2 hours. For 500 orders: half a day. For 2,000+ orders: you need a dedicated process or automated tooling. The manual approach also doesn't scale — every new transaction type (refunds, disputes, multi-currency) adds another layer of joins and transformations to your spreadsheet.

    More critically, manual reconciliation happens monthly at best. By the time you catch a discrepancy, the trail for investigating it (Stripe logs, customer emails, gateway records) may be weeks old and harder to trace.

    What to do when you find a Stripe-Shopify discrepancy

    • If a Shopify order has no Stripe charge ID: the payment may have failed at authorization. Check the Stripe dashboard for a declined charge on the same date and amount.
    • If the amounts differ by your Stripe fee rate: this is expected — account for fees separately in your books, don't treat it as a discrepancy.
    • If a charge appears in Stripe with no matching Shopify order: this may be a duplicate charge. Contact Stripe support with both charge IDs.
    • If a refund appears in Stripe but not in Shopify: the refund may have been issued directly from the Stripe dashboard. Check your Shopify order timeline and update it manually if needed.
    Automate this entirely

    Fincile does this in minutes, not hours

    Connect Shopify + Stripe via OAuth. Fincile pulls every order, every charge, every refund and dispute, and cross-references them automatically using cent-safe arithmetic. Discrepancies surface immediately with the exact order ID and variance amount.

    No credit card required · Read-only Stripe access · Results in minutes