One batch, several revenue streams
Ask a gym bookkeeper where the day's revenue actually lives, and the honest answer is: split across two or three systems that were never designed to talk to each other. Dues billing runs through the membership platform on a fixed monthly schedule. Personal training, retail and day passes run through the front-desk POS terminal, whenever a sale happens. The bank sees neither system directly — it only sees whatever the payment processor decided to bundle into one net batch for that day.
That bundling is precisely what makes it hard to verify without manually pulling both the billing export and the POS report and lining them up against the bank statement — a task that becomes genuinely tedious past a modest member count, and one where a single missed declined charge or fee miscalculation can hide a real problem for months.
Why this matching matters more than a monthly total
A monthly deposit total — total in minus fees, roughly matching expected dues — tells you whether the month was broadly on track, but it hides exactly where any gap happened. A dozen clean dues batches can offset one batch where several declined cards quietly went unnoticed, and the monthly number would still look acceptable.
Matching at the batch level is what makes that kind of gap visible instead of averaged away. A single day where a processor fee spiked, or a handful of recurring charges failed, shows up as a specific, addressable line — not a vague sense that this month's deposits looked a little soft.
What this doesn't do, stated up front
Doesn't set dues pricing or PT package rates
What you charge members is a business decision made separately. This confirms what the actual charges and sales produced — it doesn't recommend or set new pricing.
Doesn't connect to your membership platform, POS or processor
There's no API, no login, no integration. You export or download the billing and POS documents yourself, the same way you already do, and upload them.
Doesn't retry a declined charge or process a refund
Those actions happen inside your billing platform. This reads the resulting billing export, it doesn't recompute or resubmit a charge.
Doesn't decide what deposit variance is acceptable
A slightly lower deposit might be normal seasonal churn, or it might be a processor issue worth a call — that judgment call is yours. This surfaces the number clearly enough to make the call.
What's left is narrow, and it's exactly the part that determines whether a deposit problem gets caught this week or discovered three months later at year-end.
What gets matched
| Field | Source |
|---|---|
| Member, dues amount, billing status | Membership billing export |
| PT package, retail and day pass sales | POS report |
| Batch date, gross and net amount | Bank statement |
| Processor fee rate applied | Bank statement, merchant statement |
| Realized net deposit per batch | Calculated from the four above |
Five values, read from three documents that were never designed to be compared side by side — and compared anyway.
How a batch gets matched across three documents
Matching runs on batch date, amount and transaction count together, since any one of these alone can be ambiguous — a round dues total appearing on more than one day, or a date convention that shifts by a day between the billing platform's calendar and the processor's own settlement schedule.
| Signal | What it confirms |
|---|---|
| Batch date | The billing export, POS report and bank statement cover the same window |
| Transaction count | The number of charges billed matches the number that settled |
| Gross amount | Dues plus POS sales equal the batch total before fees |
| Fee rate | The processor's contracted rate matches what was actually deducted |
A batch where all four signals agree lands at high confidence. Where the transaction count doesn't match, or the fee looks off from the contracted rate, the batch is flagged for a quick manual confirm rather than matched on a guess.
One batch, several revenue streams, one deposit
A single day's batch with dues, PT and retail sales all present.
| Line | Amount |
|---|---|
| Dues billed | $6,200.00 |
| PT packages sold | $980.00 |
| Retail and day passes | $210.00 |
| Processor fee (2.6% + fixed) | -$210.30 |
| Net deposit | $7,179.70 |
Neither the billing export nor the POS report alone shows the $7,179.70 net deposit — each document only shows its own half. Matched together, the fee rate is confirmed against the studio's contracted 2.6% rate, which is exactly the check that catches a rate creeping up unannounced.
How it works
Upload the billing export, POS report and bank statement
Covering the same billing period, from whatever platform and processor you already use.
Each batch is read from all three documents
Dues and status from billing, sales from POS, gross and net from the bank statement.
Matched and net deposit calculated
Dues, POS and fees compared independently, with a confidence level per batch.
Export
Excel, CSV or JSON — dues, POS, fees and net deposit as their own columns, ready to sort or filter.
Processor fees, matched to the contracted rate
Processor fees are where a lot of quiet drift lives, because they're rarely a single flat percentage — a fee schedule might charge a lower rate for a debit card tap and a higher one for a manually entered card number, plus a small fixed fee per transaction, all blended into one deduction on the batch.
Comparing the actual fee deducted against what the studio's contracted rate schedule would predict, rather than trusting the net figure at face value, is what surfaces a rate that's quietly increased — whether through a renegotiated contract nobody flagged internally, or a processor error worth disputing.
Chargeback fees, a cost beyond the reversed amount
A chargeback doesn't just reverse the original charge — most processors also apply a separate chargeback fee, often $15 to $25, regardless of whether the studio ultimately wins the dispute. A studio absorbing several chargebacks a month without reading this fee as its own line item ends up understating true chargeback cost by focusing only on the reversed dues or POS amount and missing the flat fee stacked on top of every single case.
Reading the chargeback fee separately from the reversed transaction amount, rather than treating a chargeback as a single blended deduction, makes it possible to see whether chargeback volume itself is trending up — a pattern worth investigating with the processor directly — independent of how large or small the underlying disputed charges happen to be that month.
Tracking declined charges to resolution
A declined recurring charge rarely resolves itself — a member's card needs updating, or the charge needs a manual retry, and until one of those happens, that member's dues stay uncollected month after month. Left untracked, a handful of long-standing declines can quietly accumulate into a meaningful revenue gap that never shows up as a single dramatic event.
Because each batch is matched independently rather than smoothed into a running average, a decline that started last month is visible as soon as this month's documents are processed — not discovered at year-end when the cumulative effect finally shows up in an annual revenue review.
Retail, PT packages and day passes, kept separate
Many studios track dues revenue closely but treat POS revenue as an afterthought, even though personal training packages, retail and day passes can represent a meaningful share of total revenue at a busy studio. These categories frequently apply at different margins and follow different seasonal patterns than recurring dues.
Reading these as their own line items, rather than folding them into a single blended deposit figure, keeps each revenue stream's trend visible on its own, which matters for a studio actively trying to grow one category — PT packages, say — relative to the others.
Deposit trends across a full month
A single day's batch tells you about that day. Matching every batch across a billing cycle and exporting them together turns that single data point into a trend — a studio whose decline rate has steadily crept up over several months tells a very different story than one whose decline rate has stayed flat, even if this month's number looks unremarkable on its own.
This trend view is often what actually prompts a conversation with a payment processor about declining authorization rates, rather than a single month's number, which can look like normal variance until it's placed next to several months before it.
Who this is for
Gym and studio owners
Net deposit confirmed at the batch level instead of estimated from a monthly average.
Bookkeepers serving fitness clients
A consistent matching method applied regardless of which membership platform or processor a client uses.
Multi-location studio operators
The same bill-to-bank matching applied across every site's own merchant account.
Franchise finance teams
Dues, PT and retail kept distinct for reporting across the whole franchise.
This isn't a POS or billing system
Worth being precise about the boundary. This doesn't process a sale, run recurring billing, or connect to any POS or membership platform. There's no login, no API. What it reads is the documents your existing billing and POS systems already produce, matched together to expose the number neither system shows on its own.
How often to check
Matching net deposit accuracy on the same cadence as your dues billing cycle is the simplest rule that actually works — monthly for most studios billing dues once a month. Checking less often means a fee increase or a growing decline rate can run for several billing cycles before anyone notices.
For a studio running significant POS volume alongside dues, checking POS matching more frequently — weekly, for instance — catches a retail or PT discrepancy sooner than waiting for the monthly dues cycle to prompt a review.
What accuracy actually looks like
Matching accuracy is best thought of as a confidence distribution across batches rather than a single percentage. A studio with clean, consistent billing and POS data sees most batches land at high confidence, with a small tail needing review. A studio running several promotions or a recent processor switch sees a larger medium-confidence tail — more review time, not necessarily more actual errors.
In practice, most studios with a stable billing setup see somewhere between 85% and 95% of batches land at high confidence, with the rest split between a quick medium-confidence confirm and a small number of genuine discrepancies worth investigating individually.
Net deposit versus true revenue
The net deposit that lands in the bank is only part of the picture. True revenue — the full amount billed to members and charged at the point of sale — includes every dues charge and POS sale before processor fees and declines are subtracted. Two months with an identical net deposit can have meaningfully different true revenue if one month carries a higher decline rate than the other, a distinction that matters for understanding whether membership growth is actually translating into billed revenue.
Where a billing export and POS report break out gross charges before fees and declines, reading them as their own fields alongside the net deposit makes it possible to build a true revenue view on top of the simpler net-deposit figure, without a separate manual calculation for every batch.
For most day-to-day deposit monitoring, the simpler net-deposit figure is the right default — it's fast to check and catches the large majority of discrepancy causes. The true revenue view earns its extra step at renewal or budgeting time, when understanding actual billed activity, declines included, needs a harder look than the net deposit alone provides.
A studio budgeting for next year's revenue off last year's net deposits alone risks quietly baking in whatever decline rate happened to exist last year as a permanent feature of the forecast, rather than treating it as a fixable gap. Starting the budget from true revenue, then subtracting an explicit, targeted decline assumption, keeps the forecast honest about how much of the gap is genuinely structural versus how much is simply uncollected revenue waiting on a follow-up call.
Privacy
Uploads go over TLS, encrypted end to end.
Processing runs on EU-hosted infrastructure.
Original documents are deleted immediately after extraction.
Member billing and payment data are never used to train AI models.
Full details are on the security page.
