How we count
Revenue numbers are only useful if you know how they are made. Every RevGlance sync reads the provider’s official API and was checked line by line against its documentation. Where a provider leaves something out, this page says what we do instead.
- Providers
- 11
- Rules everywhere
- 10
- Never changes your provider
- Read-only
Everywhere
These hold for every provider, on every page.
Revenue counts before tax. The fee is what the provider kept for processing the payment.
Show the math lists the tax on each payment: what was charged, the tax left out and where that amount came from. Where a provider gives no tax amount, the row says so.
Net revenue is charges, minus refunds, minus fees. A fee the provider hands back with a refund lowers fees; a fee it charges for a refund or a dispute counts as a fee. Every page counts it this way.
A refund counts on the day the provider reports it, before tax like the charge it gives back. When a refund is reversed or a chargeback is won, the refund stops counting.
MRR counts what a subscription bills each month after recurring discounts. One-time discounts and trials hold no MRR; a trial that converts opens as new on the day it converts.
A past-due subscription keeps counting while the provider retries the payment. A paused subscription counts as churn and comes back when it resumes.
When the retries run out, the subscription counts as churn. App Store and Google Play without notifications show no retries, so a renewal three days overdue counts as ended.
A plan change before you connected only shows where every charge is on record: Gumroad, App Store and Google Play. Other providers only say what a subscription costs now, so it opens at today’s price and later changes are dated as they happen.
Amounts in other currencies are converted to the business currency at the European Central Bank’s rate for the day of each payment.
RevGlance only reads. It never charges, refunds or changes anything in your provider.
Stripe
- Charges, refunds and Stripe's fees come from your balance transactions, in the currency Stripe settled them in.
- Card refunds count on the day Stripe records them. Bank payments (ACH, SEPA and other local methods) count too; a refund the bank sends back lowers your refunds again.
- A dispute counts as a refund when Stripe takes the money back, and the refund is cancelled if you win it. Stripe's dispute fee is kept as the fee.
- Coupons on the subscription and on single items come off MRR. A fixed-amount coupon only counts in its own currency.
- Paused and unpaid subscriptions count as churn; a past-due one keeps counting while Stripe retries the card.
- Charges, refunds and disputes count before tax, in the share of tax on their invoice or Checkout Session. Without read access to Checkout Sessions, tax on sales outside an invoice stays in.
- A tax-inclusive price counts before tax in MRR, in the share of tax on the latest invoice.
- Pausing payment collection counts as churn from the day RevGlance first sees it, since Stripe does not date it.
Polar
- Orders count before tax, with Polar's platform fee as the fee. A fee in another currency than the order shows as zero.
- Refunds count before tax, like the charge. Polar gives no refund date, so a refund is dated when the order last changed.
- A refund of an older order is caught by a full read once a week, so it can show up to a week late.
- Chargebacks are not read, so a lost one stays counted as a charge unless the provider also reports it as a refund.
- Failed charges are not reported, so that figure stays at zero.
- MRR is the subscription amount, which Polar already lowers by a repeating discount. A one-time discount does not lower MRR.
- MRR includes tax on tax-inclusive prices: Polar does not say which subscriptions use them. Charges and refunds count before tax.
Lemon Squeezy
- Charges are the order or invoice total less tax.
- Lemon Squeezy reports refunds including tax, so RevGlance takes the tax off in proportion. Expect a cent of rounding now and then.
- Full refunds are dated when Lemon Squeezy made them. Partial refunds have no date, so they show on the invoice date.
- A cancelled subscription keeps counting until its paid period ends. An unpaid one (four failed retries) counts as churn, and comes back if the payment recovers.
- Lemon Squeezy sends no cancel date or reason: the cancel date is when the subscription last changed.
- Lemon Squeezy reports no fees, so fees show as zero.
- A discount comes off MRR once a renewal shows it. Lemon Squeezy does not say whether a discount repeats, so one on the first invoice alone does not count.
- A refund of an older order is caught by a full read once a week, so it can show up to a week late.
- A trial that converted before you connected is not shown, since Lemon Squeezy only names a trial while it runs.
- Chargebacks are not read, so a lost one stays counted as a charge unless the provider also reports it as a refund.
App StoreBeta
Built and tested against App Store’s documentation, but not yet run against a live account. Tell us if your numbers differ from App Store’s own reports.
- Customer price counts as revenue and the fee is customer price less your proceeds, so tax in tax-inclusive prices shows up as fee.
- MRR is the latest customer price, so it includes tax where prices do: Apple's reports do not split tax out. An introductory offer counts at its offer price, and the regular price then shows as an expansion.
- A refund comes from Apple's report with a negative price. When Apple reverses a refund, RevGlance removes the latest refund of that subscriber and subscription. Apple does not say which refund was reversed, so with several refunds on one subscription the wrong one can go.
- Refunds asked for after Apple resets a subscriber's ID (180 days) are kept, but without a customer.
- App bundle credits (CMB-C) are not refunds and are left out.
- Apple shows no cancels: a subscription ends when a renewal is three days overdue.
- Failed charges are not reported, so that figure stays at zero.
Google PlayBeta
Built and tested against Google Play’s documentation, but not yet run against a live account. Tell us if your numbers differ from Google Play’s own reports.
- Google posts reports three to seven days late. Sales come first; earnings later replace them with what Google paid you, after its fee. Charges count before tax.
- Each refund line is kept, partial ones too. Two partial refunds of one order spread over two monthly reports can collide, and one may be missed. Google does not say whether refunds are negative in its reports, so they are read as amounts refunded.
- Refunds through the Play API reach back 30 days only. Older ones arrive with the earnings report.
- Without real-time notifications, a cancel shows only as a renewal three days overdue, counted once the reports cover that day.
- Test purchases are left out. A subscription on hold keeps counting; a paused one counts as churn until it resumes.
- MRR is the latest order, before tax. An introductory offer counts at its offer price, and the regular price then shows as an expansion.
- Failed charges are not reported, so that figure stays at zero.
GumroadBeta
Built and tested against Gumroad’s documentation, but not yet run against a live account. Tell us if your numbers differ from Gumroad’s own reports.
- Gumroad reports every amount in US dollars, whatever your product's currency, so sales are recorded in USD.
- Refunds have no date: a refund is dated the day RevGlance finds it, or the day of the sale on the first sync. Sales are re-read 30 days back, and in full once a week, to catch them.
- A chargeback you won is not a refund; a lost one is, until you win it.
- MRR is what the latest sale charged, so an offer code lowers it until a full-price sale shows as an expansion.
- Tax Gumroad collects is left out. Tax you collect yourself stays in, since the sales list does not report it.
- Failed charges are not reported, so that figure stays at zero.
PaddleBeta
Built and tested against Paddle’s documentation, but not yet run against a live account. Tell us if your numbers differ from Paddle’s own reports.
- Amounts come from Paddle's payout totals, before tax, with Paddle's fee as the fee.
- Refunds and chargebacks count before tax. A chargeback Paddle wins, or a refund Paddle reverses, no longer counts.
- A chargeback fee Paddle keeps counts as a fee.
- A tax-inclusive price counts before tax in MRR, in the share of tax on the next bill.
- Recurring discounts come off MRR, also when the discount was archived later.
- A payment that could not be collected counts as a failed charge. It moves no money.
BraintreeBeta
Built and tested against Braintree’s documentation, but not yet run against a live account. Tell us if your numbers differ from Braintree’s own reports.
- Settled and settling sales count, before tax when you send tax amounts. Authorizations that were never captured do not.
- Refunds are the credit transactions, dated when Braintree made them.
- Braintree reports no processing fees through its API, so fees show as zero.
- MRR is the subscription price with its add-ons, less discounts that still have billing cycles left. A subscription names no customer, so it takes the customer of its charges; one with no charge yet shows under its card.
- A cancel is dated from the status history. An expired subscription ends on its paid-through date.
- A payment that could not be collected counts as a failed charge. It moves no money.
- Chargebacks are not read, so a lost one stays counted as a charge unless the provider also reports it as a refund.
RecurlyBeta
Built and tested against Recurly’s documentation, but not yet run against a live account. Tell us if your numbers differ from Recurly’s own reports.
- Paid charge invoices count before tax.
- Refunds are the successful refund transactions. They include tax, so RevGlance takes the tax off in the same share as on the invoice.
- Recurly reports no gateway fees, so fees show as zero.
- MRR is Recurly's subtotal for the subscription (unit amount, quantity and add-ons, after coupons, before tax).
- A canceled subscription keeps counting until it expires; expired, failed and paused ones count as churn. Recurly gives no cancel reason through the API.
- A payment that could not be collected counts as a failed charge. It moves no money.
- Chargebacks are not read, so a lost one stays counted as a charge unless the provider also reports it as a refund.
ChargebeeBeta
Built and tested against Chargebee’s documentation, but not yet run against a live account. Tell us if your numbers differ from Chargebee’s own reports.
- Paid invoices count before tax.
- Refunds come from refundable credit notes, less tax in the same share as the credit note.
- Chargebee reports no gateway fees, so fees show as zero.
- MRR is the plan and add-on items, less coupons on the whole invoice that keep applying. One-off charges are left out.
- Non-renewing subscriptions keep counting until their term ends. Paused ones count as churn. The cancel reason code you set up in Chargebee shows as the reason.
- A payment that could not be collected counts as a failed charge. It moves no money.
- A chargeback only counts when a refundable credit note records it.
ShopifyBeta
Built and tested against Shopify’s documentation, but not yet run against a live account. Tell us if your numbers differ from Shopify’s own reports.
- Paid orders count before tax, in the store's currency, with Shopify Payments' fees as the fee. Test orders are left out.
- Refunds include tax, so RevGlance takes the tax off in the same share as on the order.
- MRR comes from subscription contracts (Shopify Subscriptions and apps built on it), after their discounts. Orders a selling plan created count as recurring.
- Shopify gives no cancel date or reason: a cancelled, expired, failed or paused contract ends when it last changed.
- A partly paid order counts what came in so far.
- Where prices include tax, MRR counts before tax, in the share of tax on the first order.
- Subscription contracts carry no trial dates, so trials are not shown.
- Chargebacks are not read, so a lost one stays counted as a charge unless the provider also reports it as a refund.
- Failed charges are not reported, so that figure stays at zero.
Something here does not match what you see in your provider? That is a bug we want to hear about. Back to RevGlance

RevGlance