How to Reconcile WooCommerce Orders with Stripe and PayPal
It's the end of the month. WooCommerce says you did $12,450 in revenue. Stripe says $12,187. PayPal says $1,820. That's $13,007 from gateways versus $12,450 from WooCommerce. Where's the $557 difference?
Welcome to payment reconciliation — the least exciting but most important financial task for any WooCommerce store. The numbers will never match perfectly, and that's expected. The goal is to understand WHY they don't match and verify that every dollar is accounted for.
Why the Numbers Don't Match
There are legitimate reasons why WooCommerce's revenue number and your payment gateway's processed amount will differ:
1. Refund timing. WooCommerce records a refund when you initiate it. Stripe processes the refund 5–10 business days later. If you refund an order on the 30th of the month, WooCommerce counts it in this month's numbers but Stripe processes it next month.
2. Failed/abandoned payments. A customer initiates checkout, Stripe creates a payment intent, but the charge fails (insufficient funds, card declined). WooCommerce may record the order as "failed" or "pending" while Stripe records an attempted charge. These show up differently in each system.
3. Currency conversion. If a customer pays in EUR and your store currency is USD, WooCommerce records the USD equivalent at the time of order. Stripe may convert at a slightly different rate. The difference per order is small but compounds across many international orders.
4. Disputes and chargebacks. When a customer disputes a charge, Stripe immediately debits the disputed amount from your balance. WooCommerce doesn't automatically update the order status. The revenue shows in WooCommerce but the money isn't in your Stripe balance.
5. Fees don't reduce WooCommerce revenue. WooCommerce shows gross revenue. Stripe payouts are net of fees. This is the single largest "discrepancy" and it's not a discrepancy at all — it's just different reporting.
Step-by-Step Reconciliation Process
Step 1: Export Your Data
From WooCommerce:
- Go to WooCommerce → Orders
- Filter by date range (the month you're reconciling)
- Export to CSV (all orders including refunded and failed)
- Note the total revenue, total refunds, and order count
From Stripe:
- Log into Stripe Dashboard
- Go to Payments → All Transactions
- Filter by the same date range
- Export to CSV
- Note total charges, total refunds, total fees, and net amount
From PayPal (if applicable):
- Log into PayPal Business
- Go to Activity → All Transactions
- Download the monthly statement or export transactions
- Note the same figures as Stripe
Step 2: Normalize the Data
Before comparing, make sure you're comparing apples to apples:
- Remove taxes from WooCommerce totals if Stripe/PayPal don't include tax in their charge amounts
- Separate refunds into their own column (don't net them against revenue yet)
- Identify the gateway for each WooCommerce order (Stripe vs PayPal vs other)
- Convert currencies to a single base currency if you accept multiple currencies
Step 3: Match Orders to Transactions
Each WooCommerce order should have a corresponding transaction in your payment gateway. The matching key is typically:
For Stripe: The Stripe Charge ID (stored as _stripe_charge_id in WooCommerce order meta)
For PayPal: The PayPal Transaction ID (stored as _paypal_transaction_id or similar)
Match every WooCommerce order to a gateway transaction. Flag any orders that don't have a matching transaction (possible payment failures that were marked as completed) and any gateway transactions that don't have a matching WooCommerce order (possible webhook failures).
Step 4: Reconcile Refunds
Refunds are the most common source of discrepancies. Check:
- Every WooCommerce refund has a corresponding gateway refund
- The refund amounts match (partial refunds are common)
- The refund dates are in the same reporting period (they often aren't)
For Stripe specifically, check whether any refunds were initiated directly in the Stripe dashboard (bypassing WooCommerce). These will show as gateway refunds without corresponding WooCommerce refunds — they're easy to miss and cause confusion.
Step 5: Account for Fees and Calculate Net
Once gross amounts are reconciled, calculate the net:
WooCommerce gross revenue
- Refunds initiated in this period
- Payment processing fees (from gateway data)
= Net revenue
Compare this net revenue to the total payouts received in your bank account from Stripe and PayPal during the same period. Note that payouts lag transactions by 2–7 days, so month-end payouts may not land until early the following month.
For more on tracking those processing fees inside WooCommerce, check our cash flow management guide and payment gateway fee comparison.
Common Discrepancies and What They Mean
Small amounts ($0.01–$1.00) per order: Usually currency rounding or conversion differences. Normal and not worth investigating individually. Track the aggregate to ensure it doesn't grow over time.
Exact order amounts missing from gateway: The payment likely failed after WooCommerce created the order. Check the order status — it should be "failed" or "pending," not "completed." If it's marked "completed" without a successful charge, that's a fulfillment error.
Gateway transactions without WooCommerce orders: Webhook failure. The payment went through but WooCommerce didn't receive the confirmation. Check your webhook logs in Stripe (Developers → Webhooks → Recent Events) for failed deliveries. The customer was charged but their order may not have been processed.
Large discrepancies ($100+): Usually disputed charges, manual refunds processed directly in the gateway dashboard, or test transactions. Investigate each one individually.
Automating Reconciliation
Manual reconciliation works for stores processing under 200 orders/month. Beyond that, consider automation:
Accounting software integration: QuickBooks and Xero integrations can automatically reconcile payment gateway transactions with WooCommerce orders, flagging discrepancies for review.
Stripe's built-in reconciliation: Stripe Sigma (available on Scale plan or $0.02/row for ad-hoc queries) lets you run SQL queries against your Stripe data. You can build custom reconciliation reports that compare charges to your WooCommerce order data via API.
Custom reconciliation scripts: For technically-inclined store owners, a script that pulls data from both WooCommerce REST API and Stripe API, matches transactions, and generates a discrepancy report can be built in a few hours and saves days of manual work per year.
How Often Should You Reconcile?
Weekly: Quick check — compare WooCommerce order count to Stripe/PayPal transaction count. If they match within 1–2, you're fine. If they're off by more, investigate immediately.
Monthly: Full reconciliation. Match all transactions, verify refunds, check for disputes, calculate net revenue vs payouts received. This is the minimum for any store doing $5,000+/month.
Quarterly: Deep reconciliation including fee analysis, payout verification against bank statements, and review of any recurring discrepancy patterns.
The Bottom Line
Payment reconciliation isn't glamorous, but it's essential. The stores that do it catch webhook failures, dispute fraud, and accounting errors before they compound. The stores that don't reconcile discover problems when their accountant asks why the books don't balance — or worse, when a customer complains they were charged but never received their order.
Start with a simple monthly comparison: WooCommerce gross revenue vs gateway gross charges. Match the numbers within 1–3%. Investigate anything larger. As your store grows, add automation to handle the volume. The goal isn't perfection — it's confidence that every dollar is accounted for.
Keep reading
Related guides you might find useful
How to Track Stripe Fees in WooCommerce (And Why You Should)
Stripe takes 2.9% + $0.30 per transaction. Here's how to track those fees inside WooCommerce so you can see real profit, not just revenue.
Read guideProfit TrackingWooCommerce Payment Gateway Fees Compared: Stripe vs PayPal vs Square (2026)
Every payment gateway eats into your margins. Here's a detailed fee comparison for WooCommerce stores — including the hidden costs nobody tells you about.
Read guideProfit TrackingWooCommerce Cash Flow Management: See Where Your Money Actually Goes
Revenue comes in, fees go out, refunds happen. Here's how to get a clear cash flow picture for your WooCommerce store without a spreadsheet.
Read guideLevel up your WooCommerce store
Join the WPBundle waitlist and get beta access to our plugin suite completely free.
Join the Waitlist