Skip to content

Data health

How much to trust each number.

Completeness, reconciliation and the known caveats, measured from the data itself and from the audit that accompanies it. Anything doubtful is flagged next to the series it touches, not buried here.
34 of 34
breakdown tables that add up exactly to their totals
81.0%
of 12,673 indicator × year cells have a value
2,402
cells are blank in the source (never filled or estimated)
194
indicators whose unit the source does not state

Completeness

Blank cells, sheet by sheet

SheetIndicatorsValuesBlankFilled
Revenue by TaxHead6864040
94%
MacroEconomic3129218
94%
Tax Compliance49373117
76%
SectorRevenue333300
100%
Customs Trade5546882
85%
Enforcement3129713
96%
Admin HR5142387
83%
Excise VAT Detail5445387
84%
StampDuty Vehicles2422317
93%
Audit Enforcement95663192
78%
DTS Digital Tax Stamps64380324
54%
EFRIS Digital Invoicing1812519
87%
Presumptive Tax Register2612,325285
89%
Taxpayer Registration Detail4003,2791,121
75%

Blank is measured against every indicator × fiscal-year column the sheet declares. Many blanks are structural, not errors: a series that starts later (system tracking began, a table was added), a partial FY2025/26, or long-tail district and country rows that report intermittently. A blank is shown as “not available” everywhere, never as zero.

Known caveats

Flags carried beside the data

FlaggedUnverified spikeFY2022/23

Re-exports jump to UGX 13,392.73bn in FY2022/23, roughly ten times the neighbouring years, while imports, exports and the trade balance show no comparable movement. It looks like a data anomaly, not a real trade event, and should be checked against the original URA Data Book table before it is used in any headline claim.

Source: STORY_DISCOVERY.md #20

FlaggedDefinition under reviewFY2020/21

The EFRIS registered-taxpayer series spikes to 677,914 in the mandatory-rollout year (FY2020/21) and then falls sharply. This most likely reflects a change in what “registered” counts (new registrations that year against cumulative active users), not a literal collapse in adoption. It is held out of any growth claim until the source definition is confirmed.

Source: STORY_DISCOVERY.md #14

Series breakSeries break: Fees & Licenses → NTRFY2021/22

Fees & Licenses (and its sub-items) report values for FY2015/16–FY2020/21 and then go blank; in the same year Non Tax Revenue jumps from UGX 504.81bn to UGX 1,232.37bn. A reclassification of the fee lines into NTR is plausible but is an inference, not confirmed by the source. Do not chart these as one continuous series without marking the break. Appropriation in Aid reports only FY2019/20 and FY2020/21.

Source: DATA_AUDIT.md §4.2

NotePartial yearFY2025/26

FY2025/26 is a partial year in the operational-system sheets, so it is not comparable with the full years before it.

Source: Workbook README (coverage)

NoteNot available, not zeroFY2023/24, FY2024/25, FY2025/26

Total Invoices Issued is blank from FY2023/24 onward: the figure was not available at extraction. A blank is not a zero.

Source: DATA_QUALITY_REPORT.md

NoteUndated bucketPre-2019/20 (Undated)

EFRIS carries a small “Pre-2019/20 (Undated)” bucket (0.02%–0.56% of totals depending on the measure), kept as an explicit extra column rather than dropped.

Source: Workbook README (data-quality flags v)

NoteCounts registrations, not invoices

The EFRIS “by access channel” and “by VAT rate” tables total to registration counts, not invoice counts. They are not invoice-level breakdowns.

Source: DATA_AUDIT.md §4.5

NoteTracking starts late

Twelve of eighteen commodities show no data before FY2024/25: that is the system-tracking start date, not a processing error.

Source: DTS sheet source note; DATA_AUDIT.md §4.6

FlaggedIdentical series in the source export

In Source A, the registration and cancellation series are numerically identical in the raw export (verified; a source-system data-quality artefact), retained as provided. Do not present cancellations as an independent series without this caveat.

Source: DATA_AUDIT.md §4.5

NoteGender field not confirmed

The F/M field is interpreted as gender; this interpretation is not independently confirmed.

Source: DATA_AUDIT.md §4.5

NoteNo FY2015/16 baseFY2015/16

GDP and the ratios built on it are undefined for FY2015/16 because there is no prior-year base in the source.

Source: DATA_QUALITY_REPORT.md

Reconciliation

34 of 34 breakdown tables reconcile

For every table that has a Total row, the other rows in that section are summed and compared with the Total for each fiscal year (tolerance: the larger of 0.5 or 1% of the total). Every group passes with no mismatch. It is strong evidence the category-level figures were transcribed correctly from URA’s source systems.

Show all 34 checks
SheetSectionRows summedYearsResult
Audit EnforcementAUDIT CASELOAD BY TAX OFFICE (COUNT)69Adds up
Audit EnforcementAUDIT ADJUSTMENT VALUE BY TYPE (UGX BN)39Adds up
Audit EnforcementAUDIT CASELOAD BY STATION (COUNT)309Adds up
Audit EnforcementAUDIT CASELOAD BY WORKFLOW STATUS (COUNT)139Adds up
Audit EnforcementAUDIT CASELOAD BY AUDIT TYPE (COUNT)49Adds up
Audit EnforcementAUDIT ADJUSTMENT VALUE BY AUDIT TYPE (UGX BN)49Adds up
Audit EnforcementAUDIT ADJUSTMENT VALUE BY TAX HEAD (UGX BN)129Adds up
Audit EnforcementAUDIT CASELOAD BY TAX HEAD (COUNT)129Adds up
DTS Digital Tax StampsEXCISE DUTY BY COMMODITY (UGX BN)1811Adds up
DTS Digital Tax StampsDELIVERY QUANTITY BY COMMODITY (UNITS)1811Adds up
DTS Digital Tax StampsDUTY PAYABLE BY COMMODITY (UGX BN)1811Adds up
EFRIS Digital InvoicingEFRIS REGISTRATIONS BY ACCESS CHANNEL (COUNT) [CORRECTED LABEL — see data_dictionary]58Adds up
EFRIS Digital InvoicingEFRIS REGISTRATIONS BY VAT RATE CLASSIFICATION (COUNT) [CORRECTED LABEL — see data_dictionary]58Adds up
Presumptive Tax RegisterBY REGISTRATION RECORD TYPE (COUNT)210Adds up
Presumptive Tax RegisterBY TAXPAYER STATUS (COUNT)310Adds up
Presumptive Tax RegisterBY TAXPAYER CATEGORY (COUNT)210Adds up
Presumptive Tax RegisterBY DISTRICT (COUNT)12410Adds up
Presumptive Tax RegisterBY TAX STATION / OFFICE (COUNT)8210Adds up
Presumptive Tax RegisterBY ECONOMIC SECTOR — ISIC CLASSIFICATION (COUNT)2210Adds up
Presumptive Tax RegisterBY FILING / OBLIGATION FLAG (COUNT)310Adds up
Presumptive Tax RegisterBY TAX REGION CATEGORY (COUNT)310Adds up
Presumptive Tax RegisterBY BUSINESS CATEGORY (COUNT)810Adds up
Taxpayer Registration DetailTAX-TYPE REGISTRATIONS BY STATUS CODE (COUNT)110Adds up
Taxpayer Registration DetailTAX-TYPE REGISTRATIONS BY TAX TYPE (COUNT)1310Adds up
Taxpayer Registration DetailTAX-TYPE CANCELLATIONS BY TAX TYPE (COUNT)1310Adds up
Taxpayer Registration DetailCUMULATIVE TAX TYPES HELD, BY TAX TYPE (SUM OF COUNT)1310Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY STATUS (COUNT)311Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY ECONOMIC SECTOR — ISIC, DESCRIPTIVE LABELS (COUNT)2211Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY ECONOMIC SECTOR — ISIC, SINGLE-LETTER CODE (COUNT) [ALTERNATE SOURCE FIELD]2211Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY TAXPAYER CATEGORY (COUNT)311Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY DISTRICT (COUNT)12411Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY COUNTRY OF ORIGIN (COUNTRY CODE, COUNT)16411Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY FILING / OBLIGATION FLAG (COUNT)311Adds up
Taxpayer Registration DetailNEW TIN REGISTRATIONS BY GENDER, AS RECORDED (COUNT) [F/M INTERPRETED AS FEMALE/MALE]311Adds up

Method

The rules every chart follows

  1. 1.Key on sheet, section and indicator. Labels such as “Kenya” or “PAYE” repeat across sibling tables, so every indicator has a stable id (its sheet and source row) and is never matched on its label alone.
  2. 2.A blank is not a zero. Missing values stay missing: lines break at a gap, tables show “—”, and nothing is interpolated or estimated.
  3. 3.Fiscal years run July to June. Years are labelled like 2015/16. FY2025/26 is a partial year in the sheets that carry it. 414 indicators are documented in the dictionary.
  4. 4.Units come from the dictionary. Where it has none, the unit is read from the label or section text (for example “UGX Bn”); if neither states one, the unit is shown as “not stated”, and the values are never rescaled.
  5. 5.Series breaks are marked. Where the source changes definition (Fees & Licenses into NTR), charts draw a dashed break and say so.
  6. 6.Raw codes stay raw. Business-category and tax-region codes are shown as in the source, not translated speculatively.
  7. 7.Documentation gaps are known. Four sheets have indicators the dictionary does not describe (27 in all, mostly commodity lines in Excise_VAT_Detail); they are listed in the audit and shown here without a description.
  8. 8.Not externally validated. The workbook is treated as the source of truth: it has not been checked against published URA Data Books or UBOS releases beyond its own reconciliation.

Dataset v1.0 · audited 18 September 2026 · 10,271 observations across 14 sheets.