A milk bill looks like the simplest arithmetic in the world: quantity times rate. In practice almost every real bill involves at least one of a part month, a rate change, a partial payment, a carried balance or a credit — and each of those is where the errors come from.
This guide works through the calculation properly, with examples, including all the cases that are not just multiplication.
The basic calculation
For a customer on a flat rate with the same quantity every day:
Bill = Total litres × Rate per litre
Example: 1 litre a day for 30 days at 60 per litre = 30 × 60 = 1,800.
That is the version that almost never happens. Here is the one that does.
The calculation that actually applies
Closing amount = Previous balance + Charges for the period − Payments received − Credits
Example. A customer who owed 240 from last month, took milk through September, paid 1,500 on the 12th, and was credited 60 for two sour litres:
- Previous balance: 240
- September charges: 1,800
- Payments received: −1,500
- Credits: −60
- Closing amount: 480
Every one of those four lines should appear on the bill. A bill showing only “1,800” is arithmetically true and practically useless, because it does not tell the customer what to pay.
Morning and evening deliveries
Where a customer takes milk twice a day, the two shifts are separate entries and are added, not averaged.
Example: 1 litre every morning and 0.5 litre every evening, 30 days, at 60:
- Morning: 30 × 1 = 30 litres
- Evening: 30 × 0.5 = 15 litres
- Total: 45 litres × 60 = 2,700
The reason to keep them separate rather than recording “1.5 litres per day” is that shifts get missed individually. When a customer says “there was no evening milk on the 14th”, a combined figure cannot answer them.
Part months
Do not pro-rata a monthly figure. Count the days actually delivered and multiply.
Example: a customer starts on the 12th of a 30-day month, 1 litre a day at 60. Days delivered: 12th to 30th inclusive = 19 days. 19 × 1 × 60 = 1,140.
The inclusive count is where people slip. From the 12th to the 30th is 19 days, not 18 — subtract and add one.
Irregular quantities
When the quantity varies, there is no shortcut: sum the litres, then multiply once at the end. Multiplying each day separately and then adding introduces rounding differences.
Example: a week of 1, 1, 1.5, 1, 0, 2, 1 litres = 7.5 litres × 60 = 450.
A rate that changed mid-month
Split the period at the change date and calculate each part at its own rate.
Example: rate rises from 60 to 64 on the 16th, 1 litre a day, 30-day month:
- 1st to 15th: 15 litres × 60 = 900
- 16th to 30th: 15 litres × 64 = 960
- Total: 1,860
Never apply the new rate to the whole month “to keep it simple”. It is a small amount and a large amount of mistrust.
Fat-based bills
Where a customer is billed on quality rather than volume, the per-litre price is derived rather than fixed:
Amount = (Litres × Fat% × Fat rate ÷ 100) + (Litres × SNF% × SNF rate ÷ 100)
This is covered with worked examples in fat and SNF rate calculation.
Rounding
Round once, at the end, on the bill total — not on each day’s entry. Rounding thirty times and then adding produces a figure a customer with a calculator will not be able to reproduce, and “my total is different from yours” is the worst possible start to a billing conversation.
Pick a convention (nearest whole unit is usual) and apply it the same way every month for every customer.
Credits and adjustments
Show these as their own line with a reason, never by quietly reducing the quantity. “Credit 60 — sour milk, 12th and 13th” is reassuring. A month where the litres inexplicably do not match what the customer remembers is not.
Advance payments
Treat an advance as a payment against the account, which puts the balance in credit. The next bill then draws it down and shows a smaller amount due, or a remaining credit. No special handling is needed as long as your records carry a balance forward.
Example: customer pays 3,000 in advance, takes 1,800 of milk in the month. Closing balance: 1,200 in credit, carried to next month.
A worked full example
A customer in a 31-day month: 1 litre morning daily, 0.5 litre evening on alternate days (15 days), rate 60 throughout, previous balance 300, paid 2,000 on the 9th, credited 60.
- Morning: 31 × 1 = 31 litres
- Evening: 15 × 0.5 = 7.5 litres
- Total litres: 38.5
- Charges: 38.5 × 60 = 2,310
- Previous balance: +300
- Payment: −2,000
- Credit: −60
- Closing amount due: 550
The five errors that cause most disputes
- Off-by-one on the day count in part months. Count inclusively.
- Applying a new rate to the whole period instead of splitting at the change date.
- Rounding per entry rather than once on the total.
- Forgetting the carried balance, so old dues silently disappear each month.
- Recording a payment late or not at all, so the customer is asked for it twice.
All five disappear the moment the bill is built from dated entries rather than assembled by hand at month end — which is the entire argument for doing it in software rather than on paper.
Where to go next
Try the numbers on our free milk bill calculator. For rates, see fat and SNF rate calculation; for records, keeping a customer ledger that holds up; and for doing all of this automatically, how automated dairy billing works.
Milk Diary builds each month’s bill from the entries you record — handling part months, mid-period rate changes, partial payments and carried balances — and exports it as a PDF. It is free on Google Play.