Overage Billing Explained
Tutorial 20.8: Overage Billing Explained
Introduction
In Full mode, a finalised colour formula that uses more grams than the service's Colour grams included threshold automatically stages a Colour overage line on the appointment's transaction. This tutorial walks through every stage of that line's life â from the formula finalising to the transaction completing â and what happens when edits, reverts, or refunds hit.
Who this is for: Owner, Admin, Manager â anyone responsible for how colour revenue reaches the till What you'll learn:
- What makes a formula produce an overage line
- How the line reaches the draft transaction
- How edits and Revert ripple through
- How completion locks everything
- How refund / modify reopens the flow
Time to complete: 15 minutes
Prerequisites
- Salon colour formula mode set to Full (Tutorial 20.2)
- At least one default Colour Charge Rule configured (Tutorial 20.2)
- Services have Colour grams included set where overage should apply (Tutorial 7.1)
- Read Tutorial 20.6 for the formula dialog
Step-by-Step Instructions
Step 1: Understand when a line is staged
An overage line is staged automatically when all of these are true:
- Salon mode is Full
- Service on the appointment is flagged as a colour service and has Colour grams included set
- A colour formula on the appointment is finalised (not draft, not plan)
- An applicable charge rule is active â either the formula's chosen rule, or the salon's default
- The calculated charge is non-zero â qualifying grams are at or above the rule's Minimum overage grams, AND the calculated amount is at or above the rule's Minimum charge
If any condition fails, no line is staged and no charge appears.
Three rule types â how the threshold applies
Conditions 4â5 hide a subtlety. Only the Overage only rule type uses Colour grams included as a deductible. Full usage and Per gram rules ignore the threshold entirely and qualify every gram. See Tutorial 20.2 for the rule type comparison.
Step 2: The lifecycle â where the charge lives
Every finalised formula has a projection_status â a label for where its overage charge lives right now:
| Status | Meaning |
|---|---|
unfinalised |
Formula hasn't been finalised; no charge yet |
pending |
Finalised, but the appointment has no draft transaction yet. The charge will "land" on the next draft created for this appointment |
in_draft |
Charge is an emerald line item on the appointment's current draft |
committed |
Charge is on a non-draft (pending / completed / refunded) transaction. Formula becomes read-only |
The status appears on the formula's detail page and informs whether Revert is available.
Step 3: Watch the status change as you work
A typical flow:
Formula created, plan saved â unfinalised
Mixed and finalised â pending (no draft yet) OR in_draft (draft exists)
Customer reaches the till â receptionist creates draft â formula transitions to in_draft
Receptionist hits Complete â formula transitions to committed
The receptionist sees the emerald line in the cart while the transaction is in_draft; it locks once completed.
Step 4: Edit the formula while the draft is open
While in_draft:
- Stylist can open the formula and click Revert â stock returns, overage line disappears, formula reopens in mixing mode
- Stylist can re-finalise with different actuals â line rebuilds with the new amount and a fresh rule snapshot
- Receptionist can edit the unit price on the POS line â the edit survives unless the formula is re-finalised (which rebuilds the line fresh)
- Receptionist can delete the line from the draft â doesn't delete the formula, just removes the charge from this draft. Re-finalising the formula, or abandoning and recreating the draft, will re-stage it.
Revert vs delete the line â what's different
| Action | Stock | Overage line | Formula state |
|---|---|---|---|
| Revert the formula | Returned in full | Removed | Reopens for mixing â actuals editable again |
| Delete the line in POS | Untouched (still decremented) | Removed from this draft | Stays finalised; charge will re-stage if you re-finalise or abandon-and-recreate the draft |
Use Revert when the actuals were wrong. Use delete the line only if you've decided not to charge for the overage on this transaction.
Step 5: Completion locks everything
When the transaction is completed:
- Formula
projection_statusbecomescommitted - Formula
can_editbecomesfalse - Revert disappears
- The overage line's
rule_snapshotis frozen â future changes to charge rules do NOT change historical charges - Stock decrements are now permanent
Step 6: Refund or modify to change a committed charge
Need to change a committed formula? Use the transaction. Both paths require Owner or Admin permissions.
- Edit (modify) â only available the same day a transaction was completed. Edit the colour overage line's unit price directly on the transaction and save. The transaction stays completed (this is an in-place edit, not a return-to-draft) and the new price is what the customer pays. Use this for small price corrections.
- Refund â reverses the transaction. The formula stays
committedagainst the refunded transaction (the audit record persists). To then re-bill the customer, create a fresh transaction; if the formula needs different actuals first, see the note below.
Re-pricing a committed formula completely
The cleanest path when a finalised formula itself needs to change after the bill is paid is: refund the original transaction â create a new draft for the appointment â unfinalise and re-finalise the formula on the new draft. The original transaction stays in the audit log as refunded, and the new charge lands cleanly. Bulk re-pricing is intentionally not supported â see "Can I bulk re-price old formulas?" below.
See Tutorial 8.2 for the full refund / modify flow.
Worked example: edit a formula after finalise
Assumes a default rule: Overage only, Per-gram rate at ÂŖ0.20/g, no minimum charge or minimum overage.
- Formula finalised: actuals 75g, threshold 60g â 15g overage â ÂŖ3.00 charge â
pending(no draft yet) - Receptionist creates the draft transaction â formula moves to
in_draft, emerald ÂŖ3.00 line appears - Colourist realises they miscounted one bowl â clicks Revert, corrects actuals to 68g, re-finalises
- Line rebuilds: 8g overage â ÂŖ1.60 â
in_draft - Receptionist completes the transaction â formula moves to
committed, line locks at ÂŖ1.60
Worked example: customer pushes back after completion
Same-day, transaction was just completed. Owner permission required.
- Transaction completed earlier today with a ÂŖ6.00 overage line
- Customer pushes back: "I only agreed to a ÂŖ4.00 add-on"
- Owner opens the transaction and clicks Edit â the colour overage line is editable in POS (the transaction stays in Completed state)
- Owner changes the overage line's unit price to ÂŖ4.00 and saves â totals recalculate, the ÂŖ2.00 difference is owed back to the customer via the standard refund/credit flow
- Done â no formula re-finalise needed for a simple price adjustment
If instead the formula itself was wrong (different products, very different grams), refund the transaction outright, recreate a draft for the appointment, then Revert and re-finalise the formula. The new charge stages cleanly onto the new draft.
Common Pitfalls
"No overage line appeared"
Walk through the five conditions in Step 1 in order. Nine times out of ten it's condition 2 (missing Colour grams included) or condition 5 (the calculated charge is below the rule's minimum overage grams or minimum charge).
"The overage line has a beaker icon and emerald colour â is that deliberate?"
Yes. Colour overage lines use a distinctive emerald row + beaker icon so receptionists and customers can tell them apart from regular services and products.
"A stylist changed the formula after the customer paid"
They shouldn't be able to â a committed formula is read-only. If it happened somehow, the state machine has a bug; report it to support. The audit log will still show what changed.
"Our rule changed but old charges are different"
Correct â each formula snapshots the rule at the moment it was finalised. Historical charges are frozen on purpose so your audit trail is accurate.
"Can I bulk re-price old formulas?"
No. Modifying each transaction to re-price individually is the only path. This is deliberate â automatic bulk re-pricing would rewrite customer receipts.
Tips and Best Practices
- Train receptionists on the four statuses â
unfinalised/pending/in_draft/committedare the mental model, not implementation detail. - Complete transactions same-day where possible â leaving formulas
pendingtoo long creates gaps in stock visibility. - Use Revert, not line deletion â Revert rebuilds cleanly; line deletion can leave stylists confused about why their formula didn't produce a charge.
- Audit quarterly â spot-check a handful of
committedformulas against the POS lines to confirm the numbers tie out. - Price rules conservatively â a higher minimum charge and minimum overage reduces ticket disputes for tiny amounts.
Related Tutorials
- Tutorial 2.4: Processing Transactions â the receptionist's view of the overage line in POS
- Tutorial 7.1: Creating and Managing Your Service Menu â set Colour grams included
- Tutorial 8.1: Understanding Transactions and Payment Status â the
colour_overagepolymorphic item type - Tutorial 8.2: Handling Refunds and Cancellations â how modify / refund unlocks committed formulas
- Tutorial 20.2: Configuring Colour Settings & Charge Rules â the rule engine behind the charge
- Tutorial 20.6: Creating a Colour Formula â where finalise happens
Frequently Asked Questions
What if the rule's Minimum charge is higher than the calculated overage?
No charge is staged. Minimum charge acts as a floor for whether to bill at all, not a guaranteed minimum bill â if the calculated amount comes in below it, the system skips the line entirely. Set this low (or to zero) if you'd rather always bill the calculated amount, however small.
What if the customer exceeds the threshold but the rule's minimum overage isn't met?
No charge is staged. A 2g overage with a 5g minimum overage rule simply doesn't trigger.
Can I pause overage billing without leaving Full mode?
Yes â deactivate every charge rule (via Is active). Without an active rule, no charge can be staged. Or create a rule with 0% markup and 0 minimum charge to produce ÂŖ0 lines if you want the audit trail without the cost.
Does the overage line count toward commission?
That's determined by your commission configuration (Tutorial 4.4), not by this system. Check how commission is configured against the colour_overage item type.
Are overage charges VATable?
By default yes â they inherit the salon's tax rate. Confirm with your accountant that this suits your jurisdiction.
Last Updated: April 2026