How to Build Franchise Management Software
Build franchise management software starting with a franchisee directory, a royalty calculation engine that executes per-agreement formula types stored as versioned JSONB, royalty collection via ACH, a compliance audit module, territory management, and a performance dashboard. RaftLabs builds multi-tenant SaaS platforms with complex calculation engines of this type. The MVP takes 15 to 20 weeks and costs $150K to $250K.
Key Takeaways
- Store royalty formula terms as versioned JSONB per franchise agreement. Different franchisees signed on different rate schedules. The calculator must execute the correct formula for each franchisee based on their agreement version, not a global rate.
- Royalty calculations require three formula types: flat percentage, tiered rates with brackets, and minimum monthly floor. Implement all three as configurable expressions. A 10-year-old franchise system can have franchisees on all three simultaneously.
- Any change to a rate schedule creates a new agreement version with an effective date. The calculator selects the version valid for the reporting period, not the current version. This prevents retroactive calculation changes.
- The MVP covers franchisee directory, royalty calculation and collection, basic compliance audit, territory management, and performance dashboard. Full platform adds GIS territory mapping, franchisee self-service portal, LMS integration, and renewal workflows.
- MVP build costs $150K to $250K over 15 to 20 weeks. Full platform runs $300K to $490K over 25 to 34 weeks. Running costs are $3K to $8K per month.
A franchisor with 200 locations needs to collect royalties accurately every month, audit brand compliance quarterly, and benchmark performance across territories. When royalty calculations run in spreadsheets, disputes emerge because Franchisee A is on a flat 5% rate, Franchisee B is on a tiered structure from a 2020 agreement, and Franchisee C has a minimum monthly floor from a 2023 deal.
According to the International Franchise Association, there are over 790,000 franchise establishments in the US generating $840 billion in economic output annually. Royalty collection errors and compliance failures are the two most common operational reasons franchisors lose franchisees to disputes. A single shared spreadsheet cannot hold all three calculation rules simultaneously without errors. When audits run on paper, corrective action plans get lost between the field and the home office. The franchisor's revenue and brand depend on software that handles both without manual intervention.
What franchise management software does
"The royalty calculation engine is where most franchise management software fails. Franchisors need per-agreement formula execution, not a global percentage rate. A system that can't honor heterogeneous rate schedules will generate disputes from day one." - Alicia Miller, Managing Director at Catalyst Insight Group and former Franchise Operations Director, in Entrepreneur Magazine's franchise technology series.
Franchisee directory with territory mapping. Each franchisee record stores opening date, franchise agreement reference, territory boundaries, contact information, and agreement status (active, renewal pending, terminated). Territory boundaries are stored as geographic polygons and displayed on a map for visual overlap detection.
Royalty calculation engine. The engine reads each franchisee's gross sales submission for the period, applies the formula stored in their franchise agreement (flat rate, tiered brackets, or minimum monthly floor), adds the marketing fund contribution, and produces a royalty statement. The calculation runs per franchisee, not from a global rate setting.
Royalty collection and statement generation. Statements are generated as PDFs and emailed to franchisees. Collection is triggered via ACH pull from the franchisee's linked bank account. The system tracks status per period: pending, collected, disputed, waived.
Brand standards compliance audit module. Auditors complete a digital checklist in the field. Each item is pass or fail with optional photo attachment. Failed items generate a corrective action plan with an assigned due date. The system tracks whether the corrective action was completed before the next audit.
Performance benchmarking dashboard. Franchisors see gross sales, royalty rate, unit economics, and customer satisfaction scores across all locations side by side. Filter by territory, region, franchise agreement vintage, or performance tier.
Operations manual distribution and acknowledgment tracking. Upload manual versions and track which franchisees have acknowledged the current version. Send automated reminders to locations with outstanding acknowledgments.
New franchisee onboarding workflow. A checklist-based workflow tracks each step from signed agreement to opened location: entity formation, location approval, build-out milestones, training completion, and opening day sign-off.
MVP vs. full platform
MVP features (15 to 20 weeks, $150K to $250K):
Franchisee directory with agreement reference and contact info
Royalty calculation engine supporting flat, tiered, and minimum formula types
Royalty collection via ACH with statement generation
Basic compliance audit with digital checklist and corrective action tracking
Territory management with boundary storage
Performance benchmarking dashboard
Full platform additions (25 to 34 weeks total, $300K to $490K):
Territory mapping with GIS polygon editing and overlap detection
Franchisee self-service portal (submit gross sales, view statements, access manuals)
Learning management integration for required training tracking
Approved supplier directory with vendor contact information
Franchise agreement renewal and transfer workflow
Multi-level reporting for sub-franchisors (area developers, master franchisees)
Core architecture
The franchisees table holds the franchisee record: location, territory_id, opening_date, agreement_id, and status.
The franchise_agreements table stores the agreement reference. The agreement_versions table holds the versioned rate schedule as JSONB:
{
"formula_type": "tiered",
"rate_schedule": [
{ "gross_sales_ceiling": 300000, "rate": 0.055 },
{ "gross_sales_ceiling": null, "rate": 0.048 }
],
"minimum_monthly": null,
"marketing_fund_rate": 0.02,
"effective_date": "2020-06-01"
}
A flat rate agreement stores formula_type: "flat" and a single rate in rate_schedule. A minimum floor agreement stores formula_type: "minimum" with a minimum_monthly value.
The royalty_records table stores one row per franchisee per reporting period: franchisee_id, period_start, period_end, gross_sales_reported, agreement_version_id, royalty_amount, marketing_fund_amount, status.
The compliance_audits table stores the audit header. The audit_checklist_items table stores one row per checklist item with columns: audit_id, item_name, result (pass/fail), photo_url, corrective_action, due_date, completed_at.
The hardest technical challenge
Royalty calculation with heterogeneous agreement terms is where franchise management software breaks down when built as a simple percentage-of-sales calculator. A Franchise Business Review survey found that royalty disputes are the number-one source of franchisor-franchisee conflict, cited by 38% of franchisees as a recurring operational friction.
A franchise system that has been operating for 10 years has franchisees on multiple rate schedules. Franchisee A, who signed in 2015, has a flat 5% royalty. Franchisee B, who signed in 2020, has tiered rates: 5.5% on the first $300K of gross sales, 4.8% above. Franchisee C, who signed in 2023, has a minimum monthly royalty of $2,500 regardless of sales volume. If the franchisor runs a mid-year rate renegotiation with a group of franchisees, some of those franchisees now have a fourth structure effective on a specific date.
A system that stores a single royalty rate in a settings panel and applies it to all franchisees cannot handle this. The consequences are under-collection from franchisees on higher rates and over-collection from franchisees on lower rates, both of which generate disputes.
The correct approach:
- Store the royalty formula as a versioned JSONB structure per franchise agreement, not as a global setting.
- Implement three calculation functions:
calculateFlat(grossSales, rate),calculateTiered(grossSales, rateSchedule), andcalculateMinimum(grossSales, rate, minimumMonthly). - The royalty calculator reads
formula_typefrom the agreement version and routes to the correct function. - To find the correct agreement version for a reporting period, query:
SELECT * FROM agreement_versions WHERE franchisee_id = $1 AND effective_date <= $2 ORDER BY effective_date DESC LIMIT 1where$2is the period end date. - Any rate change creates a new
agreement_versionsrow with a neweffective_date. The existing row is never updated. Historical calculations are reproducible because theroyalty_recordstable stores theagreement_version_idused for each period.
This approach handles mid-year rate changes correctly: periods before the effective date use the old version, periods after use the new version. It also handles disputes because the franchisor can show exactly which agreement version was used for any historical royalty calculation.
Add an audit log table that records every recalculation with the operator who triggered it, the reason, and the before/after amounts. Disputes get resolved with this log rather than with email threads.
Build costs and timeline
MVP (15 to 20 weeks):
$150,000 to $250,000 total
Team: 1 senior backend engineer (royalty engine and ACH integration), 1 frontend engineer, 1 part-time QA
Delivers: franchisee directory, royalty calculation and collection, compliance audit, territory management, performance dashboard
Full platform (25 to 34 weeks total):
$300,000 to $490,000 total
Team adds: 1 additional engineer for GIS territory mapping, 1 for franchisee self-service portal
Delivers: all MVP features plus GIS mapping, self-service portal, LMS integration, supplier directory, renewal and transfer workflows
Running costs: $3,000 to $8,000 per month. Covers hosting, database, Stripe ACH transaction fees, S3 for document storage, SendGrid for royalty statements, and Mapbox for territory visualization. Scales with franchisee count and ACH transaction volume.
Build vs. buy
FranConnect: $200 to $500 per franchisee per month. The leading franchise management platform. Covers royalty collection, compliance, and franchisee communications. At 50 locations, that is $120,000 to $300,000 per year. At 200 locations, it is $480,000 to $1.2M per year. The royalty engine handles standard rate structures but requires manual configuration for complex tiered or minimum-floor agreements.
Franchisor HQ: Mid-market pricing, positioned for growing franchise systems. Better onboarding workflow and franchisee communication tools than FranConnect at lower price points. Less flexibility on royalty formula complexity.
ServiceMinder: Built for home services franchises (cleaning, restoration, landscaping). Strong on job scheduling and dispatch. Royalty collection is built in. Not suited for food service, retail, or mixed-service franchise models.
Salesforce with custom development: Enterprise-grade CRM as the base, with custom objects and flows for royalty calculations. Requires significant Salesforce configuration and ongoing admin overhead. Total cost of ownership is high. Used by the largest franchise systems that already have Salesforce organization-wide.
Build when the system has 50 or more locations and per-franchisee SaaS fees become significant, when royalty agreement terms are complex enough that existing platforms require manual workarounds, or when the franchisor wants to own the royalty calculation engine and audit trail on their own infrastructure.
Tech stack
Backend: Node.js with PostgreSQL. JSONB for royalty formula storage per agreement version. The royalty calculation runs as a standalone function that takes gross sales and an agreement version record and returns royalty amount and marketing fund amount. It can be unit-tested in isolation without a database connection.
Frontend: React. The performance benchmarking dashboard is the most data-dense component: sortable table with gross sales, royalty collected, royalty rate, and trend indicators per franchisee. Compliance audit interface is a mobile-optimized checklist form for field auditors.
Payments: Stripe for ACH pull payments from franchisee bank accounts. Stripe's ACH debit API handles the bank account verification and debit authorization flow. Royalty statements are generated as PDFs and attached to the Stripe payment record.
File storage: AWS S3 for operations manual versions, audit photos, and franchise agreement documents. Signed URLs for document delivery to franchisees.
Email: SendGrid for royalty statement delivery, compliance audit notifications, corrective action reminders, and manual acknowledgment requests.
Maps: Mapbox or Google Maps Platform for territory boundary visualization and overlap detection. Territory polygons are stored as PostGIS geometry columns in PostgreSQL, enabling spatial queries for overlap detection between proposed and existing territories.
Database migrations: Each agreement version change is an INSERT, never an UPDATE. The agreement_versions table is append-only. Royalty records reference agreement_version_id so any historical calculation is fully reproducible.
RaftLabs has built multi-tenant SaaS platforms with complex calculation engines, audit trails, and per-agreement business logic. If you're scoping franchise management software, one call is enough to validate the royalty engine design and scope Phase 1.
Frequently asked questions
- Royalty calculation across heterogeneous agreement terms. A franchise system operating for 10 years has franchisees on multiple rate schedules from different signing dates. The calculation engine must execute the correct formula per franchisee from their stored agreement terms, not a global setting. This requires storing royalty formulas as versioned JSONB per agreement and selecting the version valid for the reporting period.
- Store a formula_type field per agreement: flat, tiered, or minimum. For flat, apply a single percentage to gross sales. For tiered, apply bracket rates: 5.5% on first $300K, 4.8% above. For minimum, calculate the percentage result and apply the floor if it comes out lower. Implement each as a separate calculation function. The calculator reads formula_type and routes to the correct function.
- Any update to a franchisee's rate schedule creates a new agreement_version record with an effective_date. The royalty calculator queries for the agreement version where effective_date is less than or equal to the period end date, ordered by effective_date descending, and takes the first result. Rate schedule updates never overwrite historical versions.
- Each audit record stores the audit date, auditor name, location, a checklist of brand standard items with pass/fail per item, photos or document attachments, and a corrective action plan with due dates if any items fail. The system sends reminders when corrective action deadlines approach and tracks whether the action was completed before the next scheduled audit.
- Build when the franchise system has 50 or more locations and the per-franchisee SaaS fees become significant, when royalty agreement terms are complex enough that existing software requires manual overrides, or when the franchisor wants to own the calculation engine and audit trail without depending on a third-party platform. FranConnect at $200 to $500 per franchisee per month adds up to $120K to $300K per year at 50 locations.
Ask an AI
Get an instant summary of this post from your preferred AI assistant.
Related articles

How to Build Pool Service Management Software
Pool service runs on weekly routes, chemical readings, and recurring billing. Off-the-shelf tools cost $75–$125/month. A custom platform costs $80K–$140K and makes sense once you are running 500+ accounts or a franchise that needs branded customer apps and custom chemical system support.

How to Build a Community Platform Like Circle.so: Architecture for Membership Businesses
Circle.so charges communities up to $399 per month plus a 4% transaction fee. For media companies, professional associations, and B2B SaaS teams with 1,000+ members, that math inverts fast. Here is how to build a branded community platform, what it costs, and when custom wins.

How to Build an App Like Toast: POS Architecture, Kitchen Display Systems, and What Restaurant Tech Needs
Building a Toast-like restaurant management system costs $70,000–$130,000 and takes 16–20 weeks. Here is what you actually need to build, what it costs per surface, and who should consider doing it.
