FOCUS 1.4 Validator
Check a billing export against the FOCUS 1.4 standard and get every column that fails, with the rule it breaks.
Before you start: what to have readyShow
- One FOCUS export, as CSV. From AWS, the Data Exports type “FOCUS 1.2 with AWS columns”; from Azure, the Cost Management FOCUS export; from Google Cloud, one month of the FOCUS export table in BigQuery, saved as CSV.
- A full billing period, not a sample. Conditional requirements only fire on the rows that trigger them, so a truncated file passes checks it would otherwise fail.
- The header row intact. Every rule in the specification is keyed to a column name, so a file whose headers were rewritten by a spreadsheet will report far more failures than it has.
- Account IDs left in. Some columns require them, so removing them causes false failures. The file stays on this page either way.
No upload needed. The file is read by JavaScript in this tab and leaves your computer only if you choose to share it for a review. There is no file-size cap; the limit is your browser’s memory.
Want this done on your real bill?
FinOps-as-a-Service: A FinOps practitioner works with your team every month, so cost reviews happen without you hiring one. From $1,500 a month. Nothing paid upfront.
About this tool
Questions
Does the official FOCUS validator support 1.4?
The FinOps Foundation's validator was built for 1.3 conformance testing; check its page for the versions it supports today. Its hosted build also caps uploads at 10 MB and is positioned for sample data rather than production exports. That gap is why this exists. Once the Foundation's validator checks 1.4, it is the canonical implementation and you should use it.
What is new in FOCUS 1.4?
47 new columns across 4 datasets, 28 of them in 2 new datasets. Invoice Detail carries invoice charges, payment terms and purchase order numbers so finance can reconcile against the same data FinOps uses; Billing Period carries period boundaries and status. Contract Commitment gained substantial detail on commitment models, payment structures and lifecycle status. The column dictionary on this site documents every one of them.
Is my billing data uploaded anywhere?
No. The file is read and checked by JavaScript in the page and is never transmitted. That is a property of how the tool is built rather than a promise in a policy, and it is why there is no file-size cap: the only limit is your browser's memory.
Why does an unknown column not count as an error?
Because FOCUS permits custom columns. A provider carrying its own identifiers alongside the standard ones is conformant, and flagging those as errors would make almost every real export look broken. Unknown columns are reported as information, and the report notes which of them do not use the conventional "x_" prefix: that prefix is what lets a consumer skip them safely.
Why does a missing Conditional column not count as an error?
Because the condition lives in the provider's circumstances rather than in the file. A Conditional column is required only when the situation it describes applies, a commitment discount column is not required of a bill with no commitments on it. Only Mandatory columns are checked for presence.
How is the conformance score calculated?
Coverage of the mandatory columns, less a capped penalty for value-level errors. A missing mandatory column weighs far more heavily than a handful of malformed values, because an export missing BillingCurrency cannot be consumed at all whereas a few bad timestamps are fixable in place. Warnings and custom columns are deliberately excluded, neither makes a file non-conformant.
Related tools
Cost Allocation Score
Score how much of your cloud spend you can assign to a team.
OpenCloud Bill Diff
Why did the bill go up? See whether you used more or paid a higher price.
OpenWarehouse Cost Translator
What would this BigQuery workload cost on Snowflake or Databricks?
OpenMore tools for: Billing data, allocation and governance
Conformance is the beginning, not the end.
Finitizer ingests FOCUS from every provider you run, normalizes what they still disagree about, and reports cost, commitment coverage and allocation across all of it, without you maintaining the pipeline.
See how Finitizer works