Setting your prices

Program rates, custom rates, promotions and sibling discounts — and the order they resolve in.

Dojo Tiger works out what each student owes from four rules, applied in a strict order. Only one of them wins per enrollment — they never stack. Once you know the order, every number on the Enrollments page and in the tuition report explains itself.

The precedence chain

For any one enrollment, the app takes the first of these that applies:

  1. A custom rate typed on that specific enrollment
  2. A promotion attached to that enrollment
  3. A sibling discount tier, if the studio has one and this student is in a family
  4. The program's monthly rate

The resolved figure appears in the Tuition column on Students then Enrollments, with a small badge naming which rule produced it: Custom rate, Promo: Summer 2026, Sibling discount (10%), or nothing at all for the plain program rate.

That same figure is what the tuition report counts, and what a new monthly subscription is created for. There is one calculation, used everywhere.

1. The program's monthly rate

Classes then ProgramsMonthly Rate ($) on each program.

This is the base every discount is calculated from and the fallback when nothing else applies. Set it even if you collect money outside the app — the financial reports are built on it.

A program with no rate resolves to nothing, and an enrollment on it shows an em dash until you give it a rate directly.

2. Sibling discounts

Studio then GeneralSibling Discounts.

A policy with three parts:

Enable sibling discounts for this studio — the master tick.

Which child pays full price? — two options:

  • By tuition (recommended) — the family's most expensive enrollment stays full price and the cheaper ones are discounted. Stable: it doesn't flip around when a child enrols or leaves.
  • By enrollment date — the child who enrolled first pays full price; later siblings get the discount.

Discount tiers — an ordered list, 1st child, 2nd child, and so on, each with a percent off. The 1st tier is usually 0%, meaning full price. Any child beyond the last tier reuses the last tier's percentage, so a three-tier policy handles a family of six without you adding tiers.

Positions are recomputed live from each family's current active enrollments, so they stay correct as siblings join or leave.

A student on a custom rate or promotion never stacks

If a child already has a custom rate or a promotion, they keep it — the sibling tier does not apply on top. They do still count when positioning their siblings, so removing them from the family would change what the others pay.

Families — the grouping sibling discounts need

Studio then GeneralFamilies.

Sibling discounts can only rank children the app knows are siblings, and it will not guess. Create a family with a name, then add students to it.

Suggest from guardian email scans your unassigned students for shared guardian addresses and proposes groupings, one per email, for you to accept or ignore. Grouping is always explicit: the button suggests, it never groups anyone automatically.

3. Promotions

Studio then GeneralDiscount PromotionsNew Promotion.

FieldNotes
NameWhat it is called, e.g. "Summer 2026". This name shows on the enrollment badge, so families' invoices and your reports read the same.
TypePercent, or a fixed dollar amount off.
ValueThe percentage, or the dollar amount.
Starts / EndsOptional. Leave either blank for an open end. Both bounds are inclusive.

A promotion is defined once here and then attached to individual students from the Enrollments page — creating one does not discount anybody by itself. See Applying a discount to a student.

A fixed discount larger than the program rate resolves to $0.00 rather than a negative number. A $0.00 enrollment cannot be put on monthly billing.

4. A custom rate on one enrollment

The highest-precedence rule, and the simplest: an absolute number for one student in one program, ignoring every other rule.

Students then Enrollments → click the figure in the Tuition column → choose Custom price → type the amount, optionally with a note (the note shows as a tooltip on the figure, which is where you record why).

The same editor's Program rate option clears both a custom rate and any attached promotion, putting the enrollment back on the default.

Worked examples

A studio with "Kids Karate" at $120/month and a sibling policy of 1st child 0%, 2nd child 15%, 3rd child 25%, ordered by tuition.

SituationResolves toWhy
One child, nothing special$120.00Program default
Two siblings, both in Kids Karate$120.00 and $102.00The 2nd child's 15% tier
Three siblings$120.00, $102.00, $90.00Tiers 1, 2 and 3
Four siblingsThe fourth is also $90.00Beyond the last tier, the last tier repeats
Two siblings, one with a "Summer 2026" 20% promotionPromotion child $96.00; the other $120.00The promotion outranks the sibling tier for that child, and the other keeps position 1
A hardship case set to $60 by hand$60.00A custom rate beats everything

The caveat that matters most

Changing a price never re-prices a running subscription

Editing a program rate, attaching a promotion, changing the sibling policy or typing a custom rate all change what the app expects to collect. None of them reach a family who is already on monthly billing — that subscription keeps the amount it was created with.

The app makes the gap visible rather than silently fixing it: the Billing column grows an amber Rate changed badge and a Sync to current rate button. See When you change tuition.

The same caveat is printed on the Discount Promotions and Sibling Discounts cards themselves, under the heading Applies to new charges.

One thing the precedence chain does not cover

The Pay button a family sees for one-off tuition on their own payments page charges the program's monthly rate, not the resolved effective rate. Discounts apply to monthly billing and to your reporting; they do not apply to a family choosing to pay a month manually.

If a discounted family needs to pay a one-off, either put them on monthly billing or take the payment yourself with Charging a card, where you type the amount.

Last reviewed