Stop chasing royalty cheques. Close the month in one click.
Royalty collection at most franchises is a spreadsheet, a chase-list, and an awkward call on the 15th of every month. SalesThumb runs it on rails: every paid invoice in every shop is rolled up nightly, a monthly-close cron generates the statement on day 1, the ACH pull fires on day 7, and reconciliation lands in your HQ ledger automatically. Disputes route to a queue; corrections roll forward, never back. You see what every shop owes, what's collected, what's at risk — without opening a spreadsheet.
Launching soon — get early access.
Royalty + Marketing Fund · April 2026
Period closes Apr 30 · 5 shops · auto-generated from sales data
Royalty formula
Tiered brackets
- $0 – $30,0005.0%
- $30,001 – $60,0004.5%
- $60,001 +4.0%
Marketing fund
Collected alongside royalty · spent on network-wide ad campaigns
Processing fees collected
Visible to admin · auto-sweeps with Stripe Connect · application_fee_amount
Collection method
Statement preview · Houston · Memorial
STMT-APR26-001Period: Apr 1 – Apr 30, 2026
- Gross sales · Apr$78,420
- Royalty (tiered)$3,407
- Marketing fund (1.5%)$1,176
- Technology fee$240
- Credits applied−$185
Auto-debits via Stripe ACH on May 5, 2026
All shops · this period
| Shop | Gross | Royalty | Mkt | Total |
|---|---|---|---|---|
| Houston | $113,680 | $4,921 | $1,705 | $6,626 |
| San Antonio | $88,560 | $3,886 | $1,328 | $5,214 |
| Dallasreview | $75,520 | $3,298 | $1,132 | $4,430 |
| Austin | $62,240 | $2,801 | $933 | $3,734 |
| Fort Worth | $36,720 | $1,836 | $551 | $2,387 |
Network payout
Total collecting
$22,391
+21% vs March
Schedule
- Statements sentMay 1
- ACH auto-debitMay 5
- Funds settledMay 8
Matches to the penny
Every shop sees the same sales data this calc is built from. Reconciliation is automatic.
Features, zoomed in
The parts that actually move the needle.
Three capabilities built specifically for the day-to-day of a working shop.
Deep dive · 01
Monthly-close cron does the heavy lifting
On the 1st of every month, an Inngest cron walks every shop in the chain, sums paid invoices in the prior month by service category, applies the royalty rate from that shop's contract, and generates a branded PDF statement emailed to the franchisee + the HQ ledger. You don't kick anything off — when you walk in on the 1st, the close is done.
- Configurable cutoff day (some franchises close on the 28th)
- Per-shop rate overrides (legacy contracts get grandfathered)
- Re-run safe — duplicate runs detect and skip
- Statement PDFs land in the franchisee portal + are emailed
Monthly closeautomated
Inngest cron · royalty/monthly-close · 1st of month · 02:00 UTC
Cutoff day
1st of month
2 shops on the 28th
Default rate
6.0%
3 legacy overrides
Statement delivery
Portal + email
branded PDF
▸ walking 38 shops · period Apr 1 – Apr 30 · paid invoices only
✓ Phoenix · Desert Ridge $84,210 × 6.0% → $5,052.60 · PDF emailed
✓ Tampa · Westshore $61,480 × 5.0% (grandfathered) → $3,074.00 · PDF emailed
↷ Denver · Cherry Creek statement 2024-04 already exists — duplicate run, skipped
✓ Chicago · Lincoln Park $47,932 × 6.0% → $2,875.92 · PDF emailed
… 34 more shops · summed by service category
done · 37 statements generated · 1 skipped · HQ ledger updated
Nothing to kick off. Walk in on the 1st and the close is already done — statements out, ledger current.
Deep dive · 02
ACH pull, not a chase email
Stripe Connect attaches each franchisee's bank account at signup. On the configurable pull day (default: day 7), SalesThumb initiates an ACH debit for the statement total. Successful pulls auto-reconcile against the statement; failures land in the dispute queue with the Stripe error reason and a one-tap retry.
ACH collection · April statementsno chase emails
Stripe Connect · banks attached at signup · pull day 7 (configurable)
Collected this cycle
35 of 38 reconciled · 2 processing · 1 failed
$128,410 / $136,520
Phoenix · Desert Ridge
Chase Business ····4821 · Pulled May 7 · matched statement 2024-04
Tampa · Westshore
Wells Fargo ····3306 · Pulled May 7 · matched statement 2024-04
Chicago · Lincoln Park
BMO Harris ····9174 · Debit initiated May 7 · settles in 1–2 days
Seattle · Bellevue
KeyBank ····5588 · R01 · Insufficient funds → dispute queue
Austin · South Lamar
Frost Bank ····2247 · Pulled May 7 · matched statement 2024-04
Failures never need a chase email. They land in the dispute queue with the Stripe reason and a one-tap retry.
1 in queue · Seattle · BellevueWhat's included
The full capability list.
Everything that ships on day one. No feature-gating surprises inside a single plan.
- Nightly revenue rollup per shop
- Monthly-close cron with branded PDF statements
- ACH pull via Stripe Connect (configurable day-of-month)
- Tier-based royalty rates (per service category)
- Marketing fund + tech fee + national ad fund line items
- Dispute queue with audit trail
- Aging report — 0/30/60/90 buckets per shop
- Late-fee policy with auto-apply on day-X
See every angle
A tour of the screens
Every meaningful view, the path through it, and the moments that matter — so you know exactly what you're buying.
Statement PDF (franchisee view)
Branded with your franchise logo.
Itemized by service category. Bank-account on file shown. Pull date visible.
ApexShine Auto Care
Franchise royalty statement
Statement 2024-04
Period Apr 1 – Apr 30 · issued May 1
Franchisee
Sample Shop LLC
Tampa · Westshore
Royalty rate
5.0%
grandfathered · 2019 agreement
| Service category | Paid inv. | Gross | Royalty |
|---|---|---|---|
| Window tint | 86 | $24,360.00 | $1,218.00 |
| Ceramic coating | 31 | $19,840.00 | $992.00 |
| Paint protection film | 12 | $13,120.00 | $656.00 |
| Detailing add-ons | 44 | $4,160.00 | $208.00 |
| Total royalty due | 173 | $61,480.00 | $3,074.00 |
Bank account on file
Wells Fargo Business ····3306 · ACH authorized
ACH pull date
May 7
No action required — $3,074.00 will be debited automatically on May 7 · also available in your franchisee portal
ACH dispute queue
Failed pulls with Stripe reason.
One-tap retry or escalate. Aging buckets at the top.
ACH dispute queue5 open · $14,949.80
Failed pulls · Stripe return reason on every row · one-tap retry
0–7 days
2
8–14 days
2
15–30 days
1
Recovered · 30d
12
| Shop | Stripe reason | Amount | Failed | Actions |
|---|---|---|---|---|
Seattle · Bellevue Statement 2024-04 · 1 retry | R01Insufficient funds | $4,118.25 | May 7 · 5d | |
Boise · Meridian Statement 2024-04 · no retries | R02Account closed | $2,304.10 | May 7 · 5d | |
Nashville · Berry Hill Statement 2024-04 · 1 retry | R29Corporate customer advises not authorized | $3,866.40 | May 8 · 4d | |
Omaha · West Dodge Statement 2024-04 · no retries | R09Uncollected funds | $1,942.75 | May 9 · 3d | |
Tucson · Oro Valley Statement 2024-03 · 3 retries | R01Insufficient funds | $2,718.30 | Apr 22 · 20d |
Who it's for
Built specifically for…
- Franchisors collecting royalties monthly
- Multi-location operators with internal cost allocation
- Master-franchisees managing sub-franchisee billing
What it replaces
The old way…
- Spreadsheet chasing royalty cheques
- QuickBooks manual invoicing per shop
- ServiceTitan + manual reconciliation
How it works
Set it up once. Run it forever.
- 1
Configure your rate card
Per service category, per shop tier, with legacy overrides. Marketing fund + national ad fund + tech fee land as separate line items.
- 2
Cron runs the close
Day 1 of the month, every shop's prior-month revenue is rolled up and a branded statement is generated. You review the dispute queue (usually empty).
- 3
ACH pulls + reconciles
Day 7, Stripe Connect debits the franchisee bank. Successful pulls reconcile automatically; failures land in a queue with one-tap retry.
How a shop actually uses this
A 14-location PPF franchise was averaging 11 days to collect from each shop and writing off $4-6k/mo to disputes that fell through the cracks. Switching to SalesThumb's royalty engine dropped average collection time to under 36 hours and surfaced $48k of leakage in the first quarter — most of it from one shop whose POS was double-counting refunds.
Questions
Good to know.
- What if a franchisee disputes the statement?
- The statement PDF is itemized down to the invoice level. Disputes land in a queue tied to the disputed line; you can adjust + re-issue with one click, and the adjustment rolls forward to the next month's close (never backdated, which avoids audit pain).
- Can we charge different rates by service category?
- Yes — rates are per service category, per shop tier. PPF might be 6%, ceramic 7%, detailing 4%. Marketing fund + national ad fund + tech fee are configured separately as flat or percentage-of-revenue.
- What if a shop's bank account fails the ACH pull?
- It lands in the dispute queue with the Stripe error reason. You can retry instantly, request a new bank account from the franchisee via a tokenized link, or escalate to wire/cheque. Late-fee policy auto-applies on day-X if configured.
- Does this work for tech-fee-only chains (not full royalty)?
- Yes. Turn off the royalty calculation and just configure a flat tech fee per shop per month. The cron still runs + sends statements + pulls ACH — you just don't need the revenue rollup.
Fits in with
Works with your stack
Stripe Connect
Pulls ACH from franchisee bank accounts
QuickBooks Online
Syncs royalty income to HQ general ledger
Inngest
Schedules monthly-close + daily-send crons
Explore more
Pairs well with
FDD Compliance
Server-enforced brand-color locks, pricing floors, required service catalogs, mystery-shop scoring, and a tamper-proof compliance ledger — the controls your FDD already promises, finally enforced in software.
Marketing Fund
Pool tracking by region and national, co-op approvals with receipts + ROI, per-shop spend visibility, and the audit trail your franchisees keep asking for.
Multi-Location HQ
Whether you're a solo operator or a franchisor with hundreds of locations, every shop rolls up into one HQ view with consolidated KPIs, centralized catalogs, and push-to-shop pricing and templates.
Reports
Revenue, installer leaderboard, job margin, booking conversion, SMS-to-customer response. Not a thousand charts — the 10 you'll check every Monday.
Get royalty automation first at launch.
Launching soon — join the waitlist for early access. At launch: 30-day free trial with full access to every feature on this page, no credit card.
Launching soon — get early access.