← Reports
FlySafair · Confidential — Executive Briefing

Fuel Impact — April Actuals · May Actual Revenue · June Forecast

Prepared 2026-06-01 · for Elmar · source: findash actuals + budget_data.json

Executive summary — budget reframe: April was the real miss vs plan (R43.7M actual vs R208.4M budget — the R164.7M fuel shock). May's loss is on-plan (−R68.1M vs −R64.5M budget, just R3.6M off) with revenue ahead of plan. June tracks ~R53.2M worse than plan — revenue ahead, fuel premium is the cause. Fuel itself is easing; the swing is seasonal revenue meeting a residual fuel premium, NOT a fuel hit.
Material changes detected since 2026-05-07 baseline:
How to read this report & glossary

What this report does: compares 4 months of FlySafair P&L against budget and prior actuals, projects May/June PBT under fuel-R/L scenarios. April is the closed actual; May revenue is actual (Radixx, GL pending); June is a day-1 booking-pace forecast.

PBT
Profit Before Tax — operating revenue minus all costs before income tax
LF
Load Factor — passengers ÷ available seats, as a %
R/L
Rand per litre of jet fuel delivered (into-plane, all-in price)
Yield
Revenue per passenger (R/pax); excludes surcharges modelled separately
Non-fuel
All costs except fuel: crew, maintenance, leases, overheads, etc.
B4i
Bernd Feucht (fuel buyer) weekly tariff feedback — the source for into-plane price moves
Radixx
Reservation system; revenue data ±1–4% vs GL (X3) at month-end close
X3
Sage X3 — the GL (general ledger); final revenue/cost authority
MTD
Month-to-date — accumulated from the 1st of the month to date
YTD
Year-to-date — accumulated from January
[ACTUAL]
Confirmed closed figure from GL or Radixx flight data
[proj]
Projected — computed from actuals + assumptions (e.g. fuel R/L not yet closed)
[forecast]
Forward estimate — booking-pace or YoY-softened; not yet actual
[stress test]
Tail scenario (<10% probability) — April fuel held flat, no easing assumed
[implied]
Derived from other actuals (e.g. yield implied from revenue ÷ pax)

Headline KPIs — PBT & Budget

Mar PBT (actual)
R127M
10.3% margin
Apr PBT (actual)
R44M
−R164.7M vs budget · budget R208M
May PBT — base (actual rev)
−R68M
−R3.6M vs budget · budget −R65M
June PBT — base (forecast)
−R151M
−R53.2M vs budget · budget −R98M
June best case — still a loss
−R41.8M
opt: R1,184M rev · fuel R22.02/L
Budget context (management plan): Apr budget R1,321.4M rev / R208.4M PBT. May budget R1,067.8M rev / −R64.5M PBT. Jun budget R1,011.2M rev / −R98.0M PBT. Budget is spine only (revenue + PBT); cost lines are not cross-cast.

PBT & Fuel Cost by Month (R Million)

Consolidated P&L Build-up

LineMar (actual)Apr (actual)Apr BudgetMay (actual rev)May BudgetJun (forecast)Jun Budget
RevenueR1,233.5MR1,427.2MR1,321.4MR1,184.0M [actual]R1,067.8MR1,100.0M [fcst]R1,011.2M
Fuel costR418.4MR706.5MR594.3MR584.5M
Non-fuel costR717.8MR683.5MR657.9MR666.7M
PBTR127.4MR43.7MR208.4M−R68.1M−R64.5M−R151.2M−R98.0M
Budget spine only (revenue + PBT). Cost budget lines are not cross-cast — per findash-actuals-precedence rule. Budget columns are management budget (signed as reported: revenue positive, PBT profit = positive).

May 2026 — ACTUAL Revenue · April-cost scenarios

Revenue is ACTUAL (commercial/Radixx — X3 close supersedes). Only fuel R/L varies across scenarios.

May Optimistic (actual rev) [actual rev]

Revenue: ACTUAL (commercial/Radixx — X3 close supersedes). Only fuel R/L varies.
  • Fuel R/L: R23.02
  • Revenue: R1,184M [ACTUAL]
  • Fuel: R570M
  • Non-fuel: R658M
  • Flights: 4,929 (actual)
  • Yield: R1,553 (actual)
  • LF: 81.9% (actual)
−R43M
-3.7% margin · Strong demand, soft fuel — opt pairing

May Base — central (actual rev) [actual rev]

Revenue: ACTUAL (commercial/Radixx — X3 close supersedes). Only fuel R/L varies.
  • Fuel R/L: R24.02
  • Revenue: R1,184M [ACTUAL]
  • Fuel: R594M
  • Non-fuel: R658M
  • Flights: 4,929 (actual)
  • Yield: R1,553 (actual)
  • LF: 81.9% (actual)
−R68M
-5.8% margin · Central; revenue actual, fuel B4i-anchored — base pairing

May Pessimistic (actual rev) [actual rev]

Revenue: ACTUAL (commercial/Radixx — X3 close supersedes). Only fuel R/L varies.
  • Fuel R/L: R25.02
  • Revenue: R1,184M [ACTUAL]
  • Fuel: R619M
  • Non-fuel: R658M
  • Flights: 4,929 (actual)
  • Yield: R1,553 (actual)
  • LF: 81.9% (actual)
−R93M
-7.8% margin · Weak demand, sticky fuel — pess pairing

Stress test — April fuel held flat (<10% tail) [stress test]

Revenue: ACTUAL (commercial/Radixx — X3 close supersedes). Only fuel R/L varies.
  • Fuel R/L: R26.52
  • Revenue: R1,184M [ACTUAL]
  • Fuel: R656M
  • Non-fuel: R658M
  • Flights: 4,929 (actual)
  • Yield: R1,553 (actual)
  • LF: 81.9% (actual)
−R130M
-11.0% margin · Stress: April R26.52/L held flat (no B4i ease) + actual revenue

June 2026 — Forecast (booking-curve-led)

Revenue: booking-pace-led (day-1 R455.5M booked, 297,878 pax). Day-1→final fraction declining (Apr 52.8%, May 44.7%); June pacing behind both. June back-loads on SA school holidays (late June). Costs: April basis (R67,872/flt direct + R323.3M overheads flat). Fuel R/L: opt 22.02 / base 23.02 / pess 24.02 / stress 26.52.

June Optimistic (forecast) [forecast]

  • Fuel R/L: R22.02
  • Revenue: R1,184M
  • Fuel: R559M
  • Non-fuel: R667M
  • Flights: 5,059
  • Yield: R1,520 (implied)
  • LF: 81.5% (implied)
−R42M
-3.5% margin · Fills to seasonal/YoY view (LF 81.5%, yield R1,520) + soft fuel — opt pairing

June Base case — central (forecast) [forecast]

  • Fuel R/L: R23.02
  • Revenue: R1,100M
  • Fuel: R585M
  • Non-fuel: R667M
  • Flights: 5,059
  • Yield: R1,492 (implied)
  • LF: 77.2% (implied)
−R151M
-13.7% margin · Modest school-holiday back-load — booking-pace central + R23.02 fuel

June Pessimistic (forecast) [forecast]

  • Fuel R/L: R24.02
  • Revenue: R1,020M
  • Fuel: R610M
  • Non-fuel: R667M
  • Flights: 5,059
  • Yield: R1,489 (implied)
  • LF: 71.5% (implied)
−R257M
-25.2% margin · Pace-linear, weak fill + sticky fuel — pess pairing

Stress test — April fuel held flat (<10% tail) [stress test]

  • Fuel R/L: R26.52 (Apr actual, no ease)
  • Revenue: R1,100M
  • Fuel: R673M
  • Non-fuel: R667M
  • Flights: 5,059
  • Yield: R1,492
  • LF: 77.2%
−R240M
-21.8% margin · Stress: April R26.52/L held flat (no easing) + base revenue. Symmetry with May stress.
May revenue: indicative — actual commercial/Radixx flown revenue, GL close pending. Radixx runs ±1–4% vs GL (≈R12–47M); May PBT central band is −R43.4M to −R92.8M (opt R23.02/L to pess R25.02/L). X3 GL close will supersede the Radixx revenue figure.
May story: the May operating loss is a revenue-seasonality + fuel-premium story. Revenue fell −R243M (seasonal demand); fuel HELPED (+R112M relief); non-fuel saved +R26M — operating swing −R105M is demand-driven. At normal pre-Iran fuel (~R19/L), May ≈ +R56M operating; the ~R124M fuel premium tips a soft seasonal month into a loss.
Fuel R/L method: delivered R/L = lagged-Platts jet × ZAR/USD + ~R6.40/L fixed delivery differential (into-plane, levy, transport, margin). This lag explains why an 11.7% spot drop only moves delivered ~9% (May −R2.50 calibrated; June −R3.50 slightly aggressive).
Sensitivity: R1/L fuel = R24.7M PBT (May) / R25.4M PBT (June) — i.e. R1/L move × uplift volume = PBT impact. FX note: ZAR/USD is the main overhead+fuel swing — a R1/USD move changes effective R/L by ~R1.35–1.50.
Operating vs reported PBT: April reported +R44M vs operating +R37M — the +R6.5M is non-operating (net finance/other income). May/June figures are operating PBT; do not compare April reported vs May/June operating directly.
Scenario pairing: opt = strong demand + soft fuel; pess = weak demand + sticky fuel. The band is NOT a confidence interval — it represents paired demand+fuel assumptions. "Stress test — April fuel held flat" is a <10% tail, shown for symmetry with May. Base (central) is the headline scenario.
Costs for both months projected off April actuals: R67,872/flight direct (variable) + R323.3M overheads (flat).

April actual → May actual — driver decomposition (operating PBT swing)

May revenue is ACTUAL (commercial/Radixx — X3 close pending). Fuel cost at base R24.02/L; non-fuel projected off April cost basis. This table decomposes the −R105.3M operating PBT swing into its three drivers. The key insight: fuel HELPED (fell R112.3M) — the loss is driven by the R243.2M seasonal revenue drop, cushioned only partially by fuel relief.
APR (actual)MAY (actual rev / base fuel)ΔDriver note
RevenueR1,427.2MR1,184.0M [ACTUAL]−R243.2MSeasonal demand drop — fewer and cheaper passengers (LF 81.9% vs Apr 86.2%)
Fuel costR706.5MR594.3M [base R24.02/L]+R112.3MFuel HELPED: fewer flights + mild R/L easing → cost fell R112.3M
Non-fuel costR683.5MR657.9M [proj]+R25.7MReduced schedule (5,307 → 4,929 flights) saved variable direct costs
Operating PBT swingR43.7M (operating)−R68.1M [base]−R105.3MRevenue seasonality drove the swing; fuel + cost savings partially offset
Fuel premium context. At normal pre-Iran fuel (~R19/L), May operating PBT would be ≈ R56.1M (+R124.2M vs base). The ~R124M fuel premium (actual vs ~R19/L = R124.2M) is what tips a soft seasonal month into a loss. The story is revenue seasonality + fuel premium, not "fuel hit alone" — revenue fell R243.2M while fuel only helped R112.3M.

FX & Fuel Sensitivity

Fuel ≈ USD 1.00/L (Platts-linked), so ZAR/USD is the dominant fuel swing. Sensitivity = fuel volume × R1/L (or USD/ZAR × ~R1.35–1.50 per USD step). Overheads carry additional USD exposure (leases, maintenance) not captured here.

ZAR/USD moveMay PBT impactJune PBT impactNote
−R1.00 (ZAR stronger)+R24.7M+R25.4MFuel FX only; overheads carry additional USD exposure not modelled
−R0.50 (ZAR stronger)+R12.4M+R12.7MFuel FX only; overheads carry additional USD exposure not modelled
Base (R17.67)Base assumption
+R0.50 (ZAR weaker)−R12.4M−R12.7MFuel FX only; overheads carry additional USD exposure not modelled
+R1.00 (ZAR weaker)−R24.7M−R25.4MFuel FX only; overheads carry additional USD exposure not modelled

Fuel R/L sensitivity (holding revenue fixed)

R/L moveMay PBT impactJune PBT impact
−R2.00/L+R49.5M+R50.8M
−R1.00/L+R24.7M+R25.4M
−R0.50/L+R12.4M+R12.7M
Base
+R0.50/L−R12.4M−R12.7M
+R1.00/L−R24.7M−R25.4M
+R2.00/L−R49.5M−R50.8M

Caveats & Methodology

NOTE — findash reconciliation gap > R15M (warn threshold)
Non-operating IS items (finance costs, tax, other income) likely explain the gap. Gap = published PBT − (revenue − total costs).
Methodology notes & assumptions
  • 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 revenue, yield, LF, pax are ACTUAL (commercial/Radixx). Only May fuel R/L is projected (GL closes at month-end). June revenue, yield, LF are forecast (YoY-softened). X3 close will supersede Radixx figures when available.

Generated 2026-06-01 by build_report.py (fuel-impact-report skill, MC-3483/v3) · IATA fuel: Data Fuel.xlsx · Ops: kpi_data.json · Budget: budget_data.json · B4i: ~/PKA/SecondBrain/wiki/concepts/Fuel-Prices-B4i.md (updated 2026-05-26) · Surcharge: ~/PKA/SecondBrain/wiki/concepts/fuel-surcharge-data/surcharge_history.json (updated 2026-05-26)

Mar → Apr Deep-dive — Fuel Shock Absorption Analysis

April fuel hike: how much was absorbed vs dropped to PBT · closed actuals · kpi_data.json

Fuel hike (Mar→Apr)
R288M
additional fuel cost in April vs March
Absorbed by fares + cost cuts
79%
194M fares + 34M cost savings
Dropped to PBT
84M
the residual not recovered

Operating Metrics

MetricMar 2026Apr 2026Δ Mar→AprMay 2026 (actual rev)
Flights5,6405,307−5.9%4,929
Pax952,399861,063−9.6%762,490
Seats1,062,072999,135−5.9%931,342
Load Factor89.7%86.2%−3.5pp81.9%
Yield (R/pax)R1,329R1,628+22.5%R1,553
RevenueR1,233.5MR1,427.2M+15.7%R1,184.0M

Cost Build-up

LineMarAprΔ Mar→AprMay (actual rev)
Fuel volume (L)28.6M26.6M−6.9%24.7M
Fuel R/L deliveredR14.62R26.52+81%R24.02
Fuel costR418MR707M+R288MR594M
Non-fuel costR718MR684M−R34MR658M
Direct costs (ex-fuel)R388MR360M−R28MR335M
Overheads (all other costs)R330MR323M−R6MR323M
Total costR1,136MR1,390M+R254MR1,252M
PBTR127MR44M−R84M−R68M

Cost Mix

Fuel % of revenueFuel % of total costs
Mar33.9%36.8%
Apr49.5%50.8%
May (proj)50.2%47.5%
Pre-spike norm~22%~25%

Recovery Analysis

Per-pax basis (cleanest — strips volume effects)

MarAprΔ Mar→AprMay (actual rev)
Yield (R/pax)R1,329R1,628+R299R1,553
Fuel/paxR439R821+R381R779
Yield recovery: R299 of R381 = 78%

Per-flight basis

MarAprΔ Mar→AprMay (actual rev)
Revenue/flightR219KR269K+R50KR240K
Fuel/flightR74KR133K+R59KR121K
Recovery: R50K of R59K = 85%

Total network basis — full reconciliation

MarAprΔ Mar→AprMay (actual rev)Effect
RevenueR1,234MR1,427M+R194MR1,184MFares hiked → recovers fuel
Fuel costR418MR707M+R288MR594MThe hit being absorbed
Non-fuel costR718MR684M−R34MR658MFewer flights (5,640→5,307) saved costs
Direct costs (ex-fuel)R388MR360M−R28MR335MVariable — moves with flights flown
Overheads (all other costs)R330MR323M−R6MR323MLargely fixed — barely moves
Other IS movementR30MR7M−R24MFinance costs / tax / non-op items (non-operating IS) — not projected for May
Net to PBTR127MR44M−R84M−R68MWaterfall: 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%.
May (proj) columns show the Base-case projection (SummaryExcel revenue + QV fuel burn + anchored B4i fuel R/L) — not a closed month. The fuel-hike absorption % above is a March→April measure: April→May fuel falls (smaller, lower-volume month + B4i easing), so there is no hike to absorb into May.

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%
Reading these 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.

B4i Fuel — Weekly Tariff History appendix

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

Loading…

Route-Level Fuel Surcharge (Radixx) appendix

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
-12.5%
2026-04-07 → 2026-05-12

Top 6 routes — surcharge trajectory

Full route × week table

Route03-2403-3104-0704-1405-0505-12
BFN-JNBR145R212R397R391R360R347
CPT-BFNR232R338R635R627R576R555
CPT-DURR307R447R841R830R762R735
CPT-ELSR227R329R619R611R561R542
CPT-GRJR139R202R381R376R345R334
CPT-HDSR366R532R999R987R906R874
CPT-HLAR301R439R825R814R749R721
CPT-JNBR305R444R833R822R756R728
CPT-MQPR366R532R999R987R906R874
CPT-PLZR191R278R523R516R475R458
CPT-WDHR257R375R704R694R638R615
DUR-ELSR174R253R476R469R431R416
ELS-HLAR227R329R619R611R561R542
ELS-JNBR215R313R587R580R532R513
GRJ-HLAR290R422R794R783R720R693
GRJ-JNBR267R389R730R720R662R638
HLA-DURR174R253R476R469R431R416
JNB-DURR168R245R460R454R417R403
JNB-HRER222R323R607R599R551R531
JNB-MRUR530R771R1,448R1,429R1,314R1,267
JNB-VFAR217R316R593R585R538R519
JNB-ZNZR449R654R1,228R1,212R1,114R1,074
MQP-JNBR133R194R365R360R331R320
PLZ-DURR197R288R539R532R489R472
PLZ-HLAR250R363R682R673R619R597
PLZ-JNBR232R338R635R627R576R555
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 appendix

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. 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.