Navigation

14.25. Simulate a Contract Before It Bills: Price Scenarios Against the Real Charge Engine

Use the AlgaPSA contract Simulate tab to run 3, 6, or 12 billing periods against a scenario, read the invoices line by line, and compare them with the untouched live contract before anything is committed.

14.25. Simulate a Contract Before It Bills: Price Scenarios Against the Real Charge Engine
Use the AlgaPSA contract Simulate tab to run 3, 6, or 12 billing periods against a scenario, read the invoices line by line, and compare them with the untouched live contract before anything is committed.
14. Billing and ContractsUpdated: 8/6/2026

The most expensive moment in MSP billing is the first invoice under a new agreement. Everyone finds out at once whether the bucket hours were priced correctly, whether the per-seat tier lands where the client expected, and whether the proration on a mid-month start does what you assumed. By then the invoice has a number on it and a client is reading it.

The contract simulator moves that moment earlier. Price a contract, change its terms, run it forward across real billing periods, and read the invoices it would produce — before anything is committed.

Contract simulation is available on Pro, behind a feature flag.

What makes it trustworthy

The simulator runs fixed fees, hourly, usage, buckets, products, licenses, discounts, adjustments, proration, mixed cadences, and tax through the same charge engine production billing uses. It is not a parallel pricing model that approximates the real one, so a simulation cannot quietly drift away from the invoice you eventually send.

Just as importantly, nothing is written. A simulation creates no billing records, no invoice numbers, and no events. You can run it as many times as you like against a live contract without touching it.

Opening the simulator

Every contract gains a Simulate tab alongside Overview, Contract Lines, Pricing Schedules, Documents, and Invoices.

Figure 1: The Simulate tab. Scenario controls sit on the left; simulated periods and the selected invoice fill the workspace.

The simulator is also available in two other places:

  • From the contract wizard, before you save a new contract — so pricing can be checked while it is still a draft.
  • From contract templates, so a template can be validated once instead of being discovered to be wrong on the fifth client it is applied to.

Setting the scenario

Assumed activity

Usage- and time-based lines need an assumption about how much work happens per period. The Assumed activity panel collects it.

Pick a starting point:

OptionWhen to use it
Use average from last 3 billing periodsAn existing contract with billing history
Set activity for each invoiceModelling a ramp, a seasonal dip, or a one-off project month
Enter a flat figureA new contract with no history

In the figure above, the Help Desk Block line is set to 6 hours per service period. Note the reminder under the heading: for arrears billing, each invoice uses the previous service period — so the September invoice bills August's activity. This is the single most common source of confusion when reading a simulation, and the reason the September invoice in the figure shows a service period of Aug 1–31.

Compare with past invoices replays a historical window instead of a hypothetical one, which answers a different and very useful question: what would last year have looked like under the new pricing?

Contract changes

The Contract changes panel is where you edit the scenario. Each contract line can be expanded and its rules edited in place — in the figure, a Fixed Fee line and an Hourly line, both monthly and billed in arrears.

Add line introduces a line that does not exist on the live contract yet. Reset all discards every scenario edit and returns to the contract as it stands.

Advanced contract changes extends the scenario to pricing schedules, discounts, and adjustments, so you can model a promotional rate for the first three months or a volume discount that engages at a threshold.

Running the simulation

Choose 3, 6, or 12 billing periods and press Simulate. Periods can run forward from today or backward over a historical window.

Results appear as a row of period cards, each showing the invoice total that period would produce. Selecting a card opens the full simulated invoice beneath it.

Two details in the figure are worth reading carefully:

  • Aug 2026 shows $0.00. The first period of an arrears contract has no prior service period to bill, so it is empty. This is correct behaviour, not a bug — and seeing it in a simulation is far better than seeing it on a client's first real invoice.
  • Sep 2026 shows +$1,125.00 from Aug 2026 invoice. When the comparison is on, each card annotates how it differs from the baseline.

Reading a simulated invoice

The simulated invoice renders exactly as a real one would: line, quantity, rate, amount, subtotal, tax, and total. Each line states its basis — "Fixed charge · Billed in arrears · Service period: Aug 1, 2026 – Aug 31, 2026" — so you can see which period's activity produced the charge.

Behind every amount is a structured explanation of how the charge engine arrived at it. When a number surprises you, open the explanation rather than guessing: it names the rule, the rate, the quantity, and the proration applied.

Preview invoice layout renders the simulated invoice through the client's assigned invoice layout, which catches presentation problems — a missing service description, an unhelpful line grouping — while they are still cheap to fix.

Comparing against the live contract

The Show changes from current contract toggle runs the scenario and the untouched live contract side by side and reports the difference per period. This is the control that turns "I think this repricing is roughly revenue-neutral" into a number.

Use it whenever you are changing an existing agreement rather than designing a new one.

Typical uses

QuestionHow to answer it
Does this new agreement price correctly?Run 6 periods from the contract wizard before saving
What happens when the bucket runs out?Set assumed activity above the bucket allowance and read the overage lines
Is this repricing revenue-neutral?Turn on comparison and read the per-period difference
Would last year have billed differently under new pricing?Use Compare with past invoices over a historical window
Does this template hold up?Simulate from the contract template before rolling it out
Why is the first invoice empty?Check the billing cadence — arrears contracts bill the previous period

Related documentation