Most owners can tell me what their EHR bills them every month. Almost nobody can tell me what the whole stack costs as a percentage of what they collected.
That’s not a knock. Software shows up one invoice at a time, on different days, on two different cards, and nobody ever sits down and adds it up. So you end up with a number you feel instead of a number you know.
So three things I want you to walk away with. What the six real cost lines are. Which one is almost certainly bigger than you think. And how to build a one-page ledger this week that answers this for good.
Your stack isn’t one bill. It’s six buckets.
Same thing happens here that happens with a chart of accounts. If the buckets are wrong, the dollars don’t change — the bank statement doesn’t lie — but your decision making gets distorted. So let’s name the buckets.
Base subscription. The number on the invoice. Easy.
Per-provider fees. Fine at one provider. This is the bucket that surprises people the month they hire, because a platform priced per clinician just became a hiring cost nobody put in the model.
Per-patient or per-member fees. The one to project, because it grows exactly as fast as you do. A platform at $1.50 per active member is $750 a month at a 500-patient panel and $1,200 at 800. That’s not a problem. It’s a curve, and you should know its shape before you cross it.
Payment processing. Almost always the second biggest software bucket in a DPC practice, and it never shows up on a software invoice. More on this in a second.
Staff time inside the workflow. If your one staff member spends four hours on the monthly billing run because two systems don’t talk, that’s about 48 hours a year. Price it at what you actually pay her and put it in the bucket.
The bookkeeping cost of a stack that doesn’t map into your books. Nobody budgets this one. It’s usually the most expensive.
Add the six and you have the real number. Most owners land higher than their guess, and it’s almost always processing and staff time that account for the difference.
The bucket nobody looks at
Card processing on recurring memberships runs somewhere around 2.9% plus a fixed fee per transaction. On $30,000 a month of membership revenue that’s roughly $870 a month. Call it $10,400 a year.
For a lot of practices that is more than the EHR and the billing platform combined.
Here’s why it stays invisible. It isn’t a subscription. There’s no renewal email, no annual invoice, no seat count to review. It comes off the top of every charge, quietly, every month — so it never lands on anybody’s list to look at.
Which means the highest-leverage move in your software budget probably isn’t a negotiation. It’s payment rails. Move a third of a 500-member panel from card to ACH and you’ve changed that annual number more than any subscription conversation ever will. That’s one line in your billing settings and one sentence at signup.
Add a cancel column
This is the part that turns a cost review into a decision.
For every platform on the list, add a column: what does this let me retire?
The patient-messaging feature inside your EHR might retire a standalone texting tool. A membership platform with real reporting might retire a separate dashboard subscription. Built-in labs ordering might retire an interface you’ve been paying a monthly fee to maintain.
A platform that costs $400 a month and lets you cancel $250 a month of point solutions costs $150 a month. That’s the number that goes in the decision. Not $400.
And it runs the other direction too. A cheap tool that does one thing, sitting next to a platform that already does that thing, is the most common piece of avoidable spend we find in a DPC stack.
Then convert it into members, because members are the unit you actually control. Run it with your own average membership. If that’s $85, a net $150 a month platform pays for itself at about two members. A net $900 one at about eleven.
Eleven members is a decision you can make this week. “Nine hundred dollars a month” is a tab you leave open for six weeks.
The expensive part: when the stack doesn’t map into your books
Your membership platform knows what a patient paid. Your books need to know what that payment was — membership revenue, an enrollment fee, a lab pass-through, a refund, a partial month, a failed card that went through on the retry.
The deposit hits your bank as one net lump sum after fees. None of that detail comes with it.
So if nobody built the mapping — a clean chart of accounts, a rule that puts gross revenue and processing fees in separate buckets, a monthly tie-out between the platform’s report and the deposit — then somebody rebuilds it by hand every month. That’s billable hours. It’s why two practices with the same revenue can have monthly accounting costs that differ by hundreds of dollars.
It’s also why the sentence I hear most from established owners is some version of “I get reports every month and I don’t know what to do with them.” Usually the reports are fine. The mapping underneath them is what makes membership revenue readable, and membership revenue is what makes your price per member and your margin readable.
Build the mapping once. It stays built.
Build the one-page ledger
Do this in a spreadsheet this week. One row per platform, seven columns: platform, what it does, monthly base, per-provider, per-patient, what it lets me cancel, net monthly cost.
Add a row for payment processing — in dollars and as a percentage of collected membership revenue. Add a row for staff hours inside each workflow, priced at real wages.
Then one number at the bottom: total stack cost as a percentage of collected revenue.
You’re not benchmarking against anybody else here. You’re building your own baseline. Once you have it, the useful questions are whether it’s drifting up faster than revenue, and whether any two rows do the same job. Overlap is what we find most often, and overlap is fixable in an afternoon.
Update it twice a year and before every hire. Fifteen minutes once it exists.
What it looks like when the books are readable
Wellspring DPC — Wes Hite’s practice — grew revenue 19.6% from 2024 to 2025, with the membership line up 22.8%. The planning built on top of those clean books identified $55,030 in savings for 2025, after $40,103 in 2024. Two years running, both tied to the return.
That second year is the point. A practice growing 19.6% is adding cost as it adds members. The only way the savings curve keeps up with the growth curve is if the numbers underneath are readable every month. Across the plans we’ve built for Direct Care practices we’ve identified $3.16 million in savings across 70 plans, and the ones that produce the most are always the ones where the stack maps cleanly into the books. A plan is only as good as the data under it.
What you could do this week
Pull your merchant processing statement — not your P&L, the processor’s own statement — and write down two numbers: what you paid last month, and what percentage of collected membership revenue that is. Fifteen minutes. It’s the bucket nobody looks at.
Then if you want to watch the rest of this get done out loud, we’re running DPC Tech Stack Demo Days all September. Six platforms, six sessions — SigmaMD Sep 1, Elation Health Sep 3, Akute Health Sep 8, Cerbo Sep 9, HealthBook+ Sep 10, Hint Clinical Sep 15. The vendor demos it, and I come back with the CFO read: what it costs to run, what it lets you cancel, and at what panel size it pays for itself. Schedule and registration at goodmancpa.com/webinars.
And if you’d rather start with your own numbers than with a platform, book a free tax strategy session. Bring the ledger, or bring nothing and we’ll build it with you.