Driver cash module — 100 MAD/month

The money that leaves in cash and comes back as paper

Three thousand dirhams handed to a driver before Tangier–Murcia is neither a charge nor an expense: it is a balance. The module keeps that balance as a ledger — one row per movement, never modified — and turns the receipts brought back into traceable reimbursements, with a state at every step.

1 row per movement
an append-only ledger, never corrected in place
2 currencies
dirham and euro, never added together
4 states
from submitted receipt to reimbursement

What the cash box costs without a ledger

The advances notebook

One page per driver, a pen, and the company’s only copy of the balance. The day the notebook is lost, the debt is negotiated from memory.

Receipts arrive in a bundle three weeks later

Tolls, diesel, ferry, customs, parking: you reimburse what can be found, and the driver always finds more than the company does.

Two currencies in the same pocket

The driver comes back with euros and dirhams. The notebook has one column, so someone converts at a rate from memory — and the balance stops being an exact debt.

What the product does

An advance is paper before it is money

The amount is pre-filled from the scale — so much per day, so much per kilometre — the operator keeps the last word, and the «travel expenses» slip prints for signature. The ledger row is written only when the cash is handed over.

The detail that matters. An advance’s state is not a field somebody updates: it is derived from the dates. An advance prepared but not paid out moves no balance, because the money is still in the box.

An expense receipt has four states and a refusal reason

Submitted, received, approved, reimbursed. Every step is timestamped and carries its author; a refusal must say why. The queue shows the photo of the receipt next to the decision to be made.

The detail that matters. The reimbursement writes the ledger row in the same transaction as the state change: there can be no reimbursed money without a movement, and no movement without an approved receipt.

The balance is a sum, not a field

A driver’s balance is the sum of their rows, computed on read. There is no «balance» column that could be corrected by hand on a Friday evening.

The detail that matters. The prohibition lives in the database, not in the code: the application physically has no right to modify a ledger row, and a test tries to do exactly that on every build to prove the refusal holds.

Currencies never mix

A driver running to Spain has a dirham balance and a euro balance, shown side by side. The product does not convert: an invented rate would turn an exact debt into an approximation.

The detail that matters. It is the same rule as in the margin, where dirhams and euros are shown as two sums with no total. Adding two currencies produces a wrong figure that looks right — the worst kind of figure.

Correcting means writing one more row

Supplement, deduction, adjustment: every correction explains itself — the note is mandatory — and leaves its trace. Change given back on an advance is a row, not an eraser.

The detail that matters. The same doctrine as the invoice: you do not cross out, you write the opposite. A notebook you can erase is not proof — and proof is exactly what is at stake the day a driver leaves disputing their balance.

my.transport.tinycio.ma/cash
Driver cash — balances
4 drivers · 3 receipts awaiting a decision
DriverBalanceAdvances this monthJustifiedLast movement
H. El Amrani− 1 250 MAD3 0001 750yesterday · toll reimbursement
Y. Benali0 MAD2 5002 50004/09 · advance returned
M. Ouali− 400 MAD · − 60 EUR2 0001 60003/09 · diesel, Algeciras
K. Tazi+ 320 MAD01/09 · supplement
The third row is the reason the module exists: this driver owes 400 dirhams and 60 euros. Two debts, two columns, no conversion — the day the euros come back, the first one does not move.

What protects you

The ledger is append-only

No row can be modified or deleted, not even by a programming mistake: the write permission is withdrawn at the database level. What was paid out stays paid out, and is corrected by an opposite row.

A payout cannot leave twice

Paying out an advance and reimbursing a receipt are unique by construction: a double click, a retry after a dropped connection or two operators on the same file do not send the money out twice.

Driver cash does not enter the trip margin

An advance is a movement of treasury, not a cost. The cost is the approved receipt and the invoice behind it. Otherwise the same toll would be counted twice in the profitability of the mission.

The receipt stays attached to the row

The photo does not live in someone’s phone gallery: it is attached to the movement, and reopens three months later from the driver’s card.

What does not exist yet

Receipt entry by the driver, photo included, from their phone arrives with the driver app; payroll will later write into the same ledger with its own row types. The balance will remain exactly the same sum, made of the same movements.

100 MAD/month, 14-day trial — 50 MAD/month for the first three months.

The module works on its own. With the Fuel module, a fill-up paid in cash by the driver and the card transaction are reconciled instead of counting twice; with payroll, salary rows will land in the same ledger.

Start a 14-day trial

Frequently asked questions

Our drivers have no smartphones. Does this still work?

Yes, completely. Everything is entered at the office: the advance prints for signature, receipts are photographed on return and attached to the expense. The driver app will add a source of entry; it will not replace this one, and nothing you have already entered will change shape.

How is the account of a driver who leaves settled?

Through the same rows: an advance return for what they hand back, a reimbursement for what they advanced, a deduction where needed — each dated, explained and signed by its author. The balance reaches zero because the movements say so, never because someone typed zero.

See also

Your workspace in 9 minutes.

Create the account, tick your modules, add the trucks — the first mission leaves today.