TMW invoice automation clearing 200+ invoices a day, no API required
Automated a mid-market fuel carrier's TMW invoicing by driving the desktop application itself with FlaUI; no API exists for the workflow. The first release targets the safest conditions, so 200+ of roughly 1,200 daily invoices now process touchless, and each release widens the coverage.
The client's name has been anonymized at the customer's request. The market, technologies, and solution are presented as delivered.
The problem
Roughly 1,200 invoices move through the carrier’s TMW invoicing workflow every day. The orders behind them already flow automatically (that’s the TMS integration), but invoicing still meant a person in TMW’s desktop application: keying, validating, and clicking through each invoice by hand.
The obvious fix has an obvious blocker. The invoicing workflow lives inside TMW’s Windows application, and there is no API for it. No endpoints, no integration surface, nothing to call. Most vendors stop there, or pitch a multi-year migration off TMW. The carrier didn’t want a migration. It wanted the invoices done.
What we built
An automation agent that uses TMW the way a person does: through the application itself. Built on FlaUI and C#/.NET, it runs on a dedicated Windows machine, reads each invoice, and works the same screens a human operator would, except it doesn’t get tired and it doesn’t fat-finger an amount.
Every invoice is evaluated against explicit automation conditions before the agent touches it. Invoices that match process end to end, touchless. Everything else routes to the team exactly as it always has, so the rollout changes nothing for the invoices that aren’t ready to automate. Each automated invoice is logged and reviewable.
The conditions are the point. Rather than promising full automation on day one, the first release targets the lowest-risk invoice types, the ones with clean data and unambiguous rules. Each release since widens the conditions, and the automated share climbs with it.
Results so far
200 to 250 invoices a day, about 20% of total volume, now process without a human touching TMW. The team’s workflow for everything else is unchanged, and TMW itself is unchanged: no migration, no new system to learn, no API that doesn’t exist.
The coverage number is a stage, not a ceiling. Each release adds conditions and captures more of the remaining volume, and this page gets updated as it climbs.
The fastest way to blow up an invoicing process is to automate all of it on day one. We took the opposite bet: prove the safest 20%, then widen. The number on this page goes up.