UK Audit File (SAF-T)
The UK tax audit data file — transaction-level sales, purchase, and ledger data assembled for an HMRC inspection, output in Excel or XML. One report, both formats.
Related Consolidates the former Excel and XML variants — choose the output format at run time.
Run note · Performance The subledger (XLA) join — especially Projects-to-XLA — is a known BI Publisher performance trap on large ledgers. Pre-join it in the warehouse, or apply tight ledger, period, and source filters before running online.
Run note · Data latency Several tax reports read the Tax Reporting Ledger extract rather than live transaction tables — run the extract first or the report returns stale or empty results.
Sample build of the UK Audit File (SAF-T) — reconciled, and rendered tool-neutral so it runs in Power BI, ThoughtSpot, or Tableau.
| Document Type | Transaction | Date | Tax Code | Net | Tax | Account |
|---|---|---|---|---|---|---|
| Standard | Sample | 2026-04-30 | Sample | Sample | Sample | 1000-2100-000 |
| Corporate | — | 2026-03-31 | — | — | — | 1000-5400-000 |
| Standard | Sample | 2026-02-28 | Sample | Sample | Sample | 1000-1410-000 |
| Default | — | 2026-01-31 | — | — | — | 2000-2100-000 |
| Standard | Sample | 2025-12-31 | Sample | Sample | Sample | 1000-6300-000 |
| Standard | Sample | 2026-04-30 | Sample | Sample | Sample | 1000-2100-000 |
The report assembles sales, purchase, and ledger detail with tax codes in the HMRC audit-file layout.
A small set of transactions carry no tax code, so they'd appear in the audit file as untaxed and prompt an HMRC query.
Assign tax codes to the untaxed transactions before generating the file; an untaxed line is the first thing an inspector flags.
This is the report's BI Publisher data model — the SQL data set BI Publisher runs against Oracle tables to produce the output. The same SQL becomes a dbt model in your warehouse, so one definition drives both the formatted report and the analytics layer.
Data sources
The data-warehouse model — one fact surrounded by conformed dimensions (what you slice by) and measures (what you aggregate), expressed as dbt so it migrates with you. Grain: one row per source transaction.
| Element | Type | Definition |
|---|---|---|
| AP_INVOICES_ALL | dimension | dimension |
| XLA_AE_LINES | dimension | dimension |
| ZX_LINES | dimension | dimension |
| GL_CODE_COMBINATIONS | dimension | dimension |
| Net | measure | measure |
Every source object behind this report. Each linked table has its own page with full column descriptions, drawn from the Oracle BICC lineage and articulated for practitioners.
| Table | Reporting columns | Subject areas |
|---|---|---|
| RA_CUSTOMER_TRX_ALL | 58 | 16 |
| AP_INVOICES_ALL | 63 | 15 |
| XLA_AE_LINES | 23 | 17 |
| ZX_LINES | Setup / configuration table — joined for reference, not exposed for analytics | |
| GL_CODE_COMBINATIONS | 7 | 61 |