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