Earnings by Small Rows
All your Gumroad, Polar and Lemon Squeezy sales in one Google Sheet: what buyers paid, the tax collected, each platform's fee, refunds, and what you actually kept, by month and by currency.
Status: prelaunch. The add-on is built and tested against simulated Gumroad, Polar and Lemon Squeezy APIs made from their documentation. It hasn't been run against a real seller account yet, and it isn't on the Google Workspace Marketplace. Progress is posted in the build log.
| Month | Platform | Cur. | Orders | Gross paid | Tax | Fees | Refunds | Earnings |
|---|---|---|---|---|---|---|---|---|
| 2026-09 | Gumroad | USD | 18 | 342.00 | 18.00 | 32.40 | 19.00 | 272.60 |
| 2026-09 | Lemon Squeezy | USD | 7 | 210.00 | 22.00 | 14.00est. | 0.00 | 174.00 |
| 2026-09 | Polar | EUR | 5 | 119.00 | 19.00 | 6.76 | 0.00 | 93.24 |
| 2026-09 | Polar | USD | 12 | 288.00 | 24.00 | 15.84 | 24.00 | 224.16 |
Illustration with made-up example data, showing the layout of the Monthly Summary tab. "est." marks an estimated Lemon Squeezy fee (see limitations). Euros and dollars stay on separate rows: nothing is converted or added across currencies.
What it does
One Sales tab
One row per order from every connected platform: date, order ID, product, variant, type, status, currency, gross paid, discount, tax, platform fee, processor fee, refunded, earnings and country. If a platform doesn't give a number, the cell stays blank instead of being guessed.
Monthly Summary
Orders, refunds, gross, tax, fees and earnings per month, platform and currency, plus totals per currency. Test-mode orders are left out, and a flag shows when a month has blanks.
Refunds caught up
After the first full pull, each sync re-reads the last 35 days and updates orders that were refunded since. "Rebuild" re-reads your whole history.
Tax Collected (Pro)
Tax the platforms collected as merchant of record, by platform, currency, tax label and country. It's a record to hand your accountant, not tax advice.
Gumroad payouts (Pro)
Each Gumroad payout next to the sale, refund and chargeback lines Gumroad lists for it, with the difference, so you can see what made up each deposit.
Ko-fi & Payhip imports (Pro)
Neither has an API for reading sales, so you import their CSV export into a tab and the add-on maps it onto the Sales tab. Ambiguous dates like 03/04 are never guessed.
Big histories, no drama
Requests go one at a time, well under each platform's rate limit. A long sync pauses near Google's 6-minute limit and resumes without downloading anything twice.
One failure doesn't wipe the sheet
If one platform's token is wrong or its API is down, the others still sync and that platform's existing rows are kept. The message says which one failed.
Auto-refresh (Pro)
Hourly or daily background refresh, so the sheet is current when you open it.
Honest limitations
- Not yet tested against live accounts. Everything has been tested against simulated APIs built from each platform's documented responses. Before launch we'll run it against Polar's sandbox, Lemon Squeezy's test mode and a Gumroad test product, and fix what that turns up.
- Lemon Squeezy fees are estimates. Lemon Squeezy's order data has no fee field. We estimate its base fee of 5% + 50¢ of the order total and label it "estimated". The real fee can be higher: Lemon Squeezy adds 1.5% for international payments, 1.5% for PayPal and 0.5% for subscriptions, plus fees for some marketing features, and none of that is visible in its API.
- Ko-fi and Payhip are CSV imports, and the column names are unverified. Ko-fi doesn't document its export, and the Payhip columns come from a 2021 help page that lists no order ID. Check a few imported rows against your export.
- Gumroad partial refunds. Gumroad's sale data doesn't say how much of a partial refund was given, so that cell stays blank. The Payouts tab shows the exact lines.
- Old refunds. Regular syncs re-read the last 35 days. A refund or chargeback on an older order only shows up after "Rebuild".
- Gumroad tokens. As far as we can tell, the token Gumroad generates can't be limited to read-only. The add-on only ever sends read requests, and you can revoke the token in Gumroad at any time.
- Not included: currency conversion, charts, Stripe, Paddle or Patreon, and payout reconciliation for Polar or Lemon Squeezy.
- Lemon Squeezy's future. In January 2026 the Lemon Squeezy team said it is building Stripe Managed Payments and plans to give Lemon Squeezy users a way to migrate. If that changes its API, we'll update the add-on or say plainly that we can't.
What setup will look like
You paste one token per platform into the sidebar. Each token is checked with one read request before it's saved. These steps follow each platform's documentation; we haven't checked them against a live account yet.
Gumroad
- In Gumroad open Settings → Advanced → Applications.
- Create an application (any name; redirect URI
http://127.0.0.1). - Click Generate access token and paste it in.
Polar
- In the Polar dashboard open your organization's Settings.
- Under Developers click New Token, pick an expiry date and select only the
orders:readscope. - Paste the token in.
Lemon Squeezy
- In your Lemon Squeezy settings open API.
- Create a live-mode API key and paste it in. Keys are valid for one year.
Want to look first? The sidebar's Try with sample data button will fill four tabs named “Sample – Sales”, “Sample – Monthly Summary”, “Sample – Tax Collected” and “Sample – Payouts” with made-up orders from all three platforms (refunds, VAT, three currencies), each marked as sample data. It contacts no platform and doesn't touch your tokens, settings or other tabs. Remove sample tabs deletes them.
Privacy, briefly
- Each token is stored in your own Google account's add-on storage and sent only to that platform. After you save it, the sidebar only shows its last 4 characters.
- Sales data goes from each platform to your spreadsheet through Google's servers. Small Rows has no server that receives it.
- Buyer emails are off by default and aren't stored while off. Turning them off later removes them from the sheet straight away.
- Permissions: this spreadsheet only, the sidebar, outbound requests (to the three platforms and the license service) and the optional refresh schedule.
Pricing Launch pricing Not final
Planned prices in USD. They aren't final and may change before launch. Payments will be handled by our merchant of record, Polar, which calculates any sales tax or VAT and shows it at checkout before you pay. Cancel anytime. 14-day refund on your first payment (refund policy, terms).
Free
- One platform (you pick which)
- Last 90 days, manual sync
- Sales and Monthly Summary tabs
Pro
or US$54 / year
- All platforms merged in one sheet
- Full history
- Hourly or daily auto-refresh
- Tax Collected and Gumroad Payouts tabs
- Ko-fi and Payhip CSV imports
- Optional buyer-email column
"Launch pricing" means these are our planned starting prices while we learn what the product is worth to people. If prices change after launch, existing subscribers will be told in advance.
Questions
Is this made by Gumroad, Polar or Lemon Squeezy?
No. Earnings by Small Rows is an independent add-on that uses their public APIs. Small Rows is not affiliated with or endorsed by Gumroad, Polar or Lemon Squeezy (or Ko-fi or Payhip). We do sell our own products through Polar, which is one reason we built this.
Can it change anything in my accounts?
No. It only sends read (GET) requests to Gumroad, Polar and Lemon Squeezy: no refunds, edits or deletions. Our automated tests check this. (On Pro, a separate license check goes to Polar's license-key service. That checks our license, not your seller account.)
Does it convert currencies?
No. Every amount stays in the order's own currency, as each platform's API reports it, and the summaries keep each currency on its own row.
What does "Earnings" mean?
The order amount after tax, minus the platform's fee (and, on Gumroad, any processor fee it reports) and minus refunds. It's before payout fees and before your own income tax. If a figure is missing, earnings for that order stay blank and the month is flagged as incomplete.
Is the Tax Collected tab tax advice?
No. It records what each platform says it collected as merchant of record. Ask an accountant what you need to report.
Can I see what it makes before connecting anything?
Yes. Try with sample data writes made-up orders into separate “Sample – …” tabs, including previews of the Pro tabs. They're fictional, not your sales, and nothing is sent to any platform.
Why is Free limited to one platform?
Free gives you a useful history for one platform. Merging several into one sheet is what Pro is for.
Is there a free alternative?
Yes. All three platforms let you export a CSV, and we've published a free Apps Script that copies your Polar orders into a sheet. Both are in Gumroad, Polar and Lemon Squeezy sales in Google Sheets: 5 ways, along with paid tools.
When will it launch?
We don't have a date. It still needs testing with real (test-mode) accounts and Google's review. We'll post progress in the build log.
Who answers support?
An AI assistant answers support and says so. The human owner is responsible for the business. See About.