Some contracts promise a minimum spend per period across a bundle of services — not a minimum on any single meter. Sonic models that as a minimum commitment product with a floor amount and a commitment group of included products.
At period close Sonic sums actual charges in the group. Short of the floor, a true-up line covers the difference. Over the floor, nothing happens.
When to use this model
Use minimum commitment when the contract says language like:
- "Minimum $10,000 per month across all platform fees"
- "Annual commit of ₹X across listed services"
- "Shortfall invoiced at period end"
The floor applies to the group total, not per product in isolation.
Configuration fields
| Field | Role |
|---|---|
| Commitment amount | Floor per period |
| Commitment group | Which products count toward the floor |
| Billing frequency | How often the floor is evaluated |
| Bill in advance | Whether top-up lands on advance invoice or closing invoice |
Example floor $10,000/month:
| Actual group charges | Top-up |
|---|---|
| $7,500 | $2,500 |
| $12,000 | none |
Group membership is explicit, not inherited
A minimum commitment product sits on the same schedule as the products it covers, but it does not automatically absorb everything on that schedule — each product has to be added to the commitment group by name. When a renewal changes the floor amount, that change belongs in a new phase, not a live edit to the floor on an active term; the old floor and the new one both need to exist as distinct, dated facts.
Ungrouped spend does not count. A customer with $9,000 grouped + $4,000 ungrouped still gets a top-up if grouped total is below floor — and will argue if the contract language was vague.
Invoice and recognition behaviour
Top-up can only be calculated once period usage is in. Late events change the top-up — another reason sent invoices do not grow new lines; open drafts refresh.
Journal shows true-up entry type linked to source period. Waterfall reflects billed vs recognised per your configured methods.
Minimum commitment is not the same as seat minimum_seats on a seat product — that floor bills contracted headcount via product pricing rules; Sonic does not auto-create synthetic minimum-seat events at activation.
Contract ingestion
Structurer reports commitment language; operators verify group membership on review. The most disputed invoice line in this model is "why did this product not count toward my commit?"
Write group membership into the contract in plain words.
Watch out for
- Only grouped products count — disputes start here.
- Late usage moves true-up — close usage before finalising period invoice.
- Phase changes for renewals — do not edit live floor mid-term without amendment workflow.
- True-up timing vs bill in advance — know which invoice carries the top-up.
- Not a tax or GL policy tool — accounts come from your chart mapping.