Invoices

Check the invoice against the usage before you pay it

Cost tooling usually stops at usage data, which leaves finance to trust that the numbers tie out to the actual bill. Xplorr keeps the provider invoice and the synced cost data side by side, matches them per account, and where they disagree it explains the difference by charge category instead of leaving you with two totals.

Xplorr invoices page showing $60,464.71 invoiced for the month across 5 invoices, 5 matched accounts within threshold and 0 accounts with variance, above a table of AWS, GCP and Azure invoices listing period, account, invoice number, issue date, subtotal, tax, total, status and a matched reconciliation badge.

Inputs

Where the Invoices numbers come from

Xplorr reads your accounts with read only credentials and never writes to your infrastructure. These are the sources behind this screen.

Provider invoices
Invoices are synced from the connected accounts, and one can be uploaded directly where a provider does not expose it through an API.
The cost data Xplorr already synced
The other side of the comparison is the usage level cost Xplorr collected daily through the month, from Cost Explorer, Azure Cost Management and the GCP billing export.
Charge categories
Tax, credits, refunds and other non usage charges are read as their own categories, because these are usually the reason a bill and a usage total do not agree.

Method

How the Invoices numbers are worked out

No black box. If a figure is an estimate or an apportionment rather than a billed line, the page says so.

  1. Invoices are matched per account, not in aggregate

    Each invoice is tied to the account it belongs to and compared against that account. A single organisation level total can net two errors against each other and look correct, which per account matching does not.

  2. Variance is measured against a threshold

    Small differences are expected from rounding and timing, so an account is marked matched when it falls within a threshold, and flagged for review when it does not. The point is to surface the few accounts worth looking at.

  3. The difference is broken down by charge category

    Where a variance exists, it is attributed to a category rather than reported as a single number, so the answer to why the invoice is higher than the usage is on the page.

  4. Subtotal and tax are kept apart

    Usage data is pre tax. Keeping subtotal, tax and total as separate columns is what makes the comparison against usage a like for like one.

  5. Where each invoice comes from, and where GCP differs

    AWS invoices are read from the Invoicing API using the payer account, and Azure invoices from the Billing API against a billing account named in the settings. Google publishes no invoice API for ordinary billing accounts, so GCP invoices are uploaded as CSV and then reconcile exactly like a synced one. Xplorr does read the GCP Cloud Billing budget for the period and shows it beside reconciliation as a hint, but it is never treated as an invoice.

  6. The comparison is run on two bases

    The invoice subtotal is compared against the platform total with the tax category taken out, and the invoice total against the platform total with it left in. An account counts as matched when either basis falls inside the threshold, which defaults to one percent, because agreement types differ in what they put into a subtotal.

  7. No invoice and no data are different results

    Reconciliation ends in one of four states: matched, variance, missing invoice, or missing data. Separating the last two matters, because an account the provider has not invoiced yet and an account whose cost sync returned nothing look identical if you only compare two totals.

In the console

What is on the Invoices screen

  • Total invoiced for the month and the number of invoices behind it
  • A count of matched accounts and of accounts with a variance to review
  • One row per invoice with period, account, invoice number and issue date
  • Subtotal, tax and total as separate columns
  • Issue status and a reconciliation badge per row
  • A reconciliation tab for the detail, plus sync, upload and reconcile actions
  • Month selector, so a closed period can be revisited

Common questions about Invoices

Why would the invoice differ from the cost data at all?
Tax, credits, refunds, support charges and rounding all appear on an invoice but not in usage data, and the two are cut at slightly different times. A difference is normal. A difference nobody can explain by category is the thing worth chasing.
Can I reconcile a provider that does not expose invoices through an API?
Yes, an invoice can be uploaded and reconciled the same way as a synced one, so a provider without invoice API access does not become the one account nobody checks.
Does this replace our accounting system?
No. It answers whether the cloud bill agrees with the usage you were charged for, then hands off a number you can trust to whatever system pays it.
When does last month's invoice appear?
The sync runs on the sixth of the month, once providers have issued their monthly invoices, and again on the sixteenth after late cost data and invoice corrections have settled. Reconciliation runs after each. A period can also be synced and reconciled on demand from the page when you do not want to wait for the schedule.
Why is tax zero on some Azure invoices?
Azure only populates the subtotal and tax fields for Microsoft Customer Agreement billing accounts. On other agreement types the billed amount is used as the subtotal and there is no separate tax figure to read, so the tax column stays empty and the pre tax basis is the comparison to trust for that account.
What access does invoice sync need?
More than cost sync does, which is why it is enabled separately per account rather than coming along with the connection. AWS needs permission to list invoice summaries on the payer account, because a member account cannot see the invoice at all. Azure needs a billing role on the billing account, such as Billing account reader, which is a different grant from the subscription Reader role that cost data uses.

Background reading

Why reconciling a GCP invoice starts from a CSV upload, since Google has no invoice API for ordinary billing accounts, is explained in What building cloud cost integrations teaches you.

How this compares

See this on your own accounts

Connect a cloud account with read only credentials and the first sync pulls your last 30 days, so this screen fills with your numbers instead of the demo workspace. Free during beta.