Revenue reporting · Marketing leaders, founders and agencies
How to Reconcile Revenue Across Multiple Payment Providers
To report revenue across multiple payment providers, align each provider’s payment and refund records to the same website, dates, currency and amount definition before combining compatible totals. Keep bank payouts separate from payment revenue. Check import coverage and possible duplicate business orders, then use the reconciled records to review marketing credit.

1. Define Which Revenue Question You Are Answering
Choose whether you are reviewing customer payments, money arriving in the bank, or marketing credit. Those are related records, but they are not interchangeable. A payment can happen this week, be refunded later, and settle to the bank in another batch after fees. Adding the payment and its payout counts the same money twice.
For this workflow, the starting measure is completed payment value less the included refunds. Record the website or store, period, timezone, currency, tax treatment and export time beside it. Keep a separate provider-to-bank reconciliation for settlement, fees, disputes, reserves and other adjustments.
Stripe’s payout reconciliation documentation shows why a bank deposit needs its own review: an automatic payout settles a batch of transactions, with itemized payment, refund, fee and other balance entries. Its payout reconciliation report is intended for automatic payouts; Stripe directs manual-payout users to the balance report. A website’s net-revenue chart is not a substitute for either process.
| Record beside every figure | Why it matters |
|---|---|
| Website, store and provider account | An organization can have several stores or payment accounts. |
| Payment and refund date basis | Order creation, paid time, refund update and payout arrival can differ. |
| Currency and amount definition | Before-tax value, customer total and converted settlement are different amounts. |
| History and export time | A recent import can be bounded or reflect a later refund state. |
| Reference and business-order evidence | A retry, a migration and an additional genuine purchase need different treatment. |
Start with a short, closed period you can inspect. Keep the original exports. An unavailable report is a coverage gap, not a measured zero. If a provider connection failed halfway through an import, a smaller total does not establish that the business made fewer sales.
2. Inventory Each Provider and Its Available History
In Attriboo, choose the website, open Setup and expand Connect your payment provider. You can connect more than one supported provider to the same website. An owner or admin should follow the account’s actual connection instructions and check the result in that workspace; the public example’s connected state does not authorize or verify your account.
Where to find itDashboard → Setup → Connect your payment provider
The overview preserves the selected website, Setup tabs and complete expanded connection step. The provider buttons from that same capture are enlarged below.
Select the overview to open the full screenshot.
Enlarged detail of the outlined area
- Inspect the Stripe connection
Open Stripe to inspect the saved account and connection instructions in your own workspace. A checked example button does not verify your account.
- Check Polar independently
Review each connected provider’s account and history. The presence of two check marks does not establish that both imports cover the same dates or amount basis.
Make a coverage inventory before comparing totals. The current connections do not all start at the same date, and a successful connection is not proof of unlimited backfill. Use the provider guide for the exact supported checkout route and check the recent import result.
| Connection | Current history to check |
|---|---|
| Stripe | Last 90 days of supported Checkout Sessions and paid Billing invoices; bounded imports, then new supported payments and refunds. |
| Polar | Last 90 days of orders through a bounded import, then new order and refund updates. |
| Lemon Squeezy | Last 90 days of orders and supported renewal invoices through bounded imports, then new updates. |
| PayPal | Last 90 days when Transaction search is enabled, then new supported payments and refunds. |
| Paddle | Last 90 days, then new supported payments, renewals and refunds. |
| Shopify | New order and refund notifications after connection; past orders are not imported. |
| WooCommerce | New paid orders and refunds through the WordPress plugin; past orders are not imported. |
Stripe’s import checks up to 1,000 Checkout Sessions and 1,000 paid invoices per run. It does not import historical refunds, and standalone PaymentIntents outside Checkout or Billing are not covered. Polar’s current import is bounded to 1,000 orders; Lemon Squeezy’s is bounded to 1,000 orders and 1,000 renewal invoices. Treat those as limits to verify, not a promise that every account’s last 90 days is complete.
If you switched billing services, write down the migration date and which provider still handles existing subscriptions or late refunds. A new provider’s connection does not automatically replace the old provider’s history. Keep the operational handoff explicit instead of treating a change in provider as a marketing result.
3. Check One Payment and Refund From Each Provider
Compare a small set of known records before relying on the aggregate. Use authorized exports or a provider-supported test environment where appropriate; there is no need to charge a real customer just to follow this guide. Keep keys, customer emails and other private information out of public screenshots and this worksheet.
- Locate a completed payment and confirm its provider, account, reference, currency, amount and relevant date.
- Compare the same record in Attriboo’s recorded payments. Check that it belongs to the intended website.
- Locate an existing refund and inspect whether the connector represents it as an individual event or an updated cumulative refund row.
- Compare included taxes and refund treatment before choosing the amount you will use in a cross-provider review.
- Retain the export time and any unresolved exception. Do not change the source ledger just to force two totals to agree.
Amount definitions can differ even when both rows say USD. Attriboo’s Polar and Lemon Squeezy connectors record before-tax order amounts. Stripe’s supported payment paths use the paid Checkout or invoice amounts. Check how tax is included in those provider records before treating their combined value as a reconciled before-tax total.
Lemon Squeezy’s order reference documents separate total, tax, currency and refunded amounts. Polar’s order response likewise distinguishes net, tax, total and refunded amounts. Use the actual fields and the connector’s treatment rather than choosing whichever provider dashboard number is easiest to copy.
Refund history deserves a separate check. Some Attriboo connectors maintain a cumulative refund row for an order or charge, so a later partial refund can update an existing amount. An import may also expose the latest refund state rather than every historical refund event. Keep an as-of export for a period close and investigate changed historical totals; do not assume every connector supplies an immutable event-by-event refund ledger.
Keep original currencies separate. Attriboo does not automatically normalize mixed payment currencies into a reconciled reporting currency. A website currency label is not evidence that foreign-currency records were converted. Review currency fields in the underlying payment records before reading a combined dashboard amount, and use a separate finance workflow if you need a documented exchange-rate conversion.
4. Review Migrations and Possible Duplicate Business Orders
Distinguish repeated delivery of one provider event from the same business order appearing through two systems. A webhook retry should not become a second sale. A storefront order and its processor payment can also describe one purchase, but their different references do not prove that automatically.
Attriboo stores a transaction using its website, provider and external reference. Re-delivery of that same supported record can update the existing transaction. That protection does not automatically merge a Shopify order with a Stripe payment, or a sale copied into a different provider during migration. Cross-provider business-order overlap needs its own review.
For example, if an order is represented by both a store connector and a processor connector, compare the business-order reference and payment evidence before adding the amounts. Two equal payments on the same date might still be genuine separate purchases. Equal amounts alone are not a safe deduplication rule.
Keep the provider and account beside every reference. A customer moving from Stripe to Polar can receive a new customer or subscription ID. That does not establish a newly acquired customer or a new marketing touch. Reconcile the migration against the business records and distinguish initial charges, renewals, prorations and refunds.
When you find overlap, record which system is authoritative for the affected order and how the exception will be resolved. Do not issue a customer refund, delete a genuine payment or disconnect a working integration just to make an analytics percentage look cleaner.
5. Review Website Revenue Before Comparing Source Credit
Once you understand the compatible payment scope, open Dashboard and confirm the website, dates, timezone and Credit setting. Under the summary cards, open Payment Match to inspect linked and unlinked payments and the connected provider statuses. A payment can count in recorded revenue without a matching visit; that gap matters when you discuss marketing credit.
Open Money → Follow the money and keep All traffic selected for the website-wide comparison. Read Sales, Refunds and Net together. The chart’s Channel and Source controls describe marketing activity; they are not payment-provider filters. Selecting Google Ads does not select Stripe, and selecting AI search does not select Polar.
Where to find itDashboard → Money → Follow the money → All traffic
The overview preserves the complete chart, its filters, totals, dates and legend. The sales, refund and net strip from this same capture is enlarged below.
Select the overview to open the full screenshot.
Enlarged detail of the outlined area
- Read the included sales
Sales is the recorded payment value for the selected scope. Keep provider history, tax basis and currency beside the comparison.
- Inspect the included deductions
Refund deductions reduce recorded revenue. Use provider records to check history, cumulative updates and amount definitions.
- Read net before other costs
Net is the selected sales less included refunds. It is not bank settlement, profit or proof of currency conversion.
Then inspect recorded source credit for a defined marketing question. Keep the Credit rule and look-back fixed for the initial comparison. Changing the attribution rule redistributes eligible credit; it does not repair missing payment history, convert currencies or remove a duplicate business order.
Importing old payments does not recreate old website visits. A later valid match can improve attribution when the required recorded history exists, but it cannot reconstruct every earlier source or device. Keep payment reconciliation separate from visit coverage and attribution confidence.
6. Keep Currency Totals and Exceptions Visible in the Worksheet
Use this small worksheet to review supplied records after aligning their amount basis. Keep the tab-separated header and enter one row per payment or refund event, with a distinct event reference. It retains the provider, account and reference, groups compatible currencies, and flags repeated keys without silently deleting rows.
Separate currencies, visible exceptions
Review a Small Set of Provider Records
Use up to 40 payment and refund records, without names, emails or keys. Keep the tab-separated headings; paste major currency amounts, not API minor units. Supported currencies are USD, EUR, GBP and JPY. The starting rows form an example. Entries stay in this browser; no account is connected.
In the example, Stripe contributes USD 100 of payments and USD 20 of refunds, for USD 80. Polar adds USD 80, bringing the entered USD net to USD 160. Lemon Squeezy contributes EUR 50 less EUR 5 of refunds, for EUR 45. Keep USD 160 and EUR 45 separate; adding them as 205 would discard their units.

The worksheet supports USD, EUR and GBP with up to two decimal places, and JPY with no fractional units. Other currencies need their own ledger. Paste amounts in major currency units, not raw API integers. Stripe’s currency documentation explains that API amounts use currency-specific minor units, so a value copied straight from an API response can be misread by a spreadsheet or manual form.
A repeated provider/account/reference key keeps the review unverified; all entered rows remain visible. The tool cannot determine whether records from different providers describe the same business order. Mark suspected overlap when appropriate and resolve it against authorized records. It does not connect accounts, certify completeness, convert exchange rates or reconcile bank settlements.
7. Close the Review With an Owner and a Next Check
Save the scoped provider exports and write an exception list: missing history, incomplete import, currency mismatch, tax-basis difference, repeated reference, possible cross-provider overlap or unmatched visit. Put an owner and review date beside each unresolved item. A total with an explained gap is more useful than a forced match.
On the next review, use the same definitions and compare the new as-of export with the retained one. Investigate new refunds and migration-related changes before presenting a trend as a marketing outcome. If the question is recurring performance, separate renewal payments and subscription status from the initial-purchase view.
Use Attriboo to inspect recorded website revenue and its marketing credit after these scope checks. Use provider and accounting records for settlement, fees and financial close. A repeatable marketing report should carry the payment coverage and known exceptions beside its recommendation.
Common questions
Can I review Stripe and Polar revenue for the same website?
Yes. Attriboo supports more than one payment provider on a website. Check each connection’s supported flows, history, currency and amount basis first. Compatible recorded payments can support a website revenue review; a combined chart does not establish complete imports, automatic currency conversion or cross-provider business-order deduplication.
Does connecting a new provider make old subscriptions new customers?
No. A provider migration can change customer and subscription references without changing the underlying customer relationship. Reconcile the migration in your business records and keep first purchases, renewals, prorations and refunds distinct before interpreting acquisition results.
Why can a past refund total change after another import?
Some connector paths store an updated cumulative refund amount against an existing reference, and imports can expose a later refund state. Preserve the export time and previous records, then inspect the provider’s refund history and connector coverage. Do not assume every imported refund row is a separate immutable event.
What if there are no recorded visits behind an imported payment?
Keep it as a payment-coverage and matching question. An import can bring in a supported payment without recreating the earlier visit. Check installation and the supported checkout-matching route for future payments rather than assigning an unrecorded source.
Can this worksheet remove duplicate purchases across providers?
No. It flags repeated provider/account/reference keys and retains the supplied records. Different provider references can still represent one business order, so cross-provider overlap requires your own review. The worksheet does not query accounts or delete payments.




