← Reports
FlySafair · Confidential — Executive Briefing

Fuel Impact Analysis — April 2026 & May Projection

Prepared 2026-05-26 · for Elmar · source: findash actuals (kpi_data.json)

May projection method: ACTUALS-BASED. Revenue from SummaryExcel flown days 1–25 + last-week rev/flight; fuel volume from QV fuel-burn actuals (activity×intensity); fuel R/L anchored to April actual − B4i easing.
NOTE — findash reconciliation gap > R15M (warn threshold)
Non-operating IS items (finance costs, tax, other income) likely explain the gap.
TL;DR KPIs Fuel Trend Mar vs Apr Recovery May Projection Caveats

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:

Headline KPIs

Mar PBT
R127M
10.3% margin
Apr PBT
R44M
3.1% — fuel doubled
May Base PBT (full-month, actuals)
−R36M
-3.1% · last-week rev/flight · R24.02/L fuel
Fuel hike absorbed
R288M
Apr vs Mar additional fuel cost
Yield recovery
78%
on per-pax basis
Sensitivity upside
−R33.2M
if remaining days hold MTD rev/flight
Downside floor (fuel flat)
−R96.8M
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

MetricMar 2026Apr 2026Δ
Flights5,6405,307-5.9%
Pax952,399861,063-9.6%
Seats1,062,072999,135-5.9%
Load Factor89.7%86.2%-3.5pp
Yield (R/pax)R1,329R1,628+22.5%
RevenueR1,233.5MR1,427.2M+15.7%

Cost Build-up

LineMarAprΔ
Fuel volume (L)28.6M26.6M-6.9%
Fuel R/L deliveredR14.62R26.52+81%
Fuel costR418MR707M+R288M
Non-fuel costR718MR684M−R34M
Total costR1,136MR1,390M+R254M
PBTR127MR44M−R84M

Cost Mix

Fuel % of revenueFuel % of total costs
Mar33.9%36.8%
Apr49.5%50.8%
Pre-spike norm~22%~25%

Recovery Analysis

Per-pax basis (cleanest — strips volume effects)

MarAprΔ
Yield (R/pax)R1,329R1,628+R299
Fuel/paxR439R821+R381
Yield recovery: R299 of R381 = 78%

Per-flight basis

MarAprΔ
Revenue/flightR219KR269K+R50K
Fuel/flightR74KR133K+R59K
Recovery: R50K of R59K = 85%

Total network basis — full reconciliation

MarAprΔEffect
RevenueR1,234MR1,427M+R194MFares hiked → recovers fuel
Fuel costR418MR707M+R288MThe hit being absorbed
Non-fuel costR718MR684M−R34MFewer flights (5,640→5,307) saved costs
Other IS movementR30MR7M−R24MFinance costs / tax / non-op items (non-operating IS)
Net to PBTR127MR44M−R84MWaterfall: 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"

DefinitionNumeratorDenominator%
Revenue ÷ fuel hike (gross)+R194M revenueR288M fuel hike67.2%
Revenue ÷ net cost increase+R194M revenueR254M net (288−34)76.3%
Total absorption (rev + cost cuts) ÷ fuel hike+R228M (194+34)R288M79.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-26 with MTD signals. Schedule: 5,640 March flights → 5,307 April → 4,991 May. Fuel tariffs easing per latest B4i.

May MTD signals

MetricValueRead
Schedule (full month)4,933 flights actual+bookedSummaryExcel LF Daily (fresh 2026-05-26T05:42)
MTD periodMay 2026, days 1–25 flownDepartures through yesterday
MTD flights3,975Flown (actual)
MTD revenueR953.3MActual Pax × Pax Yield
MTD yieldR1,569Easing vs Apr R1,628
MTD LF80.9%vs April 86.2%
Rev/flight (last week)R236,467Days 19–25 — remainder basis

May Inputs (revised)

DriverAssumptionSource
Revenue (full month)R1,180MMTD actual + remaining 958 flights × last-week rev/flight
Fuel volume24.18M LActivity×intensity vs April actual (intensity 0.978)
Fuel R/L baseR24.02Anchored: Apr actual R26.52 − R2.50 B4i easing
Uplift mix (blend wt)JNB 42% · CPT 34% · DUR 9% · HLA 8%QV fuel burn by departure airport
Flights4,933SummaryExcel actual+booked
Fuel R/L floorR26.52April delivered held flat (no ease)

Three Scenarios (revised)

Optimistic [actuals]

Assumes: Fuel R23.02/L (April −R3.50) · remainder at MTD rev/flight R239,814 (above last-week)
  • Fuel R/L: R23.02
  • Revenue: R1,183M
  • Fuel: R557M
  • Non-fuel: R635M
  • Flights: 4,933
  • Yield: R1,569 (implied)
  • LF: 80.9% (implied)
−R9M
-0.8% margin · MTD rev/flight holds + fuel eases further

Base — May full-month [actuals] · headline Base

Assumes: Fuel R24.02/L (April −R2.50) · remainder at last-week rev/flight R236,467 · 81% of full-month revenue already flown
  • Fuel R/L: R24.02
  • Revenue: R1,180M
  • Fuel: R581M
  • Non-fuel: R635M
  • Flights: 4,933
  • Yield: R1,566 (implied)
  • LF: 80.8% (implied)
−R36.4M
-3.1% margin · last-week rev/flight + anchored B4i easing

Sensitivity: if remaining days hold MTD rev/flight (vs the conservative last-week basis) [upside basis]
LF 80.9% Revenue R1,183M
PBT −R33.2M Margin -2.8%
Upside if the unflown days hold the MTD rev/flight rather than the slightly lower last-week rate. Not the reported Base.

Pessimistic [actuals]

Assumes: Fuel R25.02/L (April −R1.50) · remainder at last-week rev/flight R236,467
  • Fuel R/L: R25.02
  • Revenue: R1,180M
  • Fuel: R605M
  • Non-fuel: R635M
  • Flights: 4,933
  • Yield: R1,566 (implied)
  • LF: 80.8% (implied)
−R61M
-5.1% margin · last-week rev/flight + limited fuel easing

Floor — April fuel R/L held flat [downside floor]

Assumes: Fuel R26.52/L (April flat, no ease) · remainder at last-week rev/flight R236,467
  • Fuel R/L: R26.52 (Apr actual, no ease)
  • Revenue: R1,180M
  • Fuel: R641M
  • Non-fuel: R635M
  • Flights: 4,933
  • Yield: R1,566 (implied)
  • LF: 80.8% (implied)
−R97M
-8.2% margin · April delivered R/L held flat (no easing — contracts lag spot)
Headline Base [full-month, actuals-based]: Revenue = MTD actual R953.3M (days 1–25 flown, Actual Pax × Pax Yield) + remaining 958 flights × last-week rev/flight R236,467 = R1,179.8M. Fuel = 24.18M L (April actual uplift scaled by flights × burn-intensity 0.978) × R24.02 (anchored: Apr actual R26.52 − R2.50 B4i easing) = R580.8M. Non-fuel = 4,933 × R128,797 (Apr actual) = R635.4M. PBT = −R36.4M.
Sensitivity [upside]: if the unflown days hold MTD rev/flight (R239,814) instead of last-week, revenue = R1,183.0M → PBT = −R33.2M. Fuel-price band (R/L): floor R26.52 (April flat) → central R24.02 → optimistic R23.02. Fuel R/L is the only input not yet factual — GL closes at month-end.
What drives the scenario band (81% of revenue already flown): Opt vs Base = R27.4M — of which R24.2M is fuel R/L (R24.02→R23.02 = −R1.00/L × 24.2M L) and R3.2M is the rev/flight basis (MTD R239,814 vs last-week R236,467). Load factor contributes ~R0 — it is implied (revenue÷pax), not a lever this late. The band is a fuel-price sensitivity, not a demand scenario.

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 80.8%, yield R1,566, fuel R24.02/L held flat over the full 4,933-flight schedule).
APR (actual)MAY (proj, as-MTD)ΔEffect
RevenueR1,427MR1,180M [proj]−R247MLower LF + yield vs April — fewer and cheaper passengers
Fuel costR707MR581M [proj]−R126MFewer flights + easing fuel R/L — a partial cost relief
Non-fuel costR684MR635M [proj]−R48.2MReduced schedule: 5,307 → 4,933 flights
Other IS movementR7MR7M [proj]+R0MFinance costs / tax / non-op items (held flat from April)
Net to PBTR44M−R36M [proj]−R80MRevenue erosion exceeds fuel relief + cost savings
Reduced schedule saving: 5,307 → 4,933 = 374 fewer flights × 4,902 L/flight × R24.02/L fuel + R128,797 non-fuel/flight. Non-fuel saving alone: 374 fewer flights × R128,797/flight = R48.2M. 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.
247M rev loss
126M fuel relief
48M cost saving
80M to PBT
May PBT falls R80M vs April. R174M of that is cushioned by lower costs — R126M fuel relief (partly volume-driven: fewer flights burn less fuel, not purely a price win) + R48.2M from the reduced schedule. The R247M revenue erosion (lower LF + yield — fewer and cheaper passengers) is the driver and is NOT recovered by cost cuts; cost relief cushions 70% of the revenue shortfall, leaving R80M falling to PBT.
Absorption check ✓: PBT Δ = rev Δ (-247M) − fuel Δ (-126M) − non-fuel Δ (-48M) − Apr other IS (6.5M, not projected) = -80M.

Three views of cost-relief offset of revenue erosion — R247M revenue drop is not recovered; these show how much is cushioned

DefinitionNumeratorDenominator%
Fuel relief ÷ revenue erosionR126M reliefR247M erosion50.8%
Non-fuel saving ÷ revenue erosionR48.2M savingR247M erosion19.5%
Total offset (fuel relief + cost saving) ÷ revenue erosionR174M (126+48.2)R247M70.3%
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 (374 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 ~70% of the revenue shortfall; the remaining ~30% falls to PBT.

Caveats & Methodology Notes

Generated 2026-05-26 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)

B4i Fuel — Weekly Tariff History

Live note from SecondBrain · last updated 2026-05-19 · source: ~/PKA/SecondBrain/wiki/concepts/Fuel-Prices-B4i.md

Loading…

Route-Level Fuel Surcharge (Radixx)

Per-pax surcharge values loaded into Radixx booking system, ZAR incl VAT · Source: Pieter Richards weekly XLSX · auto-updated by flysafair-fuel-surcharge-update task

Peak week
2026-04-07
all routes highest
Cheapest route (peak)
R365
MQP-JNB
Most expensive (peak)
R1,448
JNB-MRU
Eased since peak
-9.3%
2026-04-07 → 2026-05-05

Top 6 routes — surcharge trajectory

Full route × week table

Route03-1703-2403-3104-0704-1405-05
BFN-JNBR101R145R212R397R391R360
CPT-BFNR161R232R338R635R627R576
CPT-DURR214R307R447R841R830R762
CPT-ELSR158R227R329R619R611R561
CPT-GRJR97R139R202R381R376R345
CPT-HDSR254R366R532R999R987R906
CPT-HLAR209R301R439R825R814R749
CPT-JNBR212R305R444R833R822R756
CPT-MQPR254R366R532R999R987R906
CPT-PLZR133R191R278R523R516R475
CPT-WDHR179R257R375R704R694R638
DUR-ELSR121R174R253R476R469R431
ELS-HLAR158R227R329R619R611R561
ELS-JNBR150R215R313R587R580R532
GRJ-HLAR201R290R422R794R783R720
GRJ-JNBR185R267R389R730R720R662
HLA-DURR121R174R253R476R469R431
JNB-DURR117R168R245R460R454R417
JNB-HRER154R222R323R607R599R551
JNB-MRUR368R530R771R1,448R1,429R1,314
JNB-VFAR151R217R316R593R585R538
JNB-ZNZR312R449R654R1,228R1,212R1,114
MQP-JNBR93R133R194R365R360R331
PLZ-DURR137R197R288R539R532R489
PLZ-HLAR174R250R363R682R673R619
PLZ-JNBR161R232R338R635R627R576
Reading: Surcharges tripled 17 Mar → 7 Apr peak. Easing since as B4i tariffs came down. Each weekly file flows: B4i tariffs → fuel R/L → litres burned per route × R/L = surcharge per flight ÷ pax = surcharge per pax.

Full structured data: ~/PKA/SecondBrain/wiki/concepts/fuel-surcharge-data/surcharge_history.json

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)

Metric20262025ΔΔ %
Fuel costR1,727MR1,340M+R387M+28.9%
Fuel volume107.4M L101.8M L+5.5M L+5.4%
Blended fuel R/LR16.08R13.16+R2.92+22.2%
Fuel cost / paxR488R396+R92+23.3%
RevenueR4,633MR4,395M+R239M+5.4%
PBTR256MR533M−R276M-51.9%
Pax3,538,9223,385,143+153,779+4.5%
Flights21,24520,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)

MetricApr 2026Apr 2025ΔΔ %
Fuel costR707MR347M+R359M+103.4%
Fuel R/LR26.52R12.66+R13.86+109.5%
Fuel cost / paxR821R377+R444+117.7%
RevenueR1,427MR1,275M+R152M+11.9%
PBTR44MR255M−R211M-82.9%
Pax861,063921,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.