A merchant statement is the least readable document a small business receives, and it is not readable by accident. Turning it into forty rows with a category each is the step everything else depends on.
Key takeaways
Every fee gets a basis: per transaction, percentage of value, or monthly.
Every fee gets a category: interchange, scheme, acquirer margin, or fixed.
Interchange cannot be discounted by anybody. Say so, loudly.
A fee not in the contract is a question, not an error.
Extract once, then query the fees. Never re-read the PDF.
One document, three destinations
Fig 1. Every fee on the statement belongs to one of four groups. Which group it is in decides whether there is anything you can do about it.
Why the categories matter more than the amounts
If your effective rate is 2.31% and 1.34 points of that is interchange, then a competitor offering you 1.9% is either mispricing the deal or is not describing the same card mix. Interchange is a regulated pass-through in the UK and EU and a scheme-set one elsewhere; nobody discounts it, because nobody owns it.
That single distinction changes what a good outcome looks like. A provider who cannot move your effective rate below 2.1% may still be worth pressing for a better margin, and a provider promising 1.6% is telling you something about their assumptions rather than about your business.
The fees that are not in your contract
Every statement carries a handful of fees that appear nowhere in the agreement you signed. Some are legitimate pass-throughs introduced after signing. Some are the result of a scheme fee change that got applied with a margin on top. And some are simply wrong — a PCI non-compliance charge still being levied two years after you became compliant is the most common single error in this whole area.
The system does not decide which is which. It matches every fee against the rate card and puts the unmatched ones in a list with their amounts, which is the difference between a suspicion and an email.
What extraction has to survive
Fig 2. The extraction step is the only genuinely hard engineering in the system, because the input is adversarial by design.
Database
App integration
Analytics
Extract once
The PDF is the source of record and it is read exactly once, into forty rows in a table. Every subsequent question — what did interchange cost, which fees changed since March, what is the margin as a percentage — is a query against those rows.
This matters for cost, but it matters more for consistency. A number that came from a second reading of the same document is a number that can disagree with the first, and a report that contradicts last month’s report is a report nobody trusts again.