Payments

Promo codes, early-bird pricing, and sibling discounts for camps

How to run camp promo codes, an early-bird rate, and sibling discounts so the reductions reconcile against enrollment and land in your net-revenue number.

Most camps run discounts. An early-bird rate to pull registrations forward, a code for the open house, a sibling reduction so a family with three campers isn’t paying three full fees. The discounts are good business. The trouble is how they’re usually run: a list of codes in a spreadsheet, an early-bird cutoff you mean to enforce but forget to, sibling math you do by hand for each family, and a pile of reductions that don’t reconcile against what actually enrolled. None of it is hard on its own. All of it drifts, and the drift surfaces at close as a net-revenue number you can’t quite trust.

This is a guide to running camp promo codes, early-bird pricing, and sibling discounts so each reduction is a line on the registration it applies to — not a number you track on the side and reconcile by hand later. It works on whatever tools you have. It works far better when the discount lives on the same record as the registration it reduces, and this is one piece of camp payments and billing where that difference shows up directly.

Three reductions, one shape

Before the mechanics, the distinction that keeps a discount program from getting muddy. There are three ways a family pays less, and they are not the same thing.

A promo code is a published, rules-based reduction: a percentage or a fixed amount off, available to anyone who has the code. An early-bird rate is the same idea on a timer — a reduction that applies while a window is open and stops once it closes. A sibling discount is a rule that fires on a condition you don’t make the family prove: a second camper from the same family in the same session. All three are rules. None of them is case-by-case hardship aid — that’s financial aid, a different track with an application and a review, worth keeping separate so a family’s hardship isn’t quietly folded into a coupon.

The reason to name them together is that they share a shape. Each is a reduction with conditions — an amount, a window, a cap, a trigger — that should apply at registration and reconcile against enrollment. Run them that way and the whole program holds together. Run them as side notes and each one becomes its own small leak.

Promo codes that apply at registration and reconcile

A promo code is more than a number off. It’s a small set of rules: the discount itself (a percentage or a fixed amount), a window it’s valid in, a maximum number of times it can be used, and a switch to turn it off. It can also be scoped to a single session, so the open-house code doesn’t quietly apply to a session it was never meant for.

A family enters the code during registration. The system checks it against those rules — is it active, is it inside its window, has it hit its use cap — and either applies the reduction or tells the family why it can’t. When it applies, the fee on that registration drops by the code’s amount, and the code’s use count goes up by one. That last part is the part a spreadsheet can’t give you: the code knows how many times it’s been used, so you’re never guessing how much of a code’s run is left or whether a code you meant to cap at a few dozen quietly ran past it.

Because the code is recorded on the registration it reduced, reconciliation stops being a reconstruction. You can read which registrations used which code straight off the records, rather than counting promo emails and hoping the count matches the discounts you gave. The code that came in is the code that applied, and the discount that applied is the discount that shows up in the total.

An early-bird rate that opens and closes on a date you set

Early-bird pricing is the discount most likely to leak, because it depends entirely on a date — and a date is exactly the thing that’s easy to honor inconsistently when you’re enforcing it by hand. A family registers a day after the cutoff, asks nicely, and you wave it through. Another doesn’t ask and pays full freight for registering at the same time. Now your early-bird rate isn’t a rate; it’s a series of judgment calls you’ll be re-explaining in August.

The fix is to make the date the rule rather than the exception. An early-bird rate is a reduction with a validity window: it applies while the window is open and stops applying the moment it closes on the date you set. Registrations inside the window get the rate; registrations after it get the standard fee. There’s no cutoff to remember because the cutoff is enforced by the record, not by you.

That same date logic is what governs who can register when. Registration windows open and close on dates you set — returning families first, then a wider group, then general registration — so the early period is genuinely early and the rate attached to it means something. The reduction and the window are the same kind of object: a rule with an open date and a close date, doing its job whether or not you’re watching the calendar that week.

Sibling and returning-family discounts that apply on their own

The sibling discount is the one camps most often compute by hand, and it’s the one that benefits most from not being computed by hand. The rule is simple to state — a family with more than one camper in a session pays less on the additional camper — and tedious to enforce manually, because catching it means cross-referencing every registration against the family behind it.

Done on the record, that cross-reference is automatic. When a family registers a second camper for a session, the system looks at the family’s campers, checks them against that session’s registrations, and finds the sibling already enrolled. If there’s a sibling in, the camp’s configured sibling discount applies to the new registration — no code to type, no eligibility for the family to claim, no list you maintain of which families have two campers. The family sees the reduced total at the moment it’s true, and you didn’t calculate anything.

Returning families are the close cousin of this. A family that came back doesn’t want to re-enter what they entered last year, and you don’t want them to either — re-keyed data is wrong data. Carrying last season’s registration forward as a prefilled starting point, and recognizing a returning family as a returning family, is the same move as the sibling discount: a condition the system can check applying a reduction or a shortcut the family would otherwise have to ask for. The reward for coming back is built into the registration, not bolted on after.

Discounts that show up in the right number

Every discount you give is a gap between gross and net. Gross enrollment revenue counts the full fee for every camper. Net is what families actually paid once the codes, the early-bird rates, and the sibling reductions came off. The gap between them is exactly the discounts you gave — which means it’s exactly the thing you lose track of when discounts live anywhere other than the registrations they reduced.

If a code lives in a code spreadsheet, an early-bird cutoff lives in your memory, and the sibling math lives in a calculator you used once and closed, then your enrollment total still shows full fees and your real net is a reconciliation project. You find it by listing every discount, matching each to a registration, and hoping you didn’t miss one or double-count another. That project is where a discount program quietly costs more than you decided it would — not because any single reduction was wrong, but because no number ever told you the total.

When each reduction is applied on the registration, the gap closes. The registration owes the reduced amount because the code, the rate, or the sibling discount already lowered it. Your enrollment total nets the discounts because the discounts are part of the records the total reads from. Net revenue stops being something you reconstruct at close and becomes a figure that’s already correct — the same property that lets camp tuition payment plans show a parent and the director the same balance.

One record, from the code to the close

Discounts are a lever you should be able to pull without dreading the reconciliation. You set the early-bird window, you decide the sibling rule, you publish the codes and cap them where you want them. The discounts are your call. The math underneath them shouldn’t be a second job.

Run that math on the registration and it holds together. A code applies at registration and counts its own uses. An early-bird rate opens and closes on the date you set, with no cutoff for you to enforce by hand. A sibling discount fires on a condition the system checks instead of one you calculate. And every reduction lands in the one number that tells you how the season priced out, because it lives on the same record your enrollment total reads from. Camp Runner is one system for that record — registration, payments, and the discounts on a single camper, priced at $1.50 per active camper per month for the whole thing.

You decide who pays less and why. Camp Runner carries the codes, the dates, and the math, so the discounts you meant to give are the discounts your net actually reflects. If discounts are currently a spreadsheet you reconcile by hand at close, join the waitlist.

Common questions

How do camp promo codes work?
A promo code is a published, rules-based reduction a family enters at registration. Each code carries a discount (a percentage or a fixed amount off), a window it's valid in, a cap on how many times it can be used, and an on/off switch. When the family applies a valid code, the fee on that registration drops by the code's amount, and the code's use count goes up by one. Because the code lives on the registration it reduced, you can read back exactly which registrations used which code rather than counting from memory at close.
What's the difference between an early-bird rate and a promo code?
They're the same shape with a different trigger. A promo code is something a family types in; an early-bird rate is a reduction that applies automatically while a registration window is open and stops applying once it closes on the date you set. Both are published, rules-based reductions — not case-by-case hardship aid. Run them as dated, rule-bound reductions on the registration and they reconcile the same way: by reading the records, not by remembering who registered before the cutoff.
How do sibling discounts get applied automatically?
When a family registers a second camper for a session where one of their campers is already enrolled, the system checks the family's campers against that session's registrations, finds the sibling already in, and applies the camp's configured sibling discount to the new registration without anyone typing a code. The reduction is on the registration, so the family sees the right total and you don't hand-calculate which families qualified.
Why do hand-run discounts go missing from net revenue?
Gross enrollment revenue counts the full fee for every camper. A discount is the gap between that and what the family actually paid. If the discount lives in a code spreadsheet or a mental note rather than on the registration, your enrollment total still shows the full fee, and you only find the gap by reconciling two lists by hand at close. When the reduction is applied on the registration, the total already nets it out.
Can a camp limit how many times a promo code is used?
Yes. A code can carry a maximum number of uses and a validity window, and it can be scoped to a single session. Once the code hits its cap or passes its end date, it stops applying — the family is told the code isn't valid rather than getting a reduction you didn't budget for. The use count is part of the code's record, so you always know how much of a code's run is left.

Make next season reconciliation, not reconstruction.

Camp Runner keeps registration, payments, medical, staff, and season close-out in one system, so the numbers reconcile against each other. Join the waitlist to see it run before next season opens.