Files
lunarfront-app/planning/15_Licensing_Modules_Pricing.md

20 KiB

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