Industry guide · Booking & Scheduling

Music School Software: Makeup Credits, Rooms and Recurring Tuition Without the Spreadsheet

The short answer

If you are one location under roughly 250 students, buy My Music Staff or Opus1 and stop reading. If you are past 500 active students or past two locations and your makeup credits, room grid and teacher pay all live in spreadsheets, build. Expect $60,000 to $130,000 and 12 to 16 weeks for a focused first release covering the lesson ledger, tuition and teacher pay, and $150,000 to $400,000 phased over 6 to 12 months for a full platform with AI intake, retention scoring, group classes and rentals. Those are Digital Heroes delivery bands from more than 2,000 projects, not a market survey.

Why lesson scheduling software makes or breaks a multi-location music school

A music school is a scheduling engine that happens to teach music. Every dollar you bill is a 30 or 45 minute slot matched to one teacher, in one room, with one instrument, at one time, repeating weekly for 40 weeks. Break the slot and you have not lost an appointment. You have lost the revenue, the teacher's pay, the room, and eventually the family.

Most schools past 400 students run some version of the same stack: My Music Staff or Opus1 or Jackrabbit Class or Teachworks for the lesson calendar, Stripe or a card-on-file gateway for autopay, a Google Sheet for room assignments because the platform's room field is just a text label, QuickBooks Online for the books, a second sheet for teacher pay reconciliation, Mailchimp for the newsletter, and a front desk text thread for everything the software cannot express. The subscription is cheap. The stack is not.

Here is what it actually costs. Monday, 4:10pm. A guitar teacher texts the Northside location that she has strep and is out all week. She teaches 26 students across Monday through Wednesday. Your front desk lead opens the calendar, exports her week, and begins a manual reconstruction: which families already banked a makeup credit and are at the two-credit cap, which of the 26 can move to the Thursday sub who does not read tab, which rooms free up and can be offered to the drum teacher's waitlist, which parents get a text and which get a call because they never read texts. That is roughly four hours of a $27 an hour manager, plus 40 minutes of the director's evening. It happens six or seven times a term, per location. Across the schools we have worked with, this single pattern burns $30,000 to $60,000 a year in front desk labor at three locations, before you count the families who quietly leave because their third makeup never got scheduled.

Problem 1: tuition and makeup credits are one system, and off-the-shelf treats them as two

The Chen family has two children: Maya on 45-minute piano weekly, Ben on 30-minute violin every other week. One monthly tuition of $268 on the 1st, sibling discount of 10% on the second child. In March, Maya's teacher cancels once, Maya is sick once with 26 hours notice, and Ben no-shows. Under your policy the teacher cancellation is a guaranteed makeup, the 26-hour notice earns a credit, and the no-show forfeits. So March still bills $268, one credit is redeemable through June, one through May, one is void. Somebody has to hold all of that.

My Music Staff, Teachworks and Jackrabbit all bill and all track attendance. But they bill on a schedule and track attendance in a log, and the rule that connects the two lives in your staff handbook, not in the software. The human becomes the integration layer. When a parent emails "I'm pretty sure we have two makeups left," someone opens the attendance history, counts, argues, and usually grants the credit to avoid the fight. In reconciliations we have run, 6 to 9% of billed lessons were being given away as unbudgeted goodwill credits because nobody could prove the ledger.

A custom build makes credits first-class ledger entries instead of notes. Every lesson runs a state machine: scheduled, delivered, cancelled by teacher, cancelled by student inside notice, cancelled outside notice, no-show, made up. Each transition writes a credit row with an issue date, an expiry, a source lesson id and a redeeming lesson id. Tuition is then computed from the ledger rather than a static plan, so proration, mid-term instrument changes, sibling rules and withdrawal notice periods all fall out of one calculation instead of four spreadsheets. The parent portal renders the same ledger the front desk sees, which ends the argument. Self-serve makeup booking only offers slots that are legal under the policy: right instrument, right teacher tier, credit unexpired, room free.

Problem 2: your rooms are not interchangeable, and your calendar thinks they are

Room 4 has the Yamaha grand and cannot be given to the drum student. Room 7 is the only isolated room, so it holds drums and it holds loud brass. Room 2 shares a wall with the front desk and cannot hold anything amplified during enrollment season. Room 9 has the digital piano the theory group class needs, and that class owns Tuesdays. None of that fits in a text field labelled Resource.

So rooms get scheduled on a paper grid on the wall or a sheet with a tab per location, and the booking system stays deliberately ignorant. Double bookings get discovered by a teacher standing in a doorway at 4:31pm with a student behind him. Worse, you cannot answer the only question that matters for growth: between 4:30 and 7:30 on Tuesday, which is where most of your revenue sits, how much capacity is left and for which instrument?

Off-the-shelf cannot fix this because room constraints are not a feature, they are a data model. You need rooms with typed attributes: instruments present, isolation rating, capacity, amplification allowed, adjacency conflicts, priority holders. A build turns assignment into a solver, not a dropdown. When you enroll a student, the system proposes valid teacher, room and time triples ranked by how little they fragment prime time, so you stop the classic mistake of dropping a 4:30 lesson into the middle of an empty block and stranding two unsellable half hours around it. On the schools we have done this for, defragmenting prime time recovers the equivalent of two to four sellable weekly slots per location. At $140 a month per weekly student that is real money on inventory you already own.

Problem 3: teacher pay is a reconstruction project every payroll run

Thirty-four teachers across three locations. Fourteen W2 hourly, twenty on 1099. Pay is not one rate: the piano lead is on a 60/40 split of collected tuition, four teachers are at $28 per taught 30-minute lesson rising to $32 after 100 lessons, group instructors get a flat $65 per section, everyone gets a $50 recital stipend. Then the rules: a teacher-cancelled lesson pays nothing, a student no-show pays half, a delivered makeup pays full but must not double-pay against the original, and same-day travel between locations pays 30 minutes.

No tool in your stack owns that. So on the 12th and the 27th your operations manager exports attendance, pastes it into a workbook with 34 tabs, applies the rules by hand, pushes W2 hours into Gusto and 1099 payouts through Bill.com, then fields three "my pay looks wrong" messages by Thursday. That is 10 to 14 hours per pay period in the schools we have measured, with an error rate high enough that most directors keep a quiet correction reserve. Pay disputes are also the fastest way to lose a good teacher, and in our experience a teacher leaving takes 15 to 25 students with them.

A build attaches a compensation rules engine to the same lesson state machine that drives tuition. Each teacher gets a compensation profile versioned with an effective date, so an October raise does not silently rewrite September. Every lesson transition emits a pay event the moment it happens, so payroll stops being a reconstruction and becomes a read. The teacher app shows a running period total, which kills the dispute before it starts. Exports go clean to Gusto for W2 and to your 1099 rails, with period locking so nobody edits an April attendance record after April closed. This is usually the highest-ROI piece of the whole build and the one directors most often leave out of phase one.

Problem 4: the 9:40pm inquiry that turns into nothing

A mother finishes bedtime, searches guitar lessons, lands on your site and fills in the form: "9 year old, total beginner, guitar, we can do Tuesday or Thursday after 5." Nobody is at the desk. She gets an autoresponder. At 10:15 the next morning your front desk calls and gets voicemail. By Wednesday she has enrolled at the school two miles away that let her pick a trial slot at 9:41pm. Every intake audit we run at multi-location schools finds the same shape: most inquiries land after 7pm, and the ones answered within ten minutes convert to a booked trial at a multiple of the ones answered next morning.

Calendly or Acuity will hand her a slot, but they do not know that a 9 year old beginner guitarist needs a teacher tagged for beginner kids, in a room that is not next to the drum kit, in a 30-minute format, and that the trial should reserve the slot she would actually keep on enrollment. Booking her into a demo hole that evaporates when she enrolls is worse than not booking her at all.

This is the one place a language model changes the revenue line concretely. An assistant on your site and your SMS line reads the inquiry in plain language, extracts instrument, age, level and availability windows, checks them against the live teacher-room-time solver, and offers the two or three real slots that survive conversion into a recurring enrollment. It answers what parents actually ask at 9:40pm: cost, makeup policy, instrument rental, recitals. Anything it is not confident about escalates to a human queue with the extraction already done. The same model handles reactivation: it drafts follow-ups to the 43 families whose trials lapsed last term, personalized with the real instrument and teacher, for a human to approve in a batch. We build these with one hard rule: the AI proposes, the ledger and the solver decide. It never invents a slot or a price.

Problem 5: churn is visible in the schedule six weeks before it hits Stripe

A family does not decide to quit on the 1st when they cancel autopay. They decide over six weeks: two short-notice cancellations, an unredeemed credit, a practice log that goes quiet, a switch to a substitute they did not choose, a skipped recital. By the time the card comes off, the decision was made in week two.

My Music Staff and Jackrabbit will show you attendance, and Stripe will show you a failed charge. What none of them will do is tell you on Tuesday morning that 11 named families across three locations are trending out, why, and which one the director can save with a phone call before the teacher change becomes permanent. Nor will they forecast next term's teacher hours by instrument so you hire the second cello teacher in July instead of scrambling in September.

A build makes this a daily job. Score every active enrollment on signals you already generate, surface a ranked retention queue in the front desk dashboard with the reason and the recommended action attached, and feed the same data into a capacity forecast: given current enrollment, historical summer attrition by instrument and location, and teacher availability, here is next term's hours-by-instrument shape. Add card-failure prediction and treat a decline as a retention event rather than an accounting event. At 900 students, involuntary churn from dead cards is a full-time teacher's income walking out with nobody having decided anything.

What this costs and how long it takes

These are Digital Heroes delivery bands from more than 2,000 projects, not a market survey. A focused first release for a music school typically lands at $60,000 to $130,000 and ships in 12 to 16 weeks. For this category the first release is almost always the same three things: the lesson state machine with the makeup credit ledger, tuition billing sitting on top of it, and teacher pay calculation, plus a parent portal and a teacher app. Typed rooms belong in phase one too, because retrofitting the room model later means rewriting the scheduler.

A full platform, meaning all of the above plus AI intake, retention scoring, group classes and ensembles, recital management, instrument rental inventory, multi-location reporting and QuickBooks plus payroll integrations, runs $150,000 to $400,000 phased across 6 to 12 months. Phased, never big bang. The school is open Tuesday at 4:30 either way.

What drives price up in this category specifically:

  • Migration from My Music Staff, Jackrabbit or Opus1. The contact list is trivial. Three years of lesson history and open credit balances that were maintained by hand are not: somebody has to make a judgement call on every ambiguous balance. Budget 3 to 6 weeks and a reconciliation session with your front desk lead.
  • Payment rails. Card on file plus ACH plus a legacy Authorize.net vault means PCI scope. We keep card data out of your systems entirely with a tokenizing gateway, which is both cheaper and non-negotiable.
  • Minors. Student accounts under 13 pull COPPA into scope. Recorded practice submissions and recital video pull in parental consent, retention limits and media releases. If teachers message students, you need chaperoned threads with the parent included by default. That is safeguarding, and it is not a later.
  • Locations that share resources. Two locations sharing nothing are one system built twice. Two locations sharing a cello teacher and one room policy are a genuinely harder scheduling problem.
  • Group classes alongside private lessons. Term-based cohort billing behaves nothing like weekly recurring, and schools running both need both models against one family account.

Build versus buy, and where I land

Buy, genuinely. One location, under roughly 250 active students, a policy that fits on one page, no group program: My Music Staff, Opus1 or Teachworks is correct and building is a vanity project. The subscription is a rounding error, the overhead is one person's afternoon, and you will not out-engineer a mature tool for the price of a used car. Put the money into teachers.

Build, and the signals are specific. You are past 500 active students or past two locations. Somebody at your school has a full-time job that is really "operate the spreadsheet the software cannot." Your makeup policy has exceptions you cannot enforce, so you hand out credits rather than argue. Teacher pay eats more than a day per period. You cannot answer "how much prime-time capacity is left at Northside on Tuesday" without a human counting. Your competitor books trials at 10pm and you do not. Or the honest one: you tried to move the school onto the platform's model and the school refused, because the school's model is right and the software's is wrong.

Two things settle it outright. If your scheduling or billing behaviour is a real differentiator, a makeup swap marketplace between families or a guaranteed-slot promise, then it is your product and you cannot rent it. And if you intend to franchise or license your operating model to other schools, you are a software company whether you planned it or not, and this platform is the thing you will be selling.

How to choose a developer for music school software

  1. Make them model the domain on a whiteboard before they quote. Ask them to draw the lesson lifecycle including teacher cancellation, student cancellation inside and outside notice, no-show, credit issuance, credit expiry, and how each transition touches both tuition and teacher pay. If they draw a calendar table and a payments table, they will build you a scheduler and you will be back in a spreadsheet by year two. The right answer involves an immutable ledger and a state machine, and a team that has built this says so unprompted.
  2. Interrogate the migration, not the import. The question is not "can you take a CSV." It is: how do you reconcile 1,400 open makeup credits buried in three years of My Music Staff attendance notes, and what do you put in front of my front desk lead so she can approve the ambiguous ones? Anyone who has migrated a live recurring-billing business will offer a dual run: both systems live for one full billing cycle, compared line by line, cut over on a period boundary.
  3. Check integration depth, not logo count. Ask specifically: Stripe or Adyen subscriptions with proration and dunning, a tokenized vault so PCI scope stays out of your database, QuickBooks Online journal entries at a grain your bookkeeper does not re-key, Gusto for W2 plus a real 1099 payout path, Twilio for the SMS that drives makeup fill rates. Then ask what happens when Stripe delivers the same webhook twice, because it will. If they have not thought about idempotency, they have not run a billing system in production.
  4. Confirm compliance and safeguarding are in the design, not the QA pass. You handle minors' data every day. Ask how they scope COPPA accounts, how parent-chaperoned messaging works between teacher and student, how recital media consent is captured and revoked, how teacher background check records and their expiry dates are tracked, and how role-based access stops a part-time Northside teacher from reading the Eastside family list. "We will add permissions later" tells you everything about the rest of the engagement.

One more thing to settle before the first invoice: the repository, the cloud accounts and the gateway keys are in your name from the first commit, and the contract says so. Ask for the handover artifacts in scope, an infrastructure diagram and a runbook, and ask what it would cost for your own in-house developer to take the codebase over in year three. A partner who is confident in the work is relaxed about that conversation.

Research & sources

The evidence behind this guide

Independent findings on why this investment pays off. Every link goes to the primary source.

  1. SMS reminders that stated the specific cost of the appointment to the health system reduced missed appointments in Trial One, with the DNA (did-not-attend) rate falling from 11.1% (control) to 8.4% (specific-costs message) - an odds ratio of 0.74 (95% CI 0.61-0.89), i.e. roughly a 24-26% relative reduction - at no additional cost. (Trial Two replicated this at an 8.2% DNA rate.). Source: PLOS ONE (Hallsworth et al.) (2015) →
  2. In an RCT, text-message reminders (11.7% missed) were non-inferior to telephone reminders (10.2% missed; difference not significant, within the 2% non-inferiority margin) but far cheaper - total cost EUR 230 for SMS versus EUR 8,910 for telephone over 6 months - making SMS more cost-effective. Source: BMC Health Services Research / PubMed Central (Junod Perron et al.) (2013) →
  3. EMARKETER reports that over 54% of mobile commerce transactions now happen within shopping apps rather than mobile browsers, underscoring the app channel's growing dominance of m-commerce. Source: EMARKETER (2025) →
  4. OECD research finds that digitalisation offers SMEs opportunities to improve performance, spur innovation, enhance productivity and compete more evenly with larger firms; it reports that increased use of online platforms produced significant multi-factor productivity gains in SME-heavy sectors such as hospitality and retail, while smaller firms lag in adoption due to skills, resource and financing gaps. Source: OECD (2021) →
Rohan Malhotra · Enterprise Software Consultant

Rohan advises mid-market and enterprise teams on ERP, CRM and custom software, and has led delivery on dozens of business-software builds.

Writes for Digital Heroes, shipping business software for 2,000+ brands across 55+ countries since 2017.

FAQ

Frequently asked questions

How much does it cost to build custom music school software for 900 students across three locations?
Expect $60,000 to $130,000 for a focused first release covering the lesson and makeup credit ledger, tuition billing, teacher pay, a parent portal and a teacher app, shipping in 12 to 16 weeks. A full platform adding AI intake, retention scoring, group classes, rentals and QuickBooks plus payroll integrations runs $150,000 to $400,000 phased over 6 to 12 months. Those are Digital Heroes delivery bands from more than 2,000 projects. At three locations the number that usually justifies it is the $30,000 to $60,000 a year currently spent on front desk labor rebuilding schedules by hand.
Is My Music Staff good enough for a multi-location music school or do we need custom software?
My Music Staff is genuinely the right tool for one location under roughly 250 students with a simple makeup policy. It stops fitting when your policy has exceptions the software cannot enforce, when room constraints live on a wall grid, and when teacher pay takes more than a day per pay period to reconstruct. The signal to build is not dissatisfaction with the tool, it is that somebody at your school now has a full-time job operating the spreadsheets the tool cannot replace.
How long does it take to build music school scheduling and billing software?
A first release that covers the lesson state machine, makeup credit ledger, tuition billing, typed rooms, teacher pay, parent portal and teacher app ships in 12 to 16 weeks. Full platforms phase over 6 to 12 months, and they should be phased because your school is open Tuesday at 4:30 regardless. Put typed rooms in phase one even if they feel optional, because retrofitting the room model later means rewriting the scheduler.
How do we migrate three years of lesson history and makeup credits out of Jackrabbit or My Music Staff without losing balances?
The contacts and schedules move cleanly. The open makeup credits are the hard part, because in most schools they were maintained by hand in attendance notes and need a human judgement per ambiguous balance. Budget 3 to 6 weeks and plan a dual run: both systems live for one full billing cycle, compared line by line, with your front desk lead approving the disputed balances before cutover on a period boundary.
Do we own the code if we hire an agency to build our music school platform?
You should own everything from the first commit: the repository, the cloud accounts, the payment gateway keys, all in your name, with the contract saying so explicitly. Ask for handover artifacts in scope, meaning an infrastructure diagram and an operational runbook, not just a zip file. Also ask what it would cost for an in-house developer to take the codebase over in year three, because a partner confident in the work answers that calmly.
What compliance do we need for music school software that handles students under 13?
Student accounts under 13 bring COPPA into scope, which means verifiable parental consent, limits on what you collect, and a deletion path. Storing cards for autopay brings PCI scope, which you avoid by using a tokenizing gateway so raw card data never touches your database. Recorded practice submissions and recital video need a media consent and revocation model, and teacher to student messaging should be parent-chaperoned by default with background check records and expiry dates tracked in the system.
Can custom software handle makeup lesson credits better than off-the-shelf music school tools?
Yes, and it is usually the reason schools build. Off-the-shelf tools bill on a schedule and log attendance separately, so the rule connecting them lives in your staff handbook and your front desk staff become the integration layer. A custom build makes every credit a ledger entry with an issue date, expiry, source lesson and redeeming lesson, so tuition is computed from the ledger and the parent portal shows the same balance the front desk sees. In reconciliations we have run, schools were giving away 6 to 9% of billed lessons as goodwill credits simply because nobody could prove the ledger.
Can AI actually book trial lessons for a music school after hours?
Yes, if it is wired to your real scheduling constraints rather than a generic calendar. An assistant reads the inquiry, extracts instrument, age, level and availability, checks them against the live teacher, room and time solver, and offers only slots the student would actually keep after enrolling. The rule that matters is that the AI proposes and the ledger and solver decide, so it never invents a slot or quotes a price you do not charge. In the intake audits we run, most inquiries arrive after 7pm and the ones answered within ten minutes convert to trials far more often than the ones answered next morning.
What does custom music school software cost to run and maintain each year?
Plan for roughly 15 to 20% of the build cost annually to cover hosting, monitoring, security patching, dependency upgrades and a steady stream of small changes as your policy evolves. Hosting itself is minor at music school data volumes, usually a few hundred dollars a month. The real ongoing cost is having someone accountable when Stripe changes an API or your makeup policy changes in September, so budget the retainer rather than assuming the system runs itself.
We have outgrown Calendly. When is it actually worth building our own booking system?
Build when your scheduling no longer fits Calendly's model of one person, one event type, one slot. The triggers we see most: bookings tied to rooms or equipment, appointments needing multiple staff at once, pricing that varies by client or demand, or paying for 20+ seats at Calendly's $16 per user per month and still exporting everything to spreadsheets. Below roughly 10 users running simple 1:1 meetings, Calendly stays the cheaper option and custom rarely pays off.
How much does it cost to build a custom booking system for my business?
Most custom booking systems cost $15,000 to $60,000 to build, based on what Digital Heroes has delivered across service businesses from salons to clinics. The low end covers a single-service scheduler with payments and automated reminders; the high end adds multi-staff calendars, memberships, packages, and a client mobile app. The single biggest cost driver is how many scheduling rules your business runs on: staff availability layers, buffer times, room or equipment conflicts, and cancellation policies.
Can we migrate years of data out of our current system into new custom software?
Almost always yes, through CSV exports or the vendor's API, and migration should be scoped as its own workstream with field mapping, a dry run, and a planned cutover window rather than an afterthought. The real time sink is rarely moving the data; it is cleaning it, since years of duplicates, free-text fields, and inconsistent formats surface all at once. Pull a full export from your current vendor before committing to anything new, because some SaaS plans restrict exports on lower tiers.
What does it cost to keep custom software running after launch?
Budget 15-20% of the original build cost per year, which on a $100,000 system means $15,000 to $20,000 for security patches, dependency updates, bug fixes, and small improvements as real usage reveals what the spec missed. Cloud hosting for a typical business application adds $50 to $300 a month on top. Skipping maintenance does not save the money; in Digital Heroes rescue work, unmaintained systems typically need a far more expensive rebuild within about three years.
We run everything on spreadsheets and Airtable. How do we know it's time for custom software?
The reliable signals are re-typing the same data into multiple tools, one employee acting as human middleware between systems, and errors appearing in handoffs between teams. Hard limits force the issue too: Airtable's Team plan caps at 50,000 records per base, and Business costs $45 per seat per month, so a 20-person team pays about $10,800 a year for a tool it has already outgrown. When workarounds consume more hours than the tools save, the spreadsheet era is over.
Should I hire a freelancer or an agency to build my booking app?
A strong freelancer works for a simple booking page with payments, roughly the $5,000 to $12,000 range in our experience. Choose an agency once the project needs a designer, backend and frontend developers, and QA working at the same time, which describes nearly every system with staff schedules, payments, and reminders. The practical freelancer risk is bus factor: if one person leaves mid-project, an agency replaces them and you cannot.
Keep reading
let's build

Build something worth launching.

A plan, a team, a timeline, within 24 hours. No decks, no discovery calls. Tell us what you're building and we'll come back with a real scope and a real number.

message us directly · we reply within one business day

mission briefing

Monthly dispatch

Playbooks, real build costs, and what we're shipping. One email a month. No fluff.

visit us

New York HQ

1140 Broadway, Suite 704 · New York, NY 10001

Get directions
Online now

Hey there 👋 How can we help you today?