TL;DR
March actuals: fuel R418M (R14.62/L delivered), PBT R127M. April actuals: fuel R707M (R26.52/L delivered), PBT R44M — full pass-through of the Iran-spike. All cost figures are findash IS actuals (MC-3517).
FlySafair absorbed 79.2% of the R288M fuel shock: R194M absorbed by higher fares + R34M absorbed by fewer flights. Only R84M fell to PBT.
Material changes detected since 2026-05-07 baseline:- IATA jet fuel moved materially: latest $162.55/bbl vs baseline $181.0/bbl (down 10.2%). Scenario fuel R/L inputs may need updating.
Headline KPIs
Apr PBT
R44M
3.1% — fuel doubled
May Base PBT (MTD run-rate)
−R77M
-6.4% · LF 81.7% MTD
Fuel hike absorbed
R288M
Apr vs Mar additional fuel cost
Yield recovery
78%
on per-pax basis
Sensitivity upside
−R10.7M
if LF matures +4.5pp to 86.2%
Downside floor (fuel flat)
−R98.3M
April R26.52/L held flat, no IATA ease
Fuel Price Trend (IATA Weekly, USD/bbl)
Chart shows IATA jet fuel index (USD/bbl). Massive spike began week of 6 March 2026, driven by Iran-related supply disruption. Crack spreads also surged. Data from Data Fuel.xlsx refreshed by iata-fuel-update task.
March vs April Detailed Comparison
Operating Metrics
| Metric | Mar 2026 | Apr 2026 | Δ |
| Flights | 5,640 | 5,307 | -5.9% |
| Pax | 952,399 | 861,063 | -9.6% |
| Seats | 1,062,072 | 999,135 | -5.9% |
| Load Factor | 89.7% | 86.2% | -3.5pp |
| Yield (R/pax) | R1,329 | R1,628 | +22.5% |
| Revenue | R1,233.5M | R1,427.2M | +15.7% |
Cost Build-up
| Line | Mar | Apr | Δ |
| Fuel volume (L) | 28.6M | 26.6M | -6.9% |
| Fuel R/L delivered | R14.62 | R26.52 | +81% |
| Fuel cost | R418M | R707M | +R288M |
| Non-fuel cost | R718M | R684M | −R34M |
| Total cost | R1,136M | R1,390M | +R254M |
| PBT | R127M | R44M | −R84M |
Cost Mix
| Fuel % of revenue | Fuel % of total costs |
| Mar | 33.9% | 36.8% |
| Apr | 49.5% | 50.8% |
| Pre-spike norm | ~22% | ~25% |
Recovery Analysis
Per-pax basis (cleanest — strips volume effects)
| Mar | Apr | Δ |
| Yield (R/pax) | R1,329 | R1,628 | +R299 |
| Fuel/pax | R439 | R821 | +R381 |
Yield recovery: R299 of R381 = 78%
Per-flight basis
| Mar | Apr | Δ |
| Revenue/flight | R219K | R269K | +R50K |
| Fuel/flight | R74K | R133K | +R59K |
Recovery: R50K of R59K = 85%
Total network basis — full reconciliation
| Mar | Apr | Δ | Effect |
| Revenue | R1,234M | R1,427M | +R194M | Fares hiked → recovers fuel |
| Fuel cost | R418M | R707M | +R288M | The hit being absorbed |
| Non-fuel cost | R718M | R684M | −R34M | Fewer flights (5,640→5,307) saved costs |
| Other IS movement | R30M | R7M | −R24M | Finance costs / tax / non-op items (non-operating IS) |
| Net to PBT | R127M | R44M | −R84M | Waterfall: rev Δ − fuel hike + nonfuel saving + other IS = PBT Δ |
How the R288M fuel hike was absorbed
194M fares
34M cost
84M PBT
R288M fuel increase absorbed via: R194M higher fares + R34M fewer-flight cost savings + R24M other IS items + R84M dropped to PBT.
Total absorption check: R288M ≈ R288M ✓ (revenue + nonfuel saving + other IS + PBT drop = fuel hike).
Operating recovery (revenue + cost savings): R228M of R288M = 79.2%.
Three views of "recovery"
| Definition | Numerator | Denominator | % |
| Revenue ÷ fuel hike (gross) | +R194M revenue | R288M fuel hike | 67.2% |
| Revenue ÷ net cost increase | +R194M revenue | R254M net (288−34) | 76.3% |
| Total absorption (rev + cost cuts) ÷ fuel hike | +R228M (194+34) | R288M | 79.2% |
Reconciling the views. The revenue-only bar understates the real picture — it ignores the non-fuel cost saving from flying fewer flights.
Per-pax recovery is highest because it strips volume effects. Total absorption is the most complete view — it captures both fare recovery and cost reduction. The residual is what actually dropped to PBT.
May 2026 Projection — Updated MTD
Updated 2026-05-22 with MTD signals. Schedule: 5,640 March flights → 5,307 April → 4,991 May. Fuel tariffs easing per latest B4i.
May MTD signals
| Metric | Value | Read |
| Schedule (full month) | 4,991 flights · 943,040 seats | Slightly below April (5,307) |
| MTD period | May 2026 MTD (21 days, through 21 May) | Live from dashboard_data.json |
| MTD flights | 3,320 | Flown through period |
| MTD pax | 512,139 | Flown through period |
| MTD revenue | R803.7M | Flown revenue |
| MTD yield | R1,569 | Easing vs Apr R1,628 as surcharges drop |
| MTD LF | 81.7% | vs April 86.2% |
May Inputs (revised)
| Driver | Assumption | Source |
| IATA latest week | $162.55/bbl | Data Fuel.xlsx |
| FX | ~16.80 (flat) | Apr trend |
| Fuel R/L base case | R25.67 (auto-derived from MTD) | B4i tariff easing + Radixx surcharges |
| Flights | 4,991 | May schedule (live) |
| Yield base | R1,569 (auto-derived from MTD) | MTD blend + recovery as surcharges normalise |
| LF base | 82% (auto-derived from MTD) | Apr-style demand |
Three Scenarios (revised)
Optimistic [live MTD]
- Fuel R/L: R24.17
- Yield: R1,616
- LF: 83.7%
- Flights: 4,991
- Revenue: R1,276M
- Fuel: R605M
- Non-fuel: R643M
R27M
2.1% margin · contracts ease further, yields hold
Base — May MTD run-rate [live MTD]
· headline Base
- Fuel R/L: R25.67
- Yield: R1,569
- LF: 81.7%
- Flights: 4,991
- Revenue: R1,209M
- Fuel: R643M
- Non-fuel: R643M
−R77.0M
-6.4% margin · data-derived: yield/LF from May MTD; fuel from Apr actual × IATA ratio
Sensitivity: if May LF matures to April's 86.2%
(requires +4.5pp vs MTD 81.7%)
[full-month proj]
| LF |
86.2% |
Revenue |
R1,275M |
| PBT |
−R10.7M |
Margin |
-0.8% |
Sensitivity upside: bookings mature to April-like close. Not the reported Base.
Pessimistic [live MTD]
- Fuel R/L: R27.67
- Yield: R1,522
- LF: 79.6%
- Flights: 4,991
- Revenue: R1,143M
- Fuel: R693M
- Non-fuel: R643M
−R193M
-16.9% margin · sustained pressure, demand soft
Floor — April fuel R/L held flat [downside floor]
- Fuel R/L: R26.52 (Apr actual, no ease)
- Yield: R1,569
- LF: 81.7%
- Flights: 4,991
- Revenue: R1,209M
- Fuel: R664M
- Non-fuel: R643M
−R98M
-8.1% margin · Pieter floor: April cost/flight held flat; you can't save into profit
Headline Base [live MTD run-rate]: 4,991 flights × 5,019 L/flight (Apr actual uplift÷flights) = 25.05M L × R25.67 = R643.1M fuel. 943,040 seats × 81.7% LF × R1,569 yield = R1,208.9M revenue. Non-fuel = 4,991 × R128,797 (Apr actual) = R642.8M. PBT = −R77.0M.
Sensitivity [full-month proj]: Same fuel/flights/non-fuel; LF projected to 86.2% (Apr actual full-month close as maturity proxy, requires +4.5pp vs MTD). 943,040 seats × 86.2% × R1,569 = R1,275.2M revenue. Sensitivity PBT = −R10.7M.
April actual → May projected (as-MTD) — total network reconciliation
May projected on the as-MTD assumption — if the rest of May performs like month-to-date (LF 81.7%, yield R1,569, fuel R25.67/L held flat over the full 4,991-flight schedule).
| APR (actual) | MAY (proj, as-MTD) | Δ | Effect |
| Revenue | R1,427M | R1,208M [proj] | −R219M | Lower LF + yield vs April — fewer and cheaper passengers |
| Fuel cost | R707M | R643M [proj] | −R63M | Fewer flights + easing fuel R/L — a partial cost relief |
| Non-fuel cost | R684M | R643M [proj] | −R40.7M | Reduced schedule: 5,307 → 4,991 flights |
| Other IS movement | R7M | R7M [proj] | +R0M | Finance costs / tax / non-op items (held flat from April) |
| Net to PBT | R44M | −R78M [proj] | −R121M | Revenue erosion exceeds fuel relief + cost savings |
Reduced schedule saving: 5,307 → 4,991 = 316 fewer flights × 5,019 L/flight × R25.67/L fuel + R128,797 non-fuel/flight. Non-fuel saving alone: 316 fewer flights × R128,797/flight = R40.7M. Upper-bound — uses fully-loaded average non-fuel/flight; true marginal saving is lower as part of non-fuel is fixed (leases, base payroll).
What moved PBT April → May (projected): revenue erosion is the driver — demand was not recovered. Fuel relief + reduced-schedule saving are partial cost-relief offsets, not demand recovery.
219M rev loss
63M fuel relief
41M cost saving
121M to PBT
May PBT falls R121M vs April. R104M of that is cushioned by lower costs — R63M fuel relief (partly volume-driven: fewer flights burn less fuel, not purely a price win) + R40.7M from the reduced schedule. The R219M revenue erosion (lower LF + yield — fewer and cheaper passengers) is the driver and is NOT recovered by cost cuts; cost relief cushions 48% of the revenue shortfall, leaving R121M falling to PBT.
Absorption check ✓: PBT Δ = rev Δ (-219M) − fuel Δ (-63M) − non-fuel Δ (-41M) − Apr other IS (6.5M, not projected) = -121M.
Three views of cost-relief offset of revenue erosion — R219M revenue drop is not recovered; these show how much is cushioned
| Definition | Numerator | Denominator | % |
| Fuel relief ÷ revenue erosion | R63M relief | R219M erosion | 29.0% |
| Non-fuel saving ÷ revenue erosion | R40.7M saving | R219M erosion | 18.6% |
| Total offset (fuel relief + cost saving) ÷ revenue erosion | R104M (63+40.7) | R219M | 47.6% |
Reading these views. Revenue erosion is the primary driver of the PBT decline — lost demand is not recovered by cost cuts. Fuel cost falls because fewer flights burn less fuel (volume effect) and May tariffs ease slightly vs April (price effect); the relief is partly volume-driven, not a pure price win. The non-fuel saving reflects the reduced schedule (316 fewer flights) and is an upper-bound figure (fixed costs such as leases and base payroll do not flex with schedule). Together these cost-relief offsets cover ~48% of the revenue shortfall; the remaining ~52% falls to PBT.
Caveats & Methodology Notes
- March + April fuel costs are ACTUALS — pulled from
kpi_data.json fuel_r / fuel_uplift / avg_fuel_per_liter_uplifted / total_costs / pbt_r. No estimates or back-solves used for these months.
- Non-fuel/flight (R128,797) derived at runtime from April actuals:
(total_costs − fuel_r) / flights. Used as the May cost base.
- April delivered R/L (R26.52) is the fuel price anchor for May. May base is April actual × IATA easing ratio (latest weekly ÷ Apr 167.96 $/bbl). B4i May tariffs corroborate easing direction.
- May L/flight (5,019) derived from April actual uplift ÷ flights. Stage-length mix shift could vary this ±2-3%.
- Hedging not modelled — assumes spot pass-through.
- May yield + LF anchored to live MTD data when available; static fallback otherwise.
Generated 2026-05-22 by build_report.py (fuel-impact-report skill, MC-3483) ·
IATA fuel data: Data Fuel.xlsx ·
Operational data: FinDash kpi_data.json ·
B4i: ~/PKA/SecondBrain/wiki/concepts/Fuel-Prices-B4i.md (last updated 2026-05-19) ·
Radixx surcharge: ~/PKA/SecondBrain/wiki/concepts/fuel-surcharge-data/surcharge_history.json (last updated 2026-05-09)
Year-to-Date Fuel Impact — 2026 vs 2025
Calendar YTD (Jan–Apr) · closed-month actuals only · source: kpi_data.json
The fuel shock is cumulative — this is the running total for the year so far. Two headline numbers:
how much extra we have spent on fuel versus the same months last year, and how much of that
has actually fallen through to PBT after fare and capacity recovery.
YTD extra fuel spend vs 2025
+R387M
Jan–Apr 2026: R1,727M vs R1,340M
YTD PBT vs 2025
−R276M
Jan–Apr 2026: R256M vs R533M
Fuel hike absorbed (not in PBT)
R110M
extra fuel offset by fares + capacity
Monthly fuel cost — 2026 vs 2025 (R Million)
Monthly PBT — 2026 vs 2025 (R Million)
YTD comparison (Jan–Apr)
| Metric | 2026 | 2025 | Δ | Δ % |
| Fuel cost | R1,727M | R1,340M | +R387M | +28.9% |
| Fuel volume | 107.4M L | 101.8M L | +5.5M L | +5.4% |
| Blended fuel R/L | R16.08 | R13.16 | +R2.92 | +22.2% |
| Fuel cost / pax | R488 | R396 | +R92 | +23.3% |
| Revenue | R4,633M | R4,395M | +R239M | +5.4% |
| PBT | R256M | R533M | −R276M | -51.9% |
| Pax | 3,538,922 | 3,385,143 | +153,779 | +4.5% |
| Flights | 21,245 | 20,072 | +1,173 | +5.8% |
Apr 2026 vs Apr 2025
Latest closed month, year-on-year · actuals
Apr fuel cost
R707M
+103.4% vs R347M LY
Apr fuel R/L delivered
R26.52
+109.5% vs R12.66 LY
Apr fuel cost / pax
R821
+117.7% vs R377 LY
Apr PBT
R44M
-82.9% vs R255M LY
Apr revenue
R1,427M
+11.9% vs R1,275M LY
Apr: 2026 vs 2025 (R Million)
| Metric | Apr 2026 | Apr 2025 | Δ | Δ % |
| Fuel cost | R707M | R347M | +R359M | +103.4% |
| Fuel R/L | R26.52 | R12.66 | +R13.86 | +109.5% |
| Fuel cost / pax | R821 | R377 | +R444 | +117.7% |
| Revenue | R1,427M | R1,275M | +R152M | +11.9% |
| PBT | R44M | R255M | −R211M | -82.9% |
| Pax | 861,063 | 921,397 | −60,334 | -6.5% |
All figures are closed-month actuals from kpi_data.json (fuel_r, fuel_uplift,
pbt_r, revenue_r, pax, flights). No estimates, no MTD month — the in-progress
month is excluded so the comparison stays like-for-like. See the methodology markdown for the full input log.