← Guides

Milestone billing without losing a paisa

Splitting a quotation into milestone invoices is easy until the shares stop adding up. How to split to the paisa, when GST falls due, and how not to bill twice.

For agencies, contractors and anyone who bills a job in stages · 4 min read · updated

In short

  • Rounding each milestone separately makes the invoices stop adding up to the quotation.
  • Largest remainder — round each share down in paise, then give the leftover paise to the largest remainders — always sums exactly.
  • Under Section 31(5) of the CGST Act, an event-linked invoice must be issued by the date the event is completed.
  • For services, GST on an advance is due when the advance is received; issue a receipt voucher.
  • Prevent double billing with one invoice per deal per milestone, enforced by the system rather than by care.
  • Treat retention as its own milestone, not a discount on the others.

The paisa that goes missing

A ₹1,00,000 job billed in three equal milestones is ₹33,333.33 each. Three of those make ₹99,999.99. The customer owes a paisa more than you have invoiced, and your quotation and your invoices now disagree by an amount nobody will chase but every reconciliation will find.

Round each share up instead and you invoice ₹1,00,000.02 — two paise more than the customer agreed to, on documents you signed. Neither error looks like much. Both mean the quotation total is not the total of the invoices, which is the first thing a customer's accounts team checks.

Largest remainder: the split that always adds up

The fix is old and simple. Work in paise, give every milestone its share rounded down, then hand the paise left over, one at a time, to the milestones whose shares were rounded down the most.

For ₹1,00,000 in three parts: one crore paise divided by three is 33,33,333.33 paise each. Rounded down, that is 33,33,333 paise three times, one paisa short. The paisa goes to one milestone, so the invoices read ₹33,333.34, ₹33,333.33 and ₹33,333.33 — and they sum to the quotation exactly, for any number of milestones and any percentages.

The same method handles uneven splits, such as 40/40/20 or a 30% advance with the balance in stages. What matters is that the rounding is decided once for the whole schedule, not separately for each invoice as it is raised.

When the invoice is due, and when GST is

Under Section 31(5) of the CGST Act, where payment is linked to completing an event — the usual milestone arrangement for services — the invoice has to be issued on or before the date that event is completed. A milestone reached in March and invoiced in April puts the tax in the wrong month.

An advance works differently. For services, GST falls due when the advance is received, so an advance milestone needs a receipt voucher when the money arrives, and the later invoice adjusts for tax already paid.

None of this changes the arithmetic above; it changes the dates. Tie each milestone to an event you can evidence — a delivered draft, a signed handover, an installed machine — so the date the tax falls due is not a matter of opinion.

Win the deal once, bill it once

The failure worth designing against is not a wrong amount but a repeated one. If winning a deal raises its milestone invoices automatically, then dragging the deal back out of 'won' and in again — a slip of the mouse on a sales board — must not raise them a second time.

The reliable guard is one invoice per deal per milestone, enforced where invoices are stored rather than remembered by whoever clicks. A duplicate that cannot be created beats one that has to be spotted, credited and apologised for.

Raise milestone invoices as drafts. The schedule was agreed months ago; the work may have moved since, and an invoice that goes out the moment a stage changes is one nobody checked against what was actually delivered.

Retention, and keeping the schedule as data

Many project contracts hold back a retention — commonly five or ten percent — until a defects period ends. Treat it as a milestone of its own with its own event, not as a discount on the others, or the invoices stop summing to the contract again.

And store the schedule as rows, not as a sentence in the terms. 'Thirty percent on signing, balance on delivery' in a paragraph cannot raise an invoice; the same thing as two rows with percentages can.

Common questions

How do I split a quotation into instalments that add up exactly?
Work in paise. Divide, round every share down, then add the leftover paise one at a time to the shares that lost most in rounding. ₹1,00,000 in three becomes ₹33,333.34, ₹33,333.33 and ₹33,333.33.
Is GST charged on each milestone invoice?
Yes, each invoice carries GST on its own amount. What matters is timing: an event-linked invoice is due by the date the event is completed, and an advance for services is taxable when it is received.
What if the work finishes earlier than the schedule said?
Invoice the milestone when its event happens, not on the date the schedule predicted. The schedule is an agreement about amounts; the dates follow the work.