Invoices and Reconciliation: Match Provider Bills Against Synced Cost Data
Invoices and Reconciliation
Section titled “Invoices and Reconciliation”The Invoices page puts provider invoices next to the cost data Xplorr synced, and explains the difference between them.
This matters because the two numbers are not supposed to be identical. Cost APIs report usage; invoices report what you were billed, including credits, tax, support, marketplace charges and commitment purchases that land on their own schedule. Reconciliation tells you whether a gap is one of those expected differences or a real problem.
Provider support
Section titled “Provider support”| Provider | Invoice source | Setup |
|---|---|---|
| AWS | Invoicing API | invoicing:ListInvoiceSummaries plus the 12 digit payer account ID |
| Azure | Billing REST API | A billing role (Billing account reader or Invoice manager) plus the billing account ID |
| GCP | No public invoice API | Upload invoices as CSV. A billing account ID adds the month’s budget as a hint. |
| Anything else | None | Upload as CSV |
Google Cloud has no public invoice API for most billing accounts, so GCP invoices are downloaded from the Google console and uploaded here. The Cloud Billing budget figure Xplorr can read is shown next to reconciliation as a hint and is never treated as an invoice.
A note on AWS: invoice PDFs are not exposed by the API, so AWS rows never carry a PDF link. Azure rows do.
A note on Azure: subtotal and tax are only broken out for Microsoft Customer Agreement accounts. Under other agreement types the billed amount is used as the subtotal.
Setting it up
Section titled “Setting it up”Open Invoices > Setup. Each cloud account gets a card. Admins can:
- Enter the Payer account ID (AWS) or Billing account ID (Azure, or GCP for the budget hint).
- Click Save.
- Click Enable, which is available for providers with an invoice API.
Everything is off by default. Xplorr stores only these non secret settings here; your cloud credentials stay where they already are.
Pulling and checking invoices
Section titled “Pulling and checking invoices”Three admin actions sit at the top of the page:
- Sync fetches invoices from the provider, then reconciles in the same run.
- Reconcile re-runs the comparison against invoices already on record.
- Upload takes a CSV for providers without an API.
The period selector covers the last 12 months and starts at last month. The current month is deliberately not selectable, because an incomplete month cannot be reconciled meaningfully.
Automatically, invoice sync runs at 06:00 UTC on the 6th and on the 16th of each month, always for the previous month. The 6th catches invoices as providers issue them; the 16th picks up late cost data and invoice corrections once they settle.
Sync, reconcile and upload are limited to 10 requests per 15 minutes per user.
How reconciliation works
Section titled “How reconciliation works”For each cloud account and billing month, Xplorr compares the invoice totals for that month against synced cost data for the same account and month, grouped by charge category.
It checks two bases:
- Pre tax: invoice subtotal against platform cost excluding tax
- With tax: invoice total against the full platform cost
A month counts as matched if it is within the threshold on either basis. The default threshold is 1 percent, and you can pass a different one when running reconciliation manually.
| Status | Meaning |
|---|---|
| Matched | Within the threshold on at least one basis |
| Variance | Outside the threshold on both bases |
| No invoice | Cost data exists for the month but no invoice does |
| No cost data | An invoice exists but no cost data was synced |
When there is neither an invoice nor cost data, no result is recorded at all rather than a misleading zero.
An account is in scope for reconciliation if it has an enabled invoice integration or at least one invoice on record, so a single CSV upload is enough to bring an account in.
Explaining a variance
Section titled “Explaining a variance”This is the part that saves the most time. Rather than leaving you with “the numbers differ by 4.2 percent”, Xplorr tests each charge category to see whether adding or removing it closes the gap, and flags the one that does.
Categories it tests, and why each commonly explains a difference:
| Category | Typical explanation |
|---|---|
| Credit | The invoice amount is gross of credits, or credits were applied on a different invoice |
| Tax | Tax is only comparable on the with tax basis |
| Support | Support is often billed on a separate invoice or lags a month |
| Marketplace | Marketplace charges are usually invoiced separately by the seller of record |
| Purchase | Commitment upfront fees can land on a different invoice date than the usage they cover |
| Fee | Fees can be billed separately |
| Adjustment | Adjustments are applied by the provider after the invoice is issued |
When nothing explains it, the result says so and suggests rerunning after the provider finalizes the bill, because recent months keep updating.
Other notes you may see: invoices in several currencies are summed without conversion, and a mismatch between invoice currency and cost data currency is called out rather than silently converted.
Uploading invoices as CSV
Section titled “Uploading invoices as CSV”Use this for GCP and any provider without an API. One row per invoice, header row required.
invoice_id,billing_period_start,billing_period_end,issue_date,due_date,currency,subtotal,tax,total,status,invoice_type,pdf_urlRules:
- Required:
invoice_id,billing_period_startasYYYY-MM-DD(orbilling_periodasYYYY-MM), andtotal - Defaults:
billing_period_endbecomes the end of the start month,taxbecomes 0,subtotalbecomes total minus tax,currencybecomesUSD,statusbecomesissued - Allowed statuses:
issued,due,paid,overdue,void,credit_memo currencymust be a 3 letter codepdf_urlmust be https. It is stored as a link only and is never fetched.- Maximum 1 MB and 1000 rows per upload
- Column names are case insensitive, quoted fields are supported
Errors are reported per row with the spreadsheet line number, showing the first 10.
An uploaded invoice never overwrites one synced from a provider API. Those rows are reported as skipped instead.
Only uploaded invoices can be deleted. Invoices synced from a provider cannot be removed by hand.
Reading the results
Section titled “Reading the results”The Invoices tab lists invoices with period, account, invoice number, dates, subtotal, tax, total, status and reconciliation status. Clicking a row opens the invoice with its line items and the month’s reconciliation.
The Reconciliation tab shows one card per account with the invoice subtotal, the platform cost pre tax, the difference and its percentage, the with tax comparison, the charge category breakdown, and the explanation notes.
Troubleshooting
Section titled “Troubleshooting”“This month has not been reconciled yet”
Run Reconcile for that period, or wait for the scheduled run on the 6th or 16th.
AWS invoices are not syncing
Xplorr needs the 12 digit payer account ID. It uses the account’s external ID when that is a payer account, otherwise set it explicitly on the Setup tab.
Azure invoices are not syncing
The billing account ID is required, and the service principal needs a billing role. Reader on the subscription is not enough.
Everything shows “No invoice”
Either the integration is not enabled, or the provider has no API and needs a CSV upload.
A variance appeared that was not there last week
Cost data for recent months keeps updating as providers finalize bills. That is exactly why the second scheduled run exists on the 16th.
Can I export reconciliation results? Not from this page. Invoices and reconciliation are viewed in the console. Reports and Export covers cost data exports, and MSP statements have their own downloads.
What threshold should I use? Start at the 1 percent default. Tighten it once you understand which categories routinely explain your gaps.
Does reconciliation change my cost data? No. It only compares and records the result.
Who can sync, reconcile or upload? Admins. Anyone in the organization can read the page for accounts they have access to.
Related guides
Section titled “Related guides”- MSP Rebilling to bill customers from this cost data
- Data Health to check whether cost data is complete before trusting a variance
- Connect AWS, Connect Azure, Connect GCP