HQ tier includes royalty calculation for franchisors: configure a rule once, and monthly statements generate automatically without manual reconciliation. Collection itself is still a manual step on your end — more on that below.
Set the royalty rule
HQ dashboard → Royalty → Rule. You can set one org-wide default rule, plus per-shop overrides (e.g. a lower rate for a founding franchisee).
- Basis — what the royalty is calculated against: Gross sales, Net sales, or Collected revenue. There isn't a separate set of checkboxes to include/exclude tips, tax, shipping, or restocking fees individually — you pick one of these three bases.
- Structure — Flat (one percentage), Fixed (a flat dollar amount per period), or Tiered (brackets, e.g. 6% on the first $50K, 4% above).
- Reporting period — Weekly or Monthly (there's no quarterly option).
- Floor and cap — an optional minimum royalty owed per period even on slow months, and an optional maximum cap.
- Early-payment discount / late-payment penalty — optional, applied on top of the base royalty depending on when the franchisee actually pays.
- Local marketing fund — a separate optional per-shop/territory marketing-spend requirement, distinct from the royalty itself.
Statement generation
For monthly-period orgs, statements for the prior month generate automatically on the 1st of the following month — no manual trigger needed. You (or your HQ team) can also generate or regenerate a period's statements on demand from HQ dashboard → Royalty, which is useful if you need to correct something after the automatic run.
The HQ-side statement detail page shows the full line-item breakdown (royalty, local marketing, national marketing, tech fee, credits) and the total due. The franchisee's own Reports → Royalties page shows a summary table per statement (gross, royalty, combined marketing, tech, due, paid, balance, status, due date) plus a separate credits section below — for the fully itemized version, HQ shares the statement detail view. There's no PDF or CSV export of a statement today (a PDF download button exists on the statement page but is marked "coming soon").
Sending statements + collection
A daily job emails any generated-but-unsent statements to the franchisee, with either a pay-now link or a note that HQ collects the amount directly, depending on how that shop is set up to pay.
Collection itself is manual on the franchisor side — there is no automatic charge or debit today, on any collection method:
- ACH pull — if a shop has ACH set up, HQ generates a NACHA file (Royalty → ACH setup) that your bank runs as a batch debit. SalesThumb builds the file; it doesn't submit it or pull funds itself.
- Card on file — HQ charges it manually.
- Invoice — franchisor sends an invoice, franchisee pays through the standard payment flow.
- QuickBooks — this only labels the statement "QuickBooks bill" for your own bookkeeping. SalesThumb does not push it to QuickBooks Online automatically — you record it there yourself. (Don't confuse this with the separate one-way QuickBooks Online sync at Settings → Integrations, which pushes *paid customer invoices*, not royalty statements.)
- Manual — franchisee pays by check or another off-platform method, and you record it.
Dispute flow
1. Today, disputing a statement is done from the statement's detail page — HQ dashboard → Royalty → [period] → [shop's statement] → "Raise dispute." The franchisee's own Reports → Royalties page shows every statement in summary but doesn't link out to the detail page yet, so a franchisee who wants to dispute a line needs to flag it to whoever manages your HQ dashboard (statement number + reason), who enters it from there. 2. That marks the statement DISPUTED and logs it to the audit trail. 3. On the HQ side, you review it on the same detail page and close it out one of two ways: Resolve dispute (a required resolution note) settles it back onto the statement's real payment-driven status — GENERATED, PARTIAL, or PAID, whichever actually matches what's been paid — for when the dispute doesn't hold up and the balance still stands. Waive (a logged reason) is the other path, for when it does hold up and you're forgiving the balance outright. Neither one recomputes a new total; if the underlying numbers genuinely need to change, regenerate the period's statements instead.
Correcting a mistake
Every one of the above is reversible from the same statement detail page — each correction requires its own typed reason and writes its own entry to the audit trail, so undoing something never looks like it just silently happened:
- Reopen dispute — undoes a Resolve dispute and puts the statement back to DISPUTED, with the original dispute reason preserved.
- Reverse waiver — undoes a Waive; the statement returns to its real balance, recalculated from the payments actually recorded against it.
- Void (on the statement's Payments recorded list) — reverses one mistaken payment by adding an offsetting negative entry next to it rather than editing or deleting the original, so both stay visible in the history. It corrects SalesThumb's own record and recalculates the statement total; it doesn't reverse a real bank transaction.
These correction tools use the same admin floor as everything else in this article — the org.manageRoyalty permission, which defaults to ORG_OWNER and ORG_ADMIN and can be extended by an org owner.
Tips
- Start simple — flat rate + monthly period. Tier the rate later if you need to incentivize growth.
- Spot-check statements — even with automatic generation, periodically open a few statements per quarter to catch any configuration drift.
- Document your basis choice in writing — the franchise agreement should specify whether royalty is computed on gross, net, or collected revenue; your SalesThumb rule should match that exactly.