FlowParse
Tool September 2026 18 min read

Gym bank statement to Excel

A gym or fitness studio's bank statement shows one lump deposit per day — membership dues, personal training, retail and day passes all netted together after processor fees, with no member names anywhere. FlowParse reads the statement and the billing export behind it, turning every batch into a categorized Excel row.

FlowParse
flowparse.io
flowparse.iosound off is fine
0:00 / 0:00

One deposit, dozens of hidden line items

Open a gym or fitness studio's bank statement and the merchant deposit line looks almost suspiciously simple: one number per business day, sometimes two if the processor batches morning and evening separately. Behind that single number sits every recurring membership dues charge that ran that day, every personal training package sold at the front desk, every retail item rung up at the counter, every day pass sold to a walk-in — all bundled by the payment processor into one net figure, after its own fees and any same-day refunds are already subtracted.

Answering the question every gym owner and bookkeeper eventually asks — did the amount that landed in the bank actually match what the membership roster and POS system say should have come in — means reading the bank statement and the billing exports behind it side by side and checking one against the other. Neither document alone answers it; the bank statement shows what net amount arrived, and the billing and POS exports show what was supposed to be charged, and nothing volunteers how the two compare.

FlowParse
flowparse.io

Why a gym bank deposit hides more than it shows

A merchant settlement deposit carries a deceptively simple layout — one date, one net amount — and that simplicity is exactly why the gaps underneath it are so easy to miss until month-end closes and the deposit total doesn't match the membership revenue anyone expected.

Dues, PT and retail all land in the same batch

A single day's deposit blends recurring membership dues, personal training package sales, retail purchases and day passes into one net figure, with no built-in breakdown by category.

Processor fees are subtracted before the deposit hits the bank

The gross amount charged to members is never the number that appears in the bank statement — interchange and processor fees come out first, and the fee percentage often varies by card type and transaction size.

Failed and declined charges disappear silently

A member's card that declines during the monthly billing run doesn't show up as a negative anywhere obvious — it simply isn't in the batch, and the missing dollar amount is easy to miss without a source to compare against.

Refunds and chargebacks land days or weeks later

A refund issued today, or a chargeback filed by a member's card issuer weeks after the original charge, often settles in a completely different batch than the one the original charge appeared in.

None of these four are a sign of anything being done wrong — they're the normal shape of how card-based recurring billing works for any membership business, and they're exactly why comparing a bank deposit against a rough sense of expected revenue rarely produces a confident answer, no matter how experienced the person doing the comparing is. Reading the statement and the billing exports together, rather than relying on that rough sense, is the only way to know for certain — and it gets faster every billing cycle, not slower.

What this doesn't do, stated up front

Doesn't connect to your membership platform or processor

There's no API, no login, no integration with Mindbody, Glofox, ABC Fitness, Zen Planner, Square or any processor. You export or download your billing report and bank statement yourself, the same way you already do, and upload them.

Doesn't run your billing or charge members' cards

Charging dues, retrying a failed payment and managing a member's card on file remain your billing platform's job — this reads what already happened, it doesn't process a charge.

Doesn't decide what to do about a failed charge or a chargeback

Whether to retry a declined card, waive a late fee, or dispute a chargeback is a decision you make — this surfaces the discrepancy clearly enough to make that decision straightforward.

Doesn't set membership pricing or manage your roster

Pricing tiers, freeze policies and roster management stay exactly where they already live, in your membership platform — this only reads the financial documents it produces.

What's left is narrow, and it's exactly the part that quietly eats a bookkeeper's afternoon every month: turning a batched bank deposit and a billing export into a clear answer about what actually made up that day's number.

What gets read

FieldSource
Batch date, gross amount, net depositBank statement
Member, dues amount, billing statusMembership billing export
Retail, PT package and day pass salesPOS report
Processor fees, interchangeBank statement, merchant statement
Refunds and chargebacksBank statement, billing export

Five sources of truth, read as they actually exist — not summarized from memory, and not assumed to agree with each other until the matching step actually checks.

FlowParse
flowparse.io

How a batch gets matched to members and sales

Matching runs on batch date, amount and transaction count together — not a single field, because two different batches can share a similar total, and a date alone doesn't confirm which specific charges actually landed inside it.

Match typeWhat confirms it
Dues batchSum of billed members' dues, minus fees, equals the net deposit
POS batchRetail and PT sales for the day match the terminal's settlement total
FeeProcessor's published rate applied to the gross batch amount
Refund / chargebackA negative line traced back to a specific original charge

A batch that fits cleanly into one of these lands with high confidence. One that doesn't — a deposit that's a few dollars off from the billing export's total, or a fee that looks higher than the processor's published rate — is flagged for a quick manual confirm rather than guessed at silently.

FlowParse
flowparse.io

One settlement batch, reconciled

A single day's merchant batch for a mid-size studio running monthly dues billing on the 1st.

LineAmount
Membership dues billed (142 members)$8,520.00
Personal training packages sold$1,240.00
Retail and day passes$385.00
Processor fees (2.6% + fixed)-$261.30
Failed charges (3 declined cards)-$180.00
Net deposit$9,703.70

The bank statement alone shows only the $9,703.70 net deposit. Read alongside the billing export and POS report, the three declined cards are confirmed as a specific, addressable list rather than a vague $180 gap, and the processor fee is confirmed against the studio's actual contracted rate rather than assumed.

FlowParse
flowparse.io

How it works

1

Upload the bank statement, billing export and POS report

Whatever your membership platform and payment processor issue, covering the same period.

2

Every batch is read

Date, gross amount, fees and net deposit, kept linked to the source document.

3

Matched against dues, PT and retail sales

By date and amount together, with a confidence level per batch.

4

Export

Excel, CSV or JSON — dues, POS, fees and refunds kept as separate, clearly labeled columns.

FlowParse
flowparse.io

Failed and declined recurring charges

A declined card during the monthly billing run is one of the most common sources of a deposit that doesn't match expectations, and one of the easiest to miss, because a failed charge doesn't appear as a negative line anywhere — it simply isn't part of the batch. Without a source to compare the batch against, a lower-than-expected deposit just looks like a slightly quiet day.

Reading the billing export's full member list against what actually settled surfaces every declined charge as its own named line, which is what makes a targeted follow-up — updating a card on file, retrying the charge — possible instead of guessing which members might be behind. More detail on how dues and POS sales get matched line by line is covered in membership dues and POS matching.

FlowParse
flowparse.io

Multiple locations, multiple merchant accounts

A studio operating more than one location typically runs a separate merchant account per site, each with its own batch schedule, its own fee structure, and sometimes its own billing platform entirely if locations were acquired rather than opened from scratch. An owner's own spreadsheet tracking all of this by hand tends to fall out of date the moment one location switches processors.

Each location's statements and billing exports are read and kept as their own export rather than merged into one undifferentiated total, so a location whose deposit has quietly drifted from its expected dues revenue is visible on its own rather than hidden inside a company-wide average.

FlowParse
flowparse.io

Refunds and chargebacks

A member requesting a refund on a personal training package, or a card issuer processing a chargeback weeks after the original charge, is a routine part of running a membership business — and it means a negative line can appear in a batch that has nothing else to do with the original transaction it's reversing.

Reading the bank statement and billing export together traces a refund or chargeback back to the specific original charge it concerns, rather than leaving it as an unexplained negative sitting in whatever batch it happened to settle in.

Free trials and promotional holds

A free trial period or a promotional first-month rate means a new member appears on the roster without a matching charge for a period, and a $1 card-verification hold sometimes appears in a statement without ever becoming a real charge at all. Both are easy to mistake for a billing error if the roster and the settlement batches aren't read together with the promotion terms in mind.

Reading the billing export's own promotional flags alongside the settlement batches keeps a trial member's zero-dollar period from looking like a missed charge, and keeps a verification hold from being mistaken for revenue.

Who this is for

Gym owners and studio operators

A clear answer for what actually makes up each day's deposit, instead of a rough monthly guess.

Bookkeepers serving fitness clients

The same matching method applied regardless of which membership platform a client happens to use.

Multi-location studio operators

One consistent reconciliation process across every site, not a separate manual check per merchant account.

Franchise and boutique fitness finance teams

Dues, PT and retail kept separate for reporting, not blended into one undifferentiated deposit total.

This isn't a membership management platform

Worth being precise about the boundary. This doesn't manage members, run billing, or connect to any membership or point-of-sale platform. There's no login to any client's Mindbody or Glofox account. What it reads is the financial side — the bank statement, the billing export, the POS report, the same documents a studio already produces every billing cycle, turned into clean, categorized numbers.

FlowParse
flowparse.io

Moving from a spreadsheet built by hand

Most owners and bookkeepers who reach for this have been tracking deposits the way the industry always has — a master spreadsheet with expected dues in one column and actual bank deposits copied over in another, updated whenever someone remembers to reconcile it, usually right before month-end close forces the issue. It works, in the sense that the numbers eventually get assembled, but it's slow, and it catches nothing subtle: a processor fee that crept up after a rate change, a handful of declined cards absorbed silently into a lower deposit, a chargeback landing three weeks after the original charge with no obvious link back to it.

The transition doesn't require reorganizing anything on day one. A reasonable first step is running one month's statement through and comparing the categorized export against whatever master spreadsheet already exists, to see where the two agree and where the automatic matching catches something the manual process missed.

How often to reconcile

Matching your reconciliation cadence to your billing cycle is the simplest rule that actually works — monthly for studios billing dues once a month, more often for a studio also running frequent PT package and retail activity worth checking on its own rhythm. Reconciling less often than dues run means several billing cycles pile up before a declined-card pattern or a fee increase becomes visible.

For a studio running multiple locations, it's often simpler to batch the reconciliation on a fixed monthly rhythm across all sites at once, rather than chasing each location's statement individually as it arrives.

What accuracy actually looks like

A useful way to think about matching accuracy isn't a single percentage — it's the shape of the confidence distribution across batches. A studio with a stable member roster and a single consistent processor sees most batches land at high confidence, with only a small tail needing review. A studio running several promotions at once, or dealing with a recent processor switch, sees a larger medium-confidence tail — more review time, not necessarily more errors.

In practice, most studios with a stable billing setup see somewhere between 85% and 95% of batches land at high confidence on a given statement, with the rest split between a quick medium-confidence confirm and a small number of genuine discrepancies worth investigating individually.

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.

Frequently asked questions

Reconcile a real gym deposit

Upload one bank statement and one billing export — no signup — and see how it adds up.

Keep reading