Collection by session
Morning and evening collections recorded separately, because quantities, rates and suppliers genuinely differ between them.
DairyDesk
From the farm gate to the counter — milk collection, farmer payments, subscriptions and daily orders in one system, with the gap between litres in and litres out visible every day.
Runs in the browser. Data is saved on the server, so every device sees the same records.
Why it matters
Buying from farmers and selling to customers are separate ledgers, and the interesting number is the one between them: the litres you paid for that never turned into a sale. Track them apart and that number never appears at all.
Two habits do most of the work. Store the rate on the transaction itself rather than in a “current rate” field somewhere, so changing a rate today does not silently rewrite last month. And bill subscriptions from delivered days, not by multiplying a standing quantity by thirty.
Features
Morning and evening collections recorded separately, because quantities, rates and suppliers genuinely differ between them.
Each collection and sale carries the rate that applied at the time, so a rate change today cannot retroactively alter historical records.
Dues built from actual litres received and the rates applied, rather than an estimate reached at the end of the month.
Customer standing orders with each day's delivery recorded individually — including the days the standing quantity was delivered as normal.
Invoices come from the delivery record, so a customer who was away for four days is charged for the days they actually received milk.
Walk-in sales alongside subscription deliveries, so the day's total sold is one number and not two lists to add up.
Litres in against litres out, calculated daily while it is still small enough to explain.
Records live on the server, so the shop and the office are looking at the same book.
How it works
Enter the morning collections — farmer, quantity, rate — then the morning subscription deliveries.
Do the same for the evening session, and log the day's counter sales.
Record the litre difference. Caught daily it is a question about pouring or spillage; caught monthly it is an argument.
Questions
Because they are different transactions. Quantities, rates and often the suppliers differ between sessions, and merging them into a daily total hides the variation you need in order to spot a problem.
From the record of delivered days. Billing by multiplying a standing quantity by thirty produces disputes every month; billing from deliveries produces a number the customer can check.
Usually generous pouring, measurement error, spillage, staff consumption that was never written down, and sales entered late — rather than theft. Making the figure visible tends to turn hidden loss into a recorded cost.
Yes. The rate is stored on each transaction, so updating today's rate leaves every earlier entry exactly as it was.
Accounts are created by your administrator under Users in SwiftPOS. Message us on WhatsApp if you need the first one set up.
The rest of the toolkit
Point of sale with ZATCA receipts
Site cash you can reconcile
Milk collection to counter sales
Batch yields and mill stock
Students, attendance and fees
Orders, deliveries and payments
Resume builder, Word and PDF
ZATCA tax invoices in seconds
Open it in the browser, or message us and we will set your first account up.