Metrivo

Free browser-local utility

Payment report checker

Does your existing sales report agree with Stripe? Compare complete transaction exports by exact payment ID, amount, currency, status and refunds. Inspect the source evidence for each difference.

Free, no signup. Files and results stay in this browser tab. Comparison does not upload CSVs, call AI, save credentials or import payments into a workspace. Reset clears local state. With analytics consent, only coarse workflow milestones are recorded.
Supported CSV format and comparison definitions

Use transaction-level Stripe payment exports, with headers id (or Payment ID / Charge ID), Amount, Currency, Status, Amount Refunded, and Created (UTC) (or Created date (UTC)). Extra columns are ignored. Refund totals must be present, including zero. Balance transactions, dispute exports, payouts and aggregate revenue reports are unsupported.

Normalize your customer report to payment_id,amount,currency,status,refunded_amount,created_at,livemode. Each order must carry its actual Stripe transaction ID; internal order IDs and customer emails cannot establish a payment match. No customer information is required.

Choose exact charge IDs (ch_) or PaymentIntent IDs (pi_). For a Stripe charge export compared with PaymentIntent IDs, include its explicit payment_intent or Payment Intent ID relationship column. A matching amount or timestamp never substitutes for that relationship. Multiple charges mapped to one PaymentIntent remain ambiguous duplicates.

Amounts are decimal major currency units, converted exactly to currency-specific minor units; no rounding or currency conversion. Gross is captured amount for succeeded/refunded payments. Refunds are cumulative captured refunds per payment. Net is gross minus refunds, before fees, taxes, disputes or FX. Failed, pending and canceled payments contribute zero captured gross. Supported statuses: paid/succeeded, failed, pending/processing, canceled/cancelled, refunded and partially_refunded. Paid with a partial refund is normalized to partially_refunded.

Dates must include an ISO timezone; the named Stripe UTC columns also accept YYYY-MM-DD HH:mm:ss. Scope uses the original payment creation date in UTC, including the entire end date. Use exports from the same Stripe account, period and snapshot, including all pages and statuses. We cannot independently prove file completeness. Missing livemode uses your explicit environment declaration; present values must be true or false.

Maximum 5 MB and 10,000 transactions per file, over at most 366 days. Limits reject the whole comparison and never silently sample it. Delay tolerance marks recent absent payments or pending-status differences as unresolved pending; it does not hide different amounts, currencies or refunds. Re-export after the tolerance to resolve pending rows. Source totals retain duplicate rows.

1. Add both transaction-level exports
2. Declare the same complete scope

Both files cover every transaction in the selected UTC period and environment from the same Stripe account, at the declared snapshot. Include all pages and statuses, with cumulative refunds. The snapshot must follow the full end date. If livemode is absent, confirm the selected environment from the original export.

Add both CSVs and declare their complete scope to begin.

For ongoing traffic-to-payment attribution and evidence-backed revenue checks, start Metrivo’s 7-day trial. This local comparison remains free.