
Bills, checked against what you signed.
Our estimate: 40–80 invoice formats across 15 countries for a group of this shape. Each line is checked against the contract and the inventory, and every format is learned once.
Request a pilot
- What it does
- Turns carrier invoices into a tree of sections, lines and usage detail, each line carrying its own service period and direction, checked arithmetically in minor units before anything downstream reads it.
- What it reads
- CSV and XLSX through saved mappings, built; PDF through AI extraction into a review queue, built, with its accuracy measured per carrier in a pilot; structured e-invoicing XML is planned. Each path carries its own status label on the carriers page.
- What stays yours
- Every line, exactly as billed. Money stays integer minor units beside its ISO-4217 code, every conversion names the rate id it used, and an unclassified charge is kept and routed to review.
- Where it shows up
- The cost side of every metric, the evidence behind every dispute, and the most reliable single source the inventory has.
Also inside this capability
Each row opens to what it does and where it stands.
Contracts and pricing
The contract is the second file every bill is read against.
- Price lines
- Per service, site and country, with amendments and linked documents kept beside the contract.
- Notice deadlines
- Each contract's notice deadline carries an alert.
- Findings
- A line billed above or below its contract price, billed before go-live, or billed for a service contracted and never delivered opens a finding.
- Status
- Built.
Findings and disputes
What the files prove on day one, per operating company, in its own currency.
- Billed, missing from inventory
- A bill line with no service behind it in the inventory.
- Held, missing from bills
- A service in the inventory that no bill mentions.
- Outside the contract
- A charge outside any contract, or outside its contract's term.
- Order reference
- A charge with no order reference behind it.
- Disputes
- A finding becomes a dispute with its evidence attached: the bill line, the contract price and the inventory record.
- Status
- Built.
Bundles
- What a bundle is
- A managed package the carrier prices as one charge.
- How it is read
- The charge is split to its member services, so each carries its share of the cost and none is counted twice.
- Status
- Built.
Who uses it
- The reader
- Group finance and the accounts-payable team who receive the invoices, and regional IT, who know what the lines are for.
- The question
- What did each carrier bill this month, line by line, in the currency it billed in, and does the document add up?
- What they get
- Every invoice as lines with their own service periods, an arithmetic check on the document, a review queue for the uncertain field, and the rate id on every converted figure.
- Where it starts
- Three invoices, in whatever form the carrier sent them. A PDF, a spreadsheet and a portal export are three different paths into the same tables.
How it is built
The review queue
An extraction engine at 95% accuracy is wrong in front of a CFO one time in twenty, so human review is a first-class surface rather than error handling. A field below the carrier's confidence floor, an unclassified charge, a failed arithmetic check or a Hijri date opens a work item showing the page and the exact location of the claim.
Money that survives audit
Amounts are integer minor units plus an ISO-4217 code, with the exponent read from a currency table. KWD, BHD and OMR have three decimals. FX rates are append-only, a restated rate is a new row, and every converted figure names the rate id it used.
Real billing periods
Recurring charges bill in advance and usage bills in arrears, so one invoice spans two windows. Every line carries its own period, which is what stops a false variance appearing on every install and every disconnect.
Bilingual and local
Arabic-Indic digits, the Arabic decimal and thousands separators, Hijri issue dates with mandatory review confirmation, bilingual label matching, and dated per-jurisdiction tax rates including levies that sit outside the VAT base.
What you get
Lines you can dispute
Each line carries its service period, its direction, its amount in minor units and a pointer back to the page it came from, so a dispute opens with the evidence already attached.
Totals that reconcile
Lines sum to the document total and tax lines sum to the declared tax, in minor units, before anything downstream reads the invoice. A mismatch is a review item, with the failing figures shown.
Conversions you can reproduce
Every converted amount names the rate id it used, and rates are append-only. A figure presented in March is the same figure in September, whatever was restated in between.

How it works
- LandThe invoice arrives as a file and is stored as immutable raw bytes. Nothing downstream ever edits it; corrections are new claims against it.
- ExtractTwo paths write into the same tables, both built: saved mappings for CSV and XLSX, and AI extraction from PDF. Structured e-invoicing XML is planned as a third peer. Every extracted field carries a confidence and a locator.
- CheckLines must sum to the document total in minor units, and tax lines must sum to the declared tax. A mismatch opens a review item with the document and the failing figures attached.
- ConvertEach figure is held in three layers: as billed, in the entity's functional currency, and in the group's presentation currency. Each layer names its rate id, and the presentation rate is frozen onto the roll-up so a later restatement cannot move a board pack already presented.
One invoice, end to end
A bilingual PDF invoice from a Gulf carrier, billed in a three-decimal currency, followed from the mailbox to the group figure.
- Landing
- The PDF is stored as raw bytes under the operating company, deduplicated by content hash. A second copy forwarded by a colleague is recognised as the same document.
- Extraction
- Pages go to the extraction step. Arabic-Indic digits are folded, the Hijri issue date is read and flagged for confirmation, and each field lands with a confidence and a locator.
- The check
- Twenty-three lines sum to the total in fils, and the VAT line matches the declared tax. One line's charge code is unclassified and opens a review item showing the page.
- The review
- A person classifies the charge in the queue. The correction is recorded against the invoice as a new claim, with the earlier extraction kept beneath it.
- The join
- Each line matches a service on the inventory. The recurring charges are held as billed, in the entity's functional currency and in the group's presentation currency, each naming its rate id.
- The figure
- The month's cost fact per service is fixed, and the group view reads it. A restated rate next month adds a row, and the fixed figure stays as presented.
Questions about bills
How accurate is the extraction?
Extraction carries uncertainty, so every field lands with a confidence, and anything under the carrier's floor waits for a person. The review queue is where that happens, and it shows the page beside the field.
Do you handle invoices in Arabic?
Yes. Bilingual label matching, Arabic-Indic digits and the Arabic separators are built in, and a Hijri issue date is read and then confirmed by a person before it drives a period.
Can a carrier's invoice change layout on us?
It will, and a changed layout opens a review item rather than a silently wrong figure. A saved mapping is keyed to the shape of the header row, so the new layout becomes a second mapping and the old one keeps working for the older documents.
Who sees the review queue?
The people you give the billing permission to, inside the operating company the invoice belongs to. Group finance sees the queue across entities through the audited group path, so a stalled item is visible from the seat that cares about the close.
Related capabilities
