Actuals & rate drift
The month you find out.
Every 3PL knows the account that quietly stopped making sense. The reason nobody catches it isn't carelessness — it's that checking means exporting billing, rebuilding the quote from memory, and doing it by hand for every client on the book.
How the numbers get in
You don't change one thing about how you bill.
No export, no integration project, no monthly ritual that gets skipped in December when everyone is buried.
You send the invoice
Exactly the way you send it today, out of whatever you bill from. Rateflow's address is already on the send, so a copy arrives here at the same time your client gets theirs.
It reads the document
Client, invoice number, period, every line item and every rate — pulled off the PDF itself. Not a total you'd have to take on faith, the actual lines.
It files itself
Once it has learned a client's billing codes, the next invoice from that client lands on the right account without anyone touching it.
Or it asks
Anything it can't place confidently goes in a queue with the parsed detail next to it, and you point it at the right account in one click. Never a quiet wrong guess.
If you'd rather not put an address on your billing, a CSV of invoices imports the same way, with column mapping and a preview before anything is written.
What that buys you
A sentence you can read off a screen.
Once a few months are in, every active account has a comparison running against the rates it was actually sold at — the accepted quote where there is one, or the baseline you entered for accounts that predate all this. This is that screen, from the demo account the whole site prices against: quoted $22,529, July actual $25,017.80, storage 400 → 631.

Quoted vs actual, by month
Storage pallets, pallets in, orders, containers and billing — what you quoted beside what happened, with the gap called out in words rather than left as a percentage to interpret.
Volume that outran billing
The specific shape worth catching: an account doing materially more work than it's paying for. It's the one a yearly spreadsheet review reliably misses.
Rates that drifted off the card
An invoice billing something other than the rate on the account's card is a finding the same month it happens, not a discovery two years later.
Accounts that changed shape
Compared against a median of recent months, not a trailing average — an average quietly re-anchors to a falling account and tells you everything is fine.
Partial months marked as partial
A month where half the book hasn't settled yet looks exactly like a business decline. It's labelled provisional and kept out of the baseline instead of being read as a trend.
Ready for the review
Their volumes and their invoices, in one place, before the rate conversation — which is a different meeting from the one where you say costs have gone up.
Limits
What this can't tell you.
Worth being straight about, because a tool that claims to know your margin without knowing your labour cost is lying to you.
It doesn't know your cost
Rateflow sees revenue and volume. It has no idea what a pick costs you in labour, so it will not tell you an account's margin. It tells you whether the account is priced consistently with what it's doing — a different and more answerable question.
It reads what you send it
The comparison is only as good as the invoices arriving. A client you bill outside your normal run is a client with a gap in the record, and it will say so rather than average over it.
Billing runs in arrears
What you invoiced in July describes June. Anything comparing a live number to a billed one has to line up the clocks first, and where it can't, it doesn't show the comparison at all.
It suggests, you decide
Nothing here changes a rate, sends a client anything, or files a finding as fact on its own. It surfaces things for you to look at.
Bring the book you already have.
Clients you signed years ago get their agreed rates entered as a baseline, so this works across the whole book — not only the accounts you quote from here on.