
Text-to-Pay and Membership Billing Automation for a Massage Spa Franchise
Let's Connect
Overview
What we built
A 50-location massage and facial spa franchise was billing memberships on cards that quietly expired, with every failed draft meaning a phone call to read card numbers over the counter. We built a text-to-pay layer, and failed payments recovered without a call rose from 18% to 61%.
In plain terms: across the franchise's 50 locations, membership billing ran on cards that quietly expired without anyone noticing until a draft failed. Every failed draft meant a front desk phoning the member and reading card numbers back over the counter, an awkward exchange that also slowed down the queue for everyone waiting to check out after a treatment. Gift-card balances lived in a separate system entirely, and a failed payment that nobody managed to recover simply turned into an involuntary cancellation.
We implemented a text-to-pay and billing automation layer across the franchise. A failed membership draft now triggers a secure payment link by SMS, with retries running on an optimised schedule instead of a phone call, guests can settle a treatment from their phone before ever reaching the desk, and gift cards and memberships now share one stored-value ledger visible to every location's till. Failed payments recovered without a phone call rose from 18% to 61%, involuntary churn fell 27% within two quarters, average checkout time dropped from over 4 minutes to under 90 seconds, and 78% of text-to-pay links complete within 2 hours of being sent.
The Problem
Failed payments chased by phone
Membership billing across the franchise's 50 locations ran on cards on file, and those cards quietly expired without anyone noticing until a scheduled draft actually failed. When that happened, the only recovery process was a front desk calling the member and asking them to read their card number back over the counter.
That phone-based recovery slowed everyone down, not just the member being called. Checkout queues stretched after every treatment while staff tried to sort out a billing problem at the same desk guests were using to pay. Gift-card balances made things messier still, since they lived in a completely separate system from membership billing.
Without a reliable way to recover a failed draft, too many of them simply turned into involuntary cancellations, members lost not because they wanted to leave but because a card expired and nobody managed to reach them in time.
Cards quietly expiring
Membership cards on file expired without warning, and nobody knew until a scheduled draft actually failed at one of the 50 locations.
Recovery meant a phone call
The only way to recover a failed draft was a front desk phoning the member and reading card numbers back over the counter.
Slower checkout queues
Checkout queues stretched after every treatment as staff tried to resolve billing problems at the same desk guests were using to pay.
Gift cards, separate system
Gift-card balances lived apart from membership billing entirely, so staff had no single place to see what a guest was actually owed.
What it was costing them
Every failed draft that went unrecovered became an involuntary cancellation, a member lost to an expired card rather than a genuine decision to leave. Front-desk time went into phone calls instead of guests, checkout queues stretched after every treatment, and gift-card balances sitting in a separate system added yet another manual check to a process already running behind across all 50 locations.
The Solution
Text-to-pay billing automation
We implemented a text-to-pay and billing automation layer across all 50 locations. A failed membership draft now triggers a secure payment link sent straight by SMS, with retries running on an optimised schedule so recovery happens automatically instead of depending on a front desk finding time to call.
Guests can settle a treatment from their own phone before they ever reach the desk, so checkout stops being the moment a billing problem surfaces. Gift cards and memberships now share one stored-value ledger, visible to every location's till, so staff finally see a guest's full balance in one place.
Key decisions
Text a payment link, not a call
A failed membership draft now triggers a secure SMS payment link instead of a phone call, so recovery does not depend on staff finding the time to dial.
Retry on an optimised schedule
Retries run automatically on a schedule tuned to when a draft is most likely to succeed, rather than one attempt followed by a manual call.
Let guests pay from their phone
Guests can settle a treatment from their own phone before reaching the desk, moving checkout out of the queue entirely.
Unify gift cards and memberships
Gift cards and memberships now share one stored-value ledger visible to every location's till, replacing two separate systems with one balance.
Measurable Impact
What changed after launch
Failed membership payments recovered without a phone call rose from 18% to 61%, and involuntary churn fell by 27% across the franchise within two quarters, as expired-card failures turned into a text and a tap instead of a lost member.
Checkout got faster too: average front-desk time dropped from over 4 minutes to under 90 seconds per guest. Text-to-pay links work fast as well, with 78% completed within 2 hours of being sent.
Failed payment recovery
18% recovered without a phone call
61% recovered without a phone call
Membership churn
Involuntary churn from expired cards
Involuntary churn cut by 27%
Checkout time
Over 4 minutes at the front desk
Under 90 seconds at the front desk
Gift cards and memberships
Balances lived in a separate system
One stored-value ledger at every till
Headline results
Failed membership payments recovered without a phone call rose from 18% to 61%
Involuntary membership churn reduced by 27% across the franchise within two quarters
Average front-desk checkout time cut from over 4 minutes to under 90 seconds
78% of text-to-pay links completed within 2 hours of being sent
Tech & Tools Used
What powered the build
Every tool below earned its place in this engagement. Here is the part each one played.
Next.js
Powers the payment pages guests land on from a text-to-pay link, letting them settle a treatment from their phone before reaching the desk.
Node.js
Runs the billing automation service that detects a failed draft and decides when to trigger a payment link or a scheduled retry.
Stripe Billing
Handles the membership draft attempts and retries, and settles payments made through a text-to-pay link across all 50 locations.
Twilio SMS
Sends the secure payment link the moment a membership draft fails, replacing the front desk's phone call to the member.
PostgreSQL
Stores the stored-value ledger shared by gift cards and memberships, so every location's till reads from the same guest balance.
Redis
Holds retry schedules and link status so the system knows instantly whether a text-to-pay link has already been completed.
BullMQ
Schedules the optimised retry attempts for a failed draft, spacing them out rather than firing them all at once.
Docker
Packages the billing automation layer so it runs consistently across the franchise's environments as it scaled to all 50 locations.
Datadog
Monitors payment recovery and checkout performance in production, giving the team visibility across all 50 locations.
Ready to Build your Spa & Wellness Business with Text-to-Pay & Online Billing
Ask Byte
Ask Byte
Typically replies instantly
just Now
Hi! I'm OrganByte's assistant. How can I help you today?
AI-generated content may be incorrect

