A drayage brokerage rarely loses its margin on a bad rate. It loses it to a chassis charge nobody billed, four days of demurrage somebody absorbed, and an invoice that quietly turned ninety days old.

13
Charge types
Against five bill-to parties
4
Aging buckets
One implementation, everywhere
1
List of charges
The invoice reads it directly
0
Floating-point amounts
Integer cents throughout
Charges → invoice
A charge carries the party it bills to, and the invoice builder reads the charges directly. An accessorial that exists is billed, or it is not a charge.
A load with accessorials billed to three parties produces three invoices, and the end-to-end test that says so runs on every change. It is a property of the schema, not a habit the team has to keep.
Charge types
Bill to
→ 3 INVOICES · 0 CHARGES LEFT BEHIND
Nothing on the load is optional to copy.
Both sides
Aging on its own is a report. A worklist is a morning’s work, ordered so the call worth making is at the top.
Chase worklist · today
INV-2160 · MSMU 461 5308 · last contact 21-AUG
INV-2174 · TCLU 772 9140 · promised 05-SEP, not received
INV-2188 · disputed accessorial · POD sent 02-SEP
There is one aging implementation in this codebase. It is why the number on the dashboard and the number on the statement cannot drift apart.
Payables
A factored carrier paid directly is a carrier paid twice — once by you, once by the company that already bought the invoice.
The advance ledger
Where the brokerage fronts steamship line or customs charges, the container is not released until the advance is received in full — principal and the $ 75.00 fee.
Proof is three things together: the transaction or SWIFT reference, the amount, the date. The reference is unique across the whole system after normalisation, enforced by a database index rather than by application code.
A short payment cannot be released by finance. It escalates to the owner, who overrides in writing — which is then part of the record for good.
✕ FINANCE CANNOT RELEASE
Short, and the reference is refused by a unique index — so two people recording at the same instant cannot both win.
Expenses & P&L
Revenue minus carrier cost is the number every TMS shows. The number an owner runs the business on is that, minus the lights.
Software & licences
12 seats
$ 840.00
$ 10,080.00 / yr
Office rent
Dallas
$ 2,400.00
$ 28,800.00 / yr
Payroll — operations
6 people
$ 21,600.00
$ 259,200.00 / yr
Payroll — sales
3 people
$ 12,300.00
$ 147,600.00 / yr
Insurance & bonds
Bond, E&O
$ 1,150.00
$ 13,800.00 / yr
Monthly total
$ 38,290.00
$ 459,480.00 / yr
The yearly figure is computed on read and never typed. Rows are extensible. Owner and finance only.
Every amount on this page is held as an integer number of cents and rounded once, at the moment it is displayed. No money in this system is ever a floating-point number — that is how totals drift a cent a load until somebody spends a weekend reconciling them.
Forty minutes, no slides. Bring one live container and one messy invoice.
What happens on the call