Did the files come in clean?
The branch uploads its POS export and cash sheet; HQ uploads the provider exports, which are split by branch. Then: whether every file was recognised, and a row-by-row account of what was kept and why anything was set aside.
Upload
Step 1 of a run. Nothing is called clean until every file passes its checks.
File checks
All passed for this run.
- Every sheet recognised. 10 provider sheets and the POS export matched a known layout.
- Period and store checked. All dates fall in 1–31 August (cash deposits run to 1 September).
- Split by branch. 363 meal-card rows (KES 437,801) belong to 41 other branches and were assigned to them, never matched here.
- Not a duplicate. No earlier upload has the same file fingerprint.
- Checksums agree. Cash deposit subtotals in the sheet add up to the deposits kept: KES 2,794,800.
Row ledger: nothing disappears
For each file: rows read, rows kept, and every row set aside with its reason. Kept + set aside must equal rows read, or the source is refused.
| Source | Recognised as | Rows read | Kept | Set aside | Why rows were set aside or changed | Ledger |
|---|---|---|---|---|---|---|
| POS | POS sales export | 55,683 | 25,447 | 0 | The POS lists each item separately: 55,683 item lines were grouped into 25,447 sales. | Balances |
| Glovo | Glovo orders | 6,538 | 6,538 | 0 | All rows kept. Glovo's commission is not in this export, so Glovo fees show as zero. | Balances |
| Uber Eats | Uber Eats orders | 4,350 | 4,305 | 45 | A second heading row was removed. The order date has day and month swapped in about half the rows, so it is not used for matching. | Balances |
| Bolt Food | Bolt Food orders | 1,929 | 1,929 | 0 | All rows kept. The commission column is a rate (10%), so the fee is worked out from it. | Balances |
| Little Cab | Little Cab orders | 24 | 23 | 1 | The title and heading rows were removed. | Balances |
| M-Pesa | M-Pesa till statement | 10,598 | 5,764 | 4,834 | 4,830 M-Pesa charge lines were added to their sale as its fee; 30 daily transfers to the bank are kept separately; reversed payments were set aside. | Balances |
| Pesapal | Card machine (Pesapal) | 4,511 | 4,511 | 0 | All rows kept. Card machine payments. | Balances |
| DPO | Card machine (DPO) | 820 | 820 | 0 | All rows kept. Card machine payments. | Balances |
| Meal cards | Meal cards (Pluxee/Sodexo) | 1,304 | 9 | 1,295 | The export covers every branch. 363 rows belong to 41 other branches and 1 could not be placed (Branch unknown); none are matched here. The rest of the set-aside rows are blank. | Balances |
| Vouchers | Vouchers | 7 | 7 | 0 | All rows kept. | Balances |
| Cash sheet | Cash deposits | 270 | 173 | 97 | 32 daily subtotal rows were set aside and used only to check the total: they add up to KES 2,794,800, the same as the deposits kept (KES 2,794,800). | Balances |
Kept and set aside, by source
Most rows set aside are fee lines folded into their sale (M-Pesa) or rows assigned to other branches (meal cards).
Built from the pipeline run of 10 Oct 2026 (Payments.xlsx + POS export). Customer details are masked and cashiers are shown as pseudonyms. Items tagged "assumed" rest on assumptions in the spec.