Music Store Management Platform
Licensing, Module Structure & Pricing
Version 1.0 | Draft
# 1. Licensing Philosophy
The platform offers two fundamentally different ownership models depending on deployment type. Self-hosted customers can own their software outright — pay once, use forever. SaaS customers subscribe to a hosted service. This distinction maps cleanly to how customers think about each deployment type.
Self-Hosted
SaaS
Model
Perpetual License
Subscription
Payment
One-time upfront per module
Monthly or annual recurring
Software access
Forever — software never stops working
While subscription is active
Updates
While maintenance is active
Always included
Support
While maintenance is active
Always included per plan tier
Hosting
Customer's own hardware
Vendor managed on AWS
Best for
Stores that want ownership, AIM migrants, IT-managed
Stores that want zero IT burden, cloud-first
# 2. Module Structure
The platform is built around a core that is always included, with optional modules that unlock additional functionality. Each module is licensed independently — stores pay only for what they use. Module licenses are perpetual for self-hosted customers and included in subscription tiers for SaaS customers.
## 2.1 Core (Always Included)
Core is included with every license at no additional cost. It is never disabled, never expires, and requires no ongoing payment. A store can always process sales even if maintenance lapses or a subscription expires.
CORE — Always Included
Point of Sale — cash, card present, card keyed, account charge
Basic inventory — products, categories, stock levels, low stock alerts
Customer management — accounts, contacts, basic history
Cash drawer — sessions, denominations, over/short tracking
User accounts and role-based access control
Basic sales reporting — daily, weekly, monthly totals
Invoice and receipt printing
One payment processor module required (PAY-STRIPE or PAY-GP)
## 2.2 Licensed Modules
Module ID
Description
Typical User
MOD-RENTALS
Instrument rentals — month-to-month, rent-to-own, short-term, lease purchase. Rental fleet inventory, deposit tracking, return workflow.
Most music stores
MOD-LESSONS
Lesson scheduling — instructors, enrollments, schedule slots, attendance, makeup credits, lesson billing.
Stores offering lessons
MOD-REPAIRS
Repair ticket management — intake, diagnosis, estimates, approval, labor and parts tracking, customer notification.
Most music stores
MOD-BATCH
Batch repairs for schools and institutions — bulk intake, group approval, batch invoicing. Requires MOD-REPAIRS.
School music dealers
MOD-DELIVERY
Delivery and chain of custody tracking — pickup scheduling, per-instrument condition, signature capture. Requires MOD-BATCH.
School music dealers
MOD-ACCOUNTING
Journal entry generation, chart of accounts, QuickBooks CSV export, AR aging, deferred revenue tracking.
Stores needing accounting
MOD-BILLING
Advanced billing management — billing date changes, proration, consolidated family billing, split billing, bulk date changes.
Stores with lessons/rentals
MOD-MOBILE
iOS convention app — mobile POS, Bluetooth Terminal, customer lookup, inventory check, offline sync.
Convention sellers
MOD-PORTAL
Customer self-service portal — lesson billing management, repair status tracking, invoice history, online payment.
Customer-facing stores
MOD-SCHOOL
School and district management — district lists, instrument categories, school contacts, school-specific rental packages.
School music dealers
MOD-MULTI
Multi-location support — additional store locations, cross-location inventory visibility, consolidated reporting.
Multi-location stores
MOD-API
API access — REST API for third-party integrations, webhooks, data export. Rate limited by tier.
Technical integrations
MOD-GIFTCARD
Gift cards and store credits — physical and digital gift cards, store credit balances, redemption at POS, balance tracking.
Stores wanting gift card revenue
MOD-LAYAWAY
Layaway and payment plans — item reservation with deposit, scheduled payments, hold management.
Stores with high-value instruments
## 2.3 Payment Processor Modules
Exactly one payment processor module is required. The store uses their own processor account and credentials — the platform does not handle merchant accounts or transaction fees.
Module ID
Description
Notes
PAY-STRIPE
Stripe integration — Terminal (WiFi + Bluetooth), Elements for keyed entry, Subscriptions, Webhooks, Card Updater.
Recommended default
PAY-GP
Global Payments integration — Terminal hardware, recurring billing, tokenization, Decline Minimizer. Supports token import from AIM.
For GP stores
Additional processor modules may be added in future releases. The payment abstraction layer architecture supports adding new processors without changes to business logic.
## 2.4 Module Dependencies
Module
Requires
MOD-BATCH
MOD-REPAIRS — batch repairs extend individual repair functionality
MOD-DELIVERY
MOD-BATCH — delivery tracking is part of the batch repair workflow
MOD-SCHOOL
MOD-RENTALS + MOD-BATCH — school module extends both
MOD-BILLING
MOD-RENTALS or MOD-LESSONS — billing management requires at least one recurring billing module
MOD-PORTAL
One of MOD-RENTALS, MOD-LESSONS, or MOD-REPAIRS — portal surfaces these to customers
MOD-MULTI
None — can be added to any configuration
MOD-API
None — can be added to any configuration
MOD-GIFTCARD
None — can be added to any configuration
MOD-LAYAWAY
None — can be added to any configuration
# 3. Self-Hosted — Perpetual Licensing
## 3.1 Core License
The core license is free. There is no charge for the base POS, inventory, customer management, cash drawer, and basic reporting functionality. The store pays for modules they need on top of core.
## 3.2 Module Pricing
Module
License
Maintenance/yr
Notes
MOD-RENTALS
$600
$120
Most purchased module
MOD-LESSONS
$600
$120
MOD-REPAIRS
$400
$80
MOD-BATCH
$400
$80
Requires MOD-REPAIRS
MOD-DELIVERY
$300
$60
Requires MOD-BATCH
MOD-ACCOUNTING
$500
$100
MOD-BILLING
$400
$80
Requires MOD-RENTALS or MOD-LESSONS
MOD-MOBILE
$600
$120
iOS app for conventions
MOD-PORTAL
$400
$80
Customer self-service
MOD-SCHOOL
$500
$100
Requires MOD-RENTALS + MOD-BATCH
MOD-MULTI
$500/loc
$100/loc/yr
Per additional location — see section 3.6 for user/location/terminal pricing
MOD-API
$400
$80
REST API access
MOD-GIFTCARD
$300
$60
Gift cards & store credits
MOD-LAYAWAY
$300
$60
Layaway & payment plans
PAY-STRIPE
$300
$60
Stripe integration
PAY-GP
$300
$60
Global Payments integration
## 3.3 Common Bundle Examples
Bundle
Modules
License Total
Maintenance/yr
Repair Shop
REPAIRS + PAY
$700
$140/yr
Standard Store
RENTALS + LESSONS + REPAIRS + ACCOUNTING + BILLING + PAY
$2,800
$560/yr
School Dealer
Standard + BATCH + DELIVERY + SCHOOL + MOBILE
$4,600
$920/yr
Full Platform
All modules
$5,700
$1,140/yr
Full Platform Bundle
All modules (bundled)
$4,500
$900/yr — 21% saving
## 3.6 User, Location & Terminal Pricing (Self-Hosted)
In addition to module licenses, self-hosted customers purchase capacity licenses for users, locations, and terminals. The core license includes a starter allocation. Additional capacity is purchased as add-ons.
### Included with Core License
- 5 users (staff accounts)
- 1 location
- 2 terminals (desktop app installs)
### Additional Capacity Pricing
Capacity | Price | Maintenance/yr | Notes
Additional user (5-pack) | $200 | $40/yr | Staff accounts — customers are always unlimited
Additional location | $500 | $100/yr | Own inventory, transactions, cash drawer
Additional terminal (5-pack) | $250 | $50/yr | Desktop app installs
### Web UI Access
Web UI access (admin panel) is included for all licensed users at no additional cost. The web UI provides management, reporting, scheduling, and configuration capabilities. It does not include POS terminal, card reader hardware integration, or cash drawer operations — those require the desktop app (terminal license).
### Enforcement
- User creation blocked when at limit — admin shown upgrade prompt with pricing
- Location creation blocked when at limit — same upgrade prompt
- Desktop app shows "terminal limit reached" on first launch if no seats available — links to purchase
- Web UI never blocked — always available for licensed users
- All limits checked at API level — cannot be bypassed by client
## 3.4 Maintenance Policy
- Maintenance is optional — software works forever without it
- Maintenance includes: all software updates, bug fixes, new features, support access
- Without active maintenance: software runs on last version at maintenance lapse date
- Version cap: lapsed maintenance locks to the major version active at lapse
- Newer major versions require active maintenance to install
- Maintenance can be renewed at any time at current pricing — no penalty for lapsing
- Re-activating lapsed maintenance does not back-bill for the lapsed period
- Security patches distributed free regardless of maintenance status — safety is non-negotiable
## 3.5 Version Cap Behavior
Example: Store purchases license — maintenance active Platform releases v1.0, v1.5, v2.0, v2.3 Store updates through v2.3 while maintenance active Maintenance lapses — store is on v2.3 Platform releases v3.0 with new features Store experience: v2.3 continues to work — forever v3.0 shows in update checker as available Update blocked: 'Renew maintenance to upgrade to v3.0' [Renew Maintenance] button links to purchase Security patch v2.3.1 released: Applied automatically regardless of maintenance status
# 4. SaaS — Subscription Pricing
SaaS subscriptions bundle modules into tiers for simplicity. The store always runs the latest version and support is always included. No perpetual ownership — access continues while subscription is active. Each tier includes a base allocation of users, locations, and terminals.
## 4.1 Subscription Tiers
Plan
Monthly
Annual
Modules Included
Included Capacity
Starter
$99/mo
$990/yr
CORE + one PAY module + basic support
5 users, 1 location, 2 terminals
Standard
$249/mo
$2,490/yr
CORE + RENTALS + LESSONS + REPAIRS + ACCOUNTING + BILLING + PORTAL + one PAY
10 users, 1 location, 5 terminals
Professional
$349/mo
$3,490/yr
All Standard modules + BATCH + DELIVERY + SCHOOL + MOBILE + API + priority support
25 users, 3 locations, 10 terminals
## 4.2 SaaS Add-Ons
Add-On
Price
Notes
Additional location
+$99/mo
Per additional store — MOD-MULTI included
Additional users (5-pack)
+$29/mo
Staff accounts beyond plan allocation
Additional terminals (5-pack)
+$19/mo
Desktop app installs beyond plan allocation
Second PAY module
+$29/mo
Run two processors simultaneously during migration
Priority support upgrade
+$49/mo
4hr response + emergency POS-down line
## 4.3 Subscription to Perpetual Conversion
SaaS customers who decide they want ownership can convert to a self-hosted perpetual license. Subscription payments made to date are credited toward the perpetual license price.
Example: Standard SaaS customer converts after 18 months Paid to date: 18 x $249 = $4,482 Standard bundle perpetual: $4,500 Credit applied: $4,482 Balance due: $18 + first year maintenance ($560) Result: Customer owns software outright 18 months of SaaS fees count toward ownership Effectively: renting to own
- Conversion available at any time — no minimum subscription period
- Credit applied is total subscription fees paid, capped at perpetual license price
- Customer chooses which modules to own — must match or subset of current SaaS modules
- Maintenance starts fresh at conversion date
# 5. License File Technical Design
## 5.1 License File Format
License files are JSON documents cryptographically signed with the vendor's Ed25519 private key. The software verifies signatures using the embedded public key. Tampering with the JSON payload invalidates the signature and the license is rejected.
{ "license_id": "LIC-2024-00142", "license_type": "perpetual", "company_id": "uuid-here", "company_name": "Springfield Music Co.", "issued_to": "admin@springfieldmusic.com", "issued_at": "2024-09-01T00:00:00Z", "maintenance_expires": "2025-09-01T00:00:00Z", "software_version_cap": "2.x", "modules": [ "CORE", "MOD-RENTALS", "MOD-LESSONS", "MOD-REPAIRS", "MOD-ACCOUNTING", "MOD-BILLING", "PAY-GP" ], "limits": { "users": 15, // staff accounts (customers unlimited) "locations": 1, // physical store locations "terminals": 5 // desktop app installs }, "signature": "base64-ed25519-signature-here"}
## 5.1.1 License Limits — Revenue Model
The `limits` object in the license file controls three independent licensing axes. Each is a separate revenue line.
Limit | What It Controls | Enforcement
`users` | Staff/employee accounts — people who log into the system. A user can access any location within their company (not locked to one location). Customer accounts (the `account` table) are unlimited and never counted. | Block user creation when `count(users where company_id = X) >= limits.users`
`locations` | Physical store locations. Each location has its own inventory, transactions, and cash drawers. Adding a new location requires a location license. | Block location creation when `count(locations where company_id = X) >= limits.locations`
`terminals` | Installed instances of the desktop app (Electron). Each terminal registers with the license server on first launch and consumes a terminal seat. | Block terminal registration when active terminal count >= `limits.terminals`
### Web UI vs Desktop App (Terminal)
The web UI (admin panel) is always available to licensed users and does not consume a terminal license. However, the web UI has restricted capabilities compared to the desktop app:
Capability | Desktop App (Terminal) | Web UI
POS transactions | Yes | No — requires Stripe Terminal hardware
Stripe Terminal card reader | Yes | No — hardware integration requires desktop
Cash drawer integration | Yes | No — hardware
Repair technician work screen | Yes | View only
Inventory receiving / adjustments | Yes | Yes
Customer / account management | Yes | Yes
Reporting and dashboards | Yes | Yes
Settings and admin | Yes | Yes
Lesson scheduling and notes | Yes | Yes
The web UI is positioned as a management and reporting tool. The desktop app is the full operational client. This creates natural upsell pressure — a store with 3 registers needs 3 terminal licenses, but the owner checking reports from home uses the web UI at no extra terminal cost.
## 5.2 Signature Scheme
- Algorithm: Ed25519 — fast, small signatures, strong security
- Private key held by vendor only — never distributed, never in source code
- Public key embedded in application binary at build time
- Signature covers entire JSON payload excluding the signature field itself
- License file delivered as .lic file — plain JSON, human readable
- Offline verification — no network call required to validate license
// License verification pseudocodefunction verifyLicense(licenseFile) { const { signature, ...payload } = JSON.parse(licenseFile) const isValid = ed25519.verify( EMBEDDED_PUBLIC_KEY, JSON.stringify(payload), signature ) if (!isValid) throw new Error('Invalid license') if (payload.modules.includes('MOD-RENTALS')) enableRentals() // ... enable each licensed module}
## 5.3 SaaS License Delivery
- SaaS license generated automatically on subscription creation or change
- Pushed to store instance on login and refreshed daily
- Module changes take effect within 24 hours — no manual file handling
- Subscription cancellation: license updated to CORE only after grace period
## 5.4 Self-Hosted License Delivery
- License file generated by vendor portal when purchase is completed
- Delivered via email and available for re-download from customer portal
- Store admin uploads via Settings → License in admin panel
- Tray app detects new license file and applies without restart
- License stored in platform database — survives Docker restarts
## 5.5 Expiry and Grace Period
State
Behavior
Maintenance active
All licensed modules available. Updates and support included.
Maintenance expiring soon
Warning banner shown to admin 30 days before expiry. Renewal reminder emails sent.
Maintenance lapsed — grace (14 days)
All modules still work. Urgent renewal banner shown. No new updates downloaded.
Maintenance lapsed — post grace
All licensed modules continue working. Updates blocked. Support not available until renewal.
CORE — always
CORE never disabled under any circumstance. Store can always process sales.
SaaS subscription cancelled
14-day grace period — all modules active. After grace: CORE only. Data export available for 90 days.
# 6. Module Enforcement
## 6.1 Runtime Enforcement
Module availability is checked at two points — API routes and UI rendering. Both checks use the same license object loaded at application startup.
// API route guard — server siderouter.get('/rentals', requireModule('MOD-RENTALS'), (req, res) => { // handler only runs if MOD-RENTALS licensed})// UI guard — client sidefunction RentalsNav() { if (!license.hasModule('MOD-RENTALS')) { return } return }
## 6.2 Upgrade Prompt
When a staff member attempts to access an unlicensed module they see a clear, non-alarming upgrade prompt. The goal is to surface value, not block the user with an error.
┌─────────────────────────────────────────────┐│ Rentals Module ││ ││ Track instrument rentals, rent-to-own ││ contracts, and rental fleet inventory. ││ ││ This module is not included in your ││ current license. ││ ││ [Start 30-Day Trial] [Purchase Module] ││ ││ Questions? support@platform.com │└─────────────────────────────────────────────┘
## 6.3 Trial Licenses
- Any unlicensed module can be trialed for 30 days at no cost
- Trial generated automatically — no credit card required
- One trial per module per store — cannot restart a completed trial
- Trial license has same format as paid license with trial flag and 30-day expiry
- Store receives reminder emails at day 20 and day 28 of trial
- Trial expiry shows purchase prompt — module disabled after grace period
# 7. Professional Services
Service
Price
Notes
AIM data migration — standard
$750
Customers, inventory, open rentals, lessons, repair history
AIM data migration — with GP token import
$1,200
Includes validation and import of existing GP payment tokens
Remote installation (self-hosted)
$250
Vendor installs and configures remotely via screen share
Onboarding training
$300
3hr remote session covering all licensed modules
Custom report development
$150/hr
Custom reports beyond standard library
Chart of accounts setup
$200
Configure accounting module to match existing QB setup
# 8. Beta Program
The first 10 stores receive the platform at no charge for 6 months in exchange for active participation as design partners. Beta stores get lifetime pricing advantages as reference customer compensation.
Beta Term
Detail
Duration
6 months free access to all modules
Post-beta discount
20% lifetime discount on all licenses and maintenance — locked in forever
Store obligations
Monthly feedback call (30 min), permission to use as case study, referral introductions to other stores
Target profile
Stores currently on AIM with pain around cloud access, school batch repairs, or modern hardware requirements
GP token benefit
Beta stores on Global Payments get free token migration validation — highest value migration path