Membership billing inside an EHR needs eleven things: a tokenized card on file, monthly, quarterly and yearly cadence, services included each period, minimum commitment terms, discounts, upgrades and downgrades, pause and cancel, failed-payment handling with patient outreach, a self-serve join page, a way to convert a paid visit into a membership, signed agreements with the price frozen at signing, and reporting that reconciles. Moonshot EHR includes all eleven in the base plan on Stripe, NMI, TRX, PowerTranz or Authorize.net. Most EHRs for cash-pay clinics cover a subset, and several put recurring billing on a higher tier or in a separate product.
I run a TRT and performance clinic on memberships, and every item on that list came from a week where it was missing. The visit a patient paid for on Tuesday and wanted to roll into a plan on Thursday. The card that expired the day before renewal. The yearly plan that needed a 12-month commitment the portal could not enforce. None of these are exotic; they are the fourth week of any membership practice.
The checklist, and how Moonshot handles each item
Card on file, tokenized. The card number never touches the EHR. It is captured in the processor's hosted form and stored as a token in a vault; the EHR keeps the last four digits and the brand. Patients can hold a primary and a backup card.
Monthly, quarterly, yearly. Plans bill on any of the three. The billing day is anchored, so a plan started on the 31st bills on the last day of short months and returns to the 31st, and staff can move the next charge date when a patient asks.
Included services per period. A plan can include a quantity of any catalog item each period, for example one DEXA scan a quarter or four injections a month. The included units show at $0 on the same bill as the plan, extra units are charged, and unused units follow the plan's expiry rules with a reminder before they lapse.
Commitment terms. A plan can carry a minimum term, such as 12 months with no pause or cancel. Overriding it takes a second permission on top of billing access, so a front-desk kindness does not quietly waive a contract.
Discounts, promo codes, staff pricing. A standing discount applies from the next invoice; promo codes ride the join link; and a cost-plus staff pricing mode can be switched on or off per clinic.
Upgrades and downgrades. Upgrades apply immediately with a proration preview on Stripe. Downgrades are scheduled for the next cycle, with no mid-cycle credit, which is the rule most clinics want and few systems enforce.
Pause and cancel. Staff can pause, resume and cancel, or schedule either for a future date. Patients can request a pause or cancellation from the portal; the request goes to staff to action, so commitment terms and retention conversations stay with the clinic.
Failed payments. See the next section; it deserves its own.
Self-serve join. A public join page lists the plans with a monthly or yearly toggle and a promo field. The visitor picks a plan, gives contact details and date of birth, and gets a secure link into the portal where they add a card and pay the first period. Existing patients join directly from the portal.
Convert a paid visit. A patient who paid for today's visit and decides to join does not pay twice. Staff convert the visit with one click: the payment is applied as the plan's first period or periods, the remainder becomes account credit, and the visit counts against the plan's included services.
Agreements. Program agreements are templates with price and term fields that fill from the plan. The text is frozen when staff send it, so a later price change never alters a signed contract. Patients sign in the portal with a typed or drawn signature, or in the office, and the signed copy files to the chart with an evidence block.
Reporting. A Friday-close accounts-receivable snapshot with aging buckets and a checked roll-forward, a subscriptions report of renewals due, collected and failed per plan and month, a churned-members tile with drill-down, a refunds report, an upcoming-charges view for the next 30 days, and an accounting journal export formatted for QuickBooks Online.
What good failed-payment handling looks like
A renewal fails for boring reasons: an expired card, an insufficient balance, a bank's fraud rule. The system's job is to make the failure visible where staff will look, give the patient an easy fix, and never charge twice.
- The failed renewal appears in the Failed Payments tab with the processor's reason, and the membership shows the hold on the patient's billing page.
- Staff can retry from the row or send a payment-update message with a link; the patient updates the card and pays in the portal.
- On the integrated card rails the renewal engine sends a dunning notice by text and email once per attempt, at set hours, honoring opt-outs. Clinics on Stripe can also turn on an automatic retry schedule.
- A cards-expiring list shows cards that expire this month or next, plus expired cards an active plan still bills, and patients can get a monthly heads-up before the card dies.
- Every retry reconciles against the processor before charging, so a renewal cannot be collected twice.
Bundles, packs and installment plans
Not every recurring product is a membership. Prepaid bundles and packs sell a set of visits up front with an expiry, auto-deduct as visits complete, and send a reminder before unused units lapse. Installment plans split a larger program price into monthly charges that end after the last installment with no auto-renew. Both live in the same checkout as memberships and one-time charges, so a patient can buy a membership, a pack and a consult in one transaction.
Processors and terminals
Recurring billing runs on Stripe, NMI, TRX, PowerTranz and Authorize.net, which means a clinic can keep the merchant account it already has and the rates it already negotiated rather than moving everything to the EHR vendor's processor. Cloud card terminals handle in-office charges on TRX and Stripe. A per-clinic card surcharge, where it is legal, is shown on the receipt. Cash, check and outside payment methods are recorded as tenders so the ledger stays whole.
How the common EHRs compare
Based on each vendor's published help center and plan pages as of October 14, 2026, with sources below. Features and tiers change; verify with the vendor.
Scroll horizontally to compare all columns. Keyboard: focus the table region, then use the arrow keys.
| Platform | Recurring memberships | Notes from vendor materials |
|---|---|---|
| Moonshot EHR | Built in, base plan | Monthly, quarterly, yearly; included services; commitment terms; public join page; convert visit to membership; agreements; A/R and subscription reports; five processors |
| Jane | Built in on the Thrive plan | Memberships are admin-only; clients cannot buy one online; automatic card charging only through Jane Payments; each membership has an expiry and is re-sold for a new term |
| Practice Better | Built in on higher tiers | Recurring membership plans with included services; deposits and recurring plans are not on the lowest tier |
| Healthie | Built in | Recurring packages and programs with appointment credits that restart each period |
| Cerbo | Built in | Advertises subscription billing for membership models; detailed card-on-file and dunning behavior not published |
| Elation | Built in | Documents membership management with enrollment, self-enrollment, scheduled automatic billing and reporting |
| Hint Health | Separate platform | Membership management priced from about $275 per clinician per month on top of a separate EHR, plus card and ACH transaction fees |
What Moonshot does not do
No insurance claims, eligibility checks or ERA posting; this is a cash-pay billing system, and a clinic that bills payers needs a different tool for that side. Proration on upgrades is calculated on Stripe; other rails apply upgrades at the next cycle. Portal pause and cancel are requests for staff, not instant self-service. Automatic retry scheduling is a Stripe option that the clinic turns on. We would rather say these plainly than have you find them in month two.
Where Moonshot fits, honestly: if memberships are a side product and you already run on an EHR whose packages feature covers your needs, stay put. If memberships are the business, the items that matter are the ones generic billing lacks: included services per period, commitment terms the portal cannot waive, converting a paid visit without charging twice, agreements that freeze the price, and a Failed Payments tab someone actually watches. Those are in Moonshot EHR's base plan on the processor you already have. See the billing feature page or the pricing page.
Sources
Vendor materials checked October 14, 2026: Jane, Memberships FAQ and Setting up a membership; Practice Better, Creating client memberships and plan comparison; Healthie, Subscription services; Elation, Membership management; Hint Health pricing; Cerbo features. Competitor descriptions summarize vendor-published material; features, tiers and prices change, so confirm with each vendor. Card surcharging, automatic renewal terms and membership contract rules vary by state; confirm your own obligations with counsel. This guide is general information, not legal or financial advice.