From Statute to Shillings
The Amendment Lab
Test a change to an excise rate before it is passed: the law in force, the base projected on its own history, the costing with and without a response from taxpayers, the record of past forecasts, who the Act makes pay, what happened to similar changes, and how sure any of it is.
Cost a change before it passes
Choose a taxable base the register holds, and the rate in force is read from the Act. Enter the rate you propose and the year it would start. Each step below adds one piece of evidence and says what it rests on; the costing slip keeps the running result, and downloads as a note.
The proposal
The change you want to test, and the base it would fall on in the year it starts.
Draft the change
(a) Motor spirit (gasoline) Ushs. 1750 per litre (b) Gas oil (automotive, light, amber for high speed engines) Ushs. 1430 per litre
Verified law: Wording or a date read in a statutory text, with the version and page named. Excise Duty Act, Sch. 2, item 8(a) and (b), in the wording of the amending Act, in force from 2026-07-01 (ACT-EDA-2026-22). The rate in force is filled in from this wording.
Project the base to the year it starts Derived: Calculated by this register from observed values, with the rule stated.
Petrol imports was 1,453.55 million litres in FY2024/25. Carried forward at its own median growth of 10.1 percent a year, it reaches 1,760.47 by FY2026/27; the middle half of its past growth gives 1,754.81 to 1,897.44, and its full range 1,353.66 to 1,952.41.
What it would raise
The arithmetic, how taxpayers might respond, the trade-offs, and how past forecasts actually landed.
Static costing Modelled estimate: A mechanical or model calculation, with every assumption shown.
The rate increase per unit, times the projected base: what the change would raise if no one bought less and nothing else moved. On the central projection, UGX 176.0 bn in FY2026/27.
How taxpayers respond Unverified: Not yet checked against a primary source. Shown so the gap is visible.
No published price elasticity for this good in Uganda was found in the searches made for this register (21 October 2026). Any response entered is the reader's own assumption and is labelled so.
The trade-offs on one grid Modelled estimate: A mechanical or model calculation, with every assumption shown.
Revenue in FY2026/27, UGX bn, for half, all, one and a half and twice the proposed increase, against responses of the taxable base from none to a fall of ten percent. The row and column of the current choice are outlined. Where a larger rise meets a larger fall, the extra revenue shrinks; a cell below zero means the change would lose revenue. Click a cell to make it the proposal.
| Rate (UGX per litre) | no response | -1% | -2.5% | -5% | -10% |
|---|---|---|---|---|---|
| 1,800 | |||||
| 1,850 | |||||
| 1,900 | |||||
| 1,950 |
Read it against the track record Reported yield: What URA attributes to a measure after the year. An official attribution, not a causal estimate.
Across 10 past excise lines with an official forecast and a URA-reported yield, the median delivered 111 percent of its forecast, and the middle half between 92 and 131 percent. Applied to this costing, that is UGX 162.1 bn to UGX 230.5 bn. A reported yield is URA's own attribution, not a causal estimate.
Who bears it
Who the law makes pay, which households end up paying, and what became of changes like this one.
Who pays Verified law: Wording or a date read in a statutory text, with the version and page named.Modelled estimate: A mechanical or model calculation, with every assumption shown.
Excise duty, in the case of an imported excisable good, is to be paid by the person importing the excisable good.
Excise Duty Act, Cap 336, s. 3(2)(c) (ULII-EDA-2025).
That is the legal incidence: who must account to URA. Who finally bears the tax depends on how much reaches the price and on who buys the good. A published microsimulation of Uganda's excise (WIDER-2020-70) shows how each tenth of households, from the poorest to the richest, splits its excise bill between goods.
- In the poorest tenth of households, excise duty is about 0.5 percent of consumption. (WIDER-2020-70, Figure 8, PDF page 12)
- In the richest tenth, excise duty is about 2 percent of consumption. (WIDER-2020-70, Figure 8, PDF page 12)
- The richest tenth pays 52 percent of all excise duty and accounts for about 29 percent of all consumption. (WIDER-2020-70, Figure 7, PDF page 11)
- Only 6 percent of households in the 2012/13 survey recorded buying fuel; the authors allocate about 90 percent of fuel excise to businesses and government, whose costs may reach households through prices the study does not trace. (CGD-WP443-2016, Section 3.3.3, PDF page 23)
- The fuel excise creates no direct burden for poor or near-poor households, because lower-income households buy no fuel directly. (CGD-WP443-2016, Conclusions, PDF page 38)
- Over 95 percent of households paid at least one indirect tax, and the burden of VAT and excise was roughly neutral with respect to consumption. (CGD-WP443-2016, Conclusions, PDF page 37)
What happened to changes like this one Observed: A value or event as an official source records it, copied without calculation.
- Excise duty on petrol and diesel raised by UGX 50 per litre
FY2015/16 · highest rung: reported yield · forecast none found · URA reported UGX 82.1 bn
Later: Both raise the excise duty on petrol and diesel in Schedule 2, item 8. The steps between them were not read.
Later: A FY2018/19 budget proposal on the same item; enactment not confirmed.
- Excise duty on petrol set at UGX 1,100 and on diesel at UGX 780 per litre
FY2016/17 · highest rung: verified law · forecast none found · URA reported no figure
Later: Both substitute Schedule 2, item 8: the 2018 Act raises the 2016 rates by UGX 100 per litre.
- Excise duty on petrol and diesel raised by UGX 100 per litre
FY2018/19 · highest rung: official forecast · forecast UGX 196.4 bn · URA reported no figure
Later: A FY2018/19 budget proposal on the same item; enactment not confirmed.
Later: Both substitute Schedule 2, item 8: the 2018 Act raises the 2016 rates by UGX 100 per litre.
- Additional UGX 100 per litre on petrol and diesel
FY2021/22 · highest rung: reported yield · forecast none found · URA reported UGX 204.2 bn
Later: Both raise the excise duty on petrol and diesel in Schedule 2, item 8. The steps between them were not read.
- Excise duty on petrol raised to UGX 1,750 and on diesel to UGX 1,430 per litre
FY2026/27 · highest rung: official forecast · forecast UGX 450.0 bn · URA reported no figure
How sure
A rule-based rating of each part of the costing, so the uncertainty travels with the number.
How sure is this?
| Part | Rating |
|---|---|
| Base data | |
| Projection | |
| Behaviour | |
| Track record | |
| Overall |
- Base data: Low with a clean series; High where a year used is flagged as a likely break.
- Projection: Low when the back-test's median error is under 5 percent, Medium under 10, High under 20, Very high above 20 or when it could not be tested; one step higher when projecting more than two years ahead.
- Behaviour: Medium with a published Ugandan estimate; High with the reader's own assumption; Very high when no response is assumed for a rate rise, since some response is near certain and its size is unknown.
- Track record: Medium when a range rests on at least the minimum number of similar measures; Very high when it cannot be shown.
- Overall: the highest of the four, as no strength in one part offsets a weakness in another.
A range from history, not a prediction
The register holds 44 past lines, single measures and tax-head totals from FY2015/16 to FY2024/25, with both an official forecast and a reported yield in shillings. Across all of them the median delivered 97 percent of its forecast, and 23 of 44 fell short. Single measures alone are more scattered: the middle half delivered between 8 percent and 137 percent of forecast.
So the tool does two honest things. It works out what a rate change would raise if nothing else changed, on a base the repository actually holds. Then it shows what forecasts of that kind have tended to deliver, and refuses to show a range when fewer than five similar lines exist. It does not model how taxpayers respond, and a reported yield is URA's own attribution, not a causal estimate.
Would the lab have got it right?
The fairest test is to run the lab as if in the year before a past change, knowing only the data then available, and set the result beside what the Ministry forecast and what URA later reported. For uGX 100 more per litre on petrol and diesel (FY2021/22), the lab would have costed UGX 224.4 billion (UGX 220.1 billion to UGX 241 billion); URA reported UGX 204.2 billion, 91 percent of the lab's figure. Two other past measures cannot be replayed: the base has fewer than four clean years before them, and the lab refuses to project from less.
| Measure | Data known to | Lab, UGX bn | Official forecast, UGX bn | URA reported, UGX bn |
|---|---|---|---|---|
| UGX 100 more per litre on petrol and diesel (FY2018/19 budget proposal) | FY2017/18 | history too short | 196.4 (MoFPED) | none printed |
| UGX 100 more per litre on petrol and diesel (FY2021/22) | FY2020/21 | 224.4 (220.1 to 241) | none found | 204.21 |
| UGX 200,000 per motorcycle at first registration (FY2018/19) | FY2017/18 | history too short | 8 (MoFPED) | none printed |
The projections, tested on each base's own past
| Base | Years tested | Median error, percent | Outcome inside the full range |
|---|---|---|---|
| Petrol and diesel imports | 6 | 6.7 | 50 percent |
| Petrol imports | 6 | 8.7 | 50 percent |
| Diesel imports | 6 | 7.9 | 50 percent |
| Beer sales | 4 | 10.6 | 100 percent |
| Spirits sales | 6 | 9.6 | 100 percent |
| Soft drink sales | 4 | 72.5 | 75 percent |
| Sugar sales | 2 | 43.9 | 100 percent |
| Cement sales | 3 | 35.5 | 67 percent |
| Motorcycles registered for the first time | 4 | 29.1 | 50 percent |
| Excise on phone talk time | 6 | 4 | 100 percent |
| Excise on bank charges | 6 | 7.6 | 83 percent |
| Excise on mobile money transfers | 6 | 8.6 | 67 percent |
| Excise on cigarettes | 6 | 22.5 | 67 percent |
Each year is projected from the years before it only, and compared with what happened. A base whose projections miss widely carries a higher uncertainty rating in the lab.
Three past measures, rerun on the base of the year before
| Measure | Base | Static estimate, UGX bn | Official forecast, UGX bn | URA reported, UGX bn |
|---|---|---|---|---|
| UGX 100 more per litre on petrol and diesel (FY2018/19 budget proposal) | 1,923.84 million litres, FY2017/18 | 192.4 | 196.4 (MoFPED) | none printed |
| UGX 100 more per litre on petrol and diesel (FY2021/22) | 2,157.94 million litres, FY2020/21 | 215.8 | none found | 204.21 |
| UGX 200,000 per motorcycle at first registration (FY2018/19) | 42,228 motorcycles, FY2017/18 | 8.5 | 8 (MoFPED) | none printed |
UGX 100 more per litre on petrol and diesel (FY2018/19 budget proposal): the static estimate is UGX 192.4 billion, 98 percent of the official forecast; URA printed no yield in shillings, so the estimate cannot be checked against an outcome.
UGX 100 more per litre on petrol and diesel (FY2021/22): the static estimate is UGX 215.8 billion; URA later reported 94.6 percent of the static estimate.
UGX 200,000 per motorcycle at first registration (FY2018/19): the static estimate is UGX 8.5 billion, 105.6 percent of the official forecast; URA printed no yield in shillings, so the estimate cannot be checked against an outcome.
These are mechanical checks on three measures with a real base, not a validation of the method. Where the base series jumps implausibly from one year to the next, the calculator flags the year rather than hiding it.
Every past forecast against what URA reported, and what else was moving
1. A static estimate on a real base
A rate change times the base the repository holds for the year before, with nothing else changing: no one buys less, smuggles more or pays late. Real responses usually make the true yield smaller. Modelled estimate: A mechanical or model calculation, with every assumption shown.
Base, FY2024/252,720.93 million litres
Times the change in the rate× 100 UGX per litre
A year's yield, before any responseUGX 272.1 bn
Import volumes as computed in the repository's customs sheet from URA data book figures; the sheet also carries a directly reported petrol volume for three years only. Source: data/raw/Customs_Trade.json (URA Annual Data Book; computed volumes).
2. What similar measures delivered against their forecasts
Each dot is a past measure or tax-head line with an official forecast and a URA reported yield, placed by the yield over the forecast. Choose the kind of measure; the range shown is the middle half of what that class delivered, applied to your forecast. It is a track record, not a prediction, and a reported yield is URA's attribution, not a causal estimate. Derived: Calculated by this register from observed values, with the rule stated.
10 similar lines. The median delivered 111% of its forecast; the middle half delivered between 92% and 131%. 4 of 10 came in below the forecast.
Enter a forecast to read it through this record.
Class median 111%; middle half 92% to 131%.
The 10 lines in the chosen class
| FY | Line | Forecast, UGX bn | Reported, UGX bn | Share of forecast |
|---|---|---|---|---|
| 2015/16 | Excise duty measures | 147 | 203.87 | 138.7% |
| 2017/18 | Excise duty measures | 24.5 | 27.09 | 110.6% |
| 2018/19 | Excise duty measures | 669.7 | 761.09 | 113.7% |
| 2018/19 | Daily excise duty of UGX 200 on over-the-top (OTT) services | 284 | 49.52 | 17.4% |
| 2018/19 | Levy on mobile money | 115 | 157.23 | 136.7% |
| 2018/19 | Excise duty of UGX 200 per litre of cooking oil | 3 | 39.84 | 1,328% |
| 2019/20 | Excise duty measures | 16.94 | 0 | 0% |
| 2020/21 | Excise duty measures | 305.78 | 277.89 | 90.9% |
| 2021/22 | Excise duty measures | 293.2 | 280.66 | 95.7% |
| 2024/25 | Excise duty measures | 217.82 | 241.6 | 110.9% |
3. What else was moving that year
A measure's reported yield rides on the economy and on administration as much as on the law. Before reading any yield as the effect of a change, look at the year it took effect. Observed: A value or event as an official source records it, copied without calculation.
| FY | Real GDP growth, % | Inflation, % | UGX per USD (change, %) | Imports, growth % | Fuel volume growth, % | Arrears recovered, UGX bn | Refunds paid, UGX bn | Also that year |
|---|---|---|---|---|---|---|---|---|
| 2015/16 | 4.65 | 7.6 | 3,436 | 7 | 203 | |||
| 2016/17 | 3.8 | 5.7 | 3,507 (2.1) | -16.68 | 3.67 | 321 | 175 | |
| 2017/18 | 6.2 | 3.4 | 3,651 (4.1) | 30.37 | 11.66 | 598 | 204 | |
| 2018/19 | 6.8 | 3.1 | 3,750 (2.7) | 51.23 | 1.94 | 695 | 340 | |
| 2019/20 | 3.1 | 3 | 3,729 (-0.6) | -8.24 | -1.56 | 726 | 375 | COVID-19 disruption; Digital tax stamps begin |
| 2020/21 | 3.3 | 2.5 | 3,697 (-0.9) | 31.33 | 10.81 | 1,025 | 387 | COVID-19 disruption; EFRIS registration begins |
| 2021/22 | 4.58 | 3.4 | 3,573 (-3.4) | -14.24 | 1,197 | 440 | ||
| 2022/23 | 5.34 | 8.8 | 3,776 (5.7) | 30.12 | 1,251 | 543 | ||
| 2023/24 | 6.14 | 3.16 | 3,779 (0.1) | -0.06 | 1,613 | 637 | ||
| 2024/25 | 6.3 | 3.45 | 3,710 (-1.8) | 36.07 | 1,666 | 723 |
- Real GDP growth, headline inflation, average exchange rate, imports and fuel volume growth: data/raw/MacroEconomic.json (URA Annual Data Book and UBOS).
- Arrears recovered (domestic taxes and customs): data/raw/Enforcement.json (URA Annual Data Book).
- Tax refunds paid: data/raw/Customs_Trade.json (URA Annual Data Book).
- COVID-19 disruption: FY2019/20 and FY2020/21, the years the brief for this register names. Digital administration: the implementation dates recorded in the register's events.