You automate carrier invoice reconciliation by having an agent compare every line of each vendor invoice with the charge lines on the job in your TMS the day the invoice arrives, booking the lines that match and flagging every mismatch for a person. A single ocean import job carries roughly 12 charge lines across 4 or 5 vendors: ocean freight, terminal handling, drayage, customs clearance, and accessorials. Your TMS holds every quoted and invoiced number but never compares them, because an ocean TMS is built to record charges, not to audit them. Done by hand, the comparison slips to month end. Done per invoice, a mismatch is still a routine credit request in week 1 instead of a write-off in week 6. The person keeps every decision on the flags: dispute, correct the job, or approve as billed.
How do you automate the reconciliation, step by step?
You automate it in 5 steps, with a person on every mismatch.
- Copy the invoices. A mail rule copies vendor invoices from the accounts payable inbox to the agent.
- Find the job. The agent reads the invoice and finds the job by bill of lading, container number or the job reference the vendor prints. An invoice that matches no job, or more than 1, goes to a person to assign.
- Match line by line. Each vendor’s charge codes are mapped to your TMS charge items, so a line matches even when the vendor names the charge its own way. A code with no mapping is flagged, not guessed.
- Book or flag. Lines that match are booked for vendors you have approved. Every other line is flagged with the 2 numbers and the source document side by side.
- A person decides. Your team disputes, corrects the job, or approves each flag. The agent does not pay and does not dispute.
On one illustrative drayage invoice (values changed), the result looks like this:
| Invoice line | Invoiced | On the job | Result |
|---|---|---|---|
| Linehaul, port to warehouse | 650.00 | 650.00 | Match, booked |
| Fuel surcharge | 85.00 | none | Flagged: not on the job |
| Chassis split | 120.00 | none | Flagged: not on the job |
| Pier pass | 35.00 | 35.00 | Match, booked |
2 of 4 lines needed no one. The other 2 reach a person while the move is a week old and the dispatcher still remembers the container.
What is charge reconciliation on an ocean import job?
Reconciliation is a line-by-line comparison between two documents that both claim to describe the same shipment: the charge lines on the job in your TMS, and the invoice the vendor sent. It sounds like arithmetic. In practice it is identity matching, because the two documents rarely describe the charge the same way.
A drayage vendor bills “fuel surcharge.” The job has it folded into the linehaul rate. A terminal invoices a pier pass the job never anticipated. A carrier bills against the master bill of lading when your job is keyed to the house bill. None of these is fraud, and most are not even errors. They are two systems describing one move in two vocabularies, which is exactly the kind of work that is tedious for a person and mechanical for software.
The reason it matters on ocean import specifically is vendor count. A domestic truckload move has one vendor and two or three lines. An ocean import job has the carrier, the terminal, the drayage company, the customs broker, and sometimes a warehouse, each invoicing on its own schedule, in its own format, weeks apart. There is no single moment when all the paper is on the desk at once.
Why does the TMS not flag the gap itself?
Because it was never asked to. A TMS stores the quoted charge and the invoiced charge as separate records, both valid, with no rule connecting them. Nothing in the platform asks whether they agree.
That is not a defect in the software. A system of record’s job is to hold the truth of what happened, and both numbers are true: that was the quote, and this was the bill. Deciding whether the difference between them is acceptable is a commercial judgment about a vendor relationship, which is not something a record-keeping system has an opinion about.
The practical consequence is that reconciliation exists as an intention rather than a step. It is not on the critical path. No container is held for it, no customer is waiting on it, and nothing breaks visibly on the day it is skipped. So it slips, and it keeps slipping, until it is a month-end batch job across a hundred shipments where nobody can reconstruct which drayage bill was legitimately high.
What are the most common charge mismatches on ocean import?
Four patterns account for most of what a reconciliation finds on ocean import.
The accessorial that was never on the job. A chassis split, a pier pass, a congestion fee, a pre-pull. The move generated a real charge that the original quote did not anticipate. It may be entirely legitimate. It is also the single easiest line to bill without anyone noticing, because there is no quoted amount to compare it against.
The rate that drifted. The drayage came in above quote. Sometimes it is a fuel adjustment, sometimes a rate change that was communicated and forgotten, sometimes an error. Individually small enough to wave through, which is why it survives.
The duplicate across vendors. Two parties bill for overlapping scope, most often when a drayage vendor and a warehouse both charge for the same handling. This one is expensive and genuinely hard to see, because both invoices look correct in isolation. You only catch it by holding them side by side.
The charge on the wrong job. A vendor references the master bill when your job is keyed to the house bill, and the charge lands on a sibling shipment under the same master. Both jobs now have wrong numbers, one high and one low. The pair nets to zero across the month, so the total looks right, and the per-job margin on both is wrong. If house and master bill identity is unfamiliar territory, our ocean import workflow walkthrough covers where the two diverge.
What links all four is scale rather than size. Any one of them costs less than the time spent arguing about it, which is the honest reason they get waved through. The problem is that they are not one-offs. The same drayage vendor applies the same fuel adjustment on every job, and the same terminal bills the same pier pass on every container out of that port. A charge that is trivial per shipment and consistent across a hundred shipments is not a rounding error, it is a standing leak, and it is invisible precisely because each instance looks too small to chase.
When does a mismatch stop being disputable?
There is a window, and it is shorter than most teams treat it as. In the week the invoice arrives, a question about an unexpected accessorial is routine: the vendor still has the move fresh, the dispatcher remembers the container, and the correction is usually a credit on the next invoice. Nobody’s relationship is strained by it.
By month end, the same question is an accounting exercise. The vendor has closed their period, the person who ran the move has done two hundred more since, and the burden of proof has quietly moved onto you. Most teams, correctly reading the cost of pursuing it, let it go.
That is why reconciliation timing matters more than reconciliation thoroughness. A rough check in week one recovers more money than a careful audit in week six, because the week-one version ends in a credit and the week-six version ends in a write-off. Anything that moves the check earlier is worth more than anything that makes it more detailed.
What does a reconciliation agent do with the pile?
The Finance Agent reads the charge lines on the job and the vendor’s invoice, matches line against line, and flags every mismatch for your team. It runs when the invoice arrives rather than when someone finds time, which is the part that matters: the check happens while the vendor relationship is current and a dispute is still a normal conversation.
What it produces is a reconciliation with the mismatches flagged, not a decision. Each flag carries the two numbers and the source document, so the reviewer sees the drayage invoice line and the job line together and does not go hunting. The person decides what each one means: dispute it, correct the job, or approve it as billed.
That split is deliberate and it is not a limitation. Whether to dispute a 40 dollar accessorial with a drayage vendor you use twice a week is a judgment about a relationship, not a data problem. The agent removes the comparison, which is the part that does not need judgment and is the reason the whole task gets deferred. The agent books the lines that match, for vendors you have approved. It does not pay, and it does not dispute. Every mismatch goes to a person on your team.
- 01Invoice arrives
- 02Match line by lineevery line
- 03Flag mismatchestwo numbers and the source
- 04A person decidesdispute, correct or approve
Side by side, the two ways this gets done:
| Reconciling by hand | With the agent | |
|---|---|---|
| When it happens | Month end, in a batch, if at all | When each invoice arrives |
| What gets compared | Whatever there is time for | Every line on every invoice |
| Vendor conversation | Weeks stale, hard to dispute | Current, still a normal ask |
| Who decides | A person, on the lines they got to | A person, on every flag raised |
| What the TMS does | Stores both numbers, compares neither | Stays the system of record and receives the lines that match |
How do you start without running a project?
A first agent starts as a scoped pilot on your own documents. We need a mail rule that copies mail to the agent, sample documents, and a TMS login. The adapter and your rules for the job take the time. The agent then reads the invoices landing in that inbox, compares them against the jobs in your TMS, and emails your team a reconciliation with the gaps flagged. TIO works through an adapter built for your TMS. Adapters run in production for two TMS platforms. Another TMS needs its own adapter first. The TMS stays the system of record. The agent books only the lines that match, and every mismatch goes to a person.
If your reconciliation currently happens at month end, or honestly not at all, book a demo and bring a handful of recent ocean import invoices. We will run the agent against your real jobs on the call and show you what it flags.
TIO is an AI agent workforce for freight forwarders and 3PLs: named agents that quote freight, create lots and delivery orders, and reconcile charges from the inbox your team already uses. Meet the agents.
Frequently asked questions
How do I automate carrier invoice reconciliation?
Have an agent read each vendor invoice when it arrives, find the job it belongs to, and compare every invoice line with the charge line on the job. Lines that match are booked for vendors you have approved. Every mismatch is flagged with 2 numbers and the source document, and a person decides whether to dispute it, correct the job, or approve it as billed. Run it per invoice, not at month end: a question raised in week 1 usually ends in a credit, the same question in week 6 usually ends in a write-off.
What is ocean import charge reconciliation?
It is the check that the charges recorded on a shipment in your TMS match what the vendor actually invoiced. An ocean import job carries roughly 12 charge lines across 4 or 5 vendors: ocean freight, terminal handling, drayage, customs, and accessorials. Reconciliation means comparing each line on the invoice against the line on the job, then deciding what a mismatch means. The TMS stores both numbers but does not compare them, because it was built to record charges, not to audit them.
Why does the TMS not catch charge mismatches on its own?
A TMS is a system of record, not an audit system. It holds the quoted charge and the invoiced charge in separate places and treats each as valid data. Nothing in the platform asks whether the two agree, and no rule flags a drayage bill that arrives 40 dollars over quote. A person has to open both and compare line by line, which is why the check gets deferred to month end when the volume makes it impractical.
What are the most common charge mismatches on an ocean import job?
4 recur: an accessorial that appears on the invoice but was never on the job, such as a chassis split or a pier pass; a rate that came in above the quoted amount; a duplicate line billed by two vendors covering the same move; and a charge billed to the wrong job when a vendor references the master bill instead of the house bill. Each one is small enough to pass an eyeball check and consistent enough to matter across 100 jobs.
Can an AI agent reconcile charges automatically without a person approving?
Only for the lines that match. The Finance Agent reads the job charges and the vendor invoice and matches line against line. It books the lines that match, for vendors you have approved, and flags every mismatch for the team. It does not pay the invoice. A person decides what each flag means, from 3 choices: dispute the invoice, correct the job, or approve it as billed. The judgment is a commercial decision about a vendor relationship, not a data-matching problem, so the agent does the comparison and the person makes the call.


