
A solar model is forgiving. You take the hourly yield from the energy yield assessment, apply the tariff, degradation and availability, and roll it up into six-monthly periods. The sun does what it does and the model counts it.
Bolt on a battery energy storage system (BESS) and that stops working, because a battery makes decisions. When to charge, when to discharge, whether to sit on its energy for a better hour or a capacity call. Revenue hangs on those decisions, and they hang on prices, contracts and the state of the cells. Half the job is modelling the operator.
Why now
On 7 October the Minister of Electricity and Energy, Kgosientsho Ramokgopa, said the first determination under IRP 2025 prioritises 4.6 GW of battery storage alongside 5 GW of gas-to-power (Energy-Storage.news). That comes on top of roughly 1.7 GW already procured across three BESIPPPP bid windows of 513 MW, 615 MW and 616 MW (ESS News). This determination has no new solar or wind in it. Hybrids are promised in a later one.

The rest of the continent is moving too. Watson Farley & Williams and Aurora Energy Research count 28 BESS projects in Africa above 50 MWh, and quote Rho Motion's forecast that installed capacity could grow by up to 700% between 2025 and 2030 (WFW).

More batteries means more models, and hybrid models tend to trip over the same few things.
The stack is a queue
"Revenue stack" suggests you pile income streams on top of each other. Mostly you can't, because they all want the same few hundred megawatt-hours.
The usual candidates are energy shifting (charge from midday solar, sell into the evening peak), capacity or availability payments for being ready when the buyer calls, ancillary services sold to the system operator, clipping recapture from solar the grid connection can't take, and firming output to a contracted profile. Contract wrappers sit on top of these: a fixed-price toll, a floor with profit sharing, or a cap-and-floor, which WFW lists as the main ways merchant risk gets pushed between developer and offtaker.
Energy held back for a capacity call can't be sold into the peak. A battery parked at half charge for frequency response can't soak up clipped solar. Add the streams up independently and you're selling the same electron three times. So the real question is which revenue gets first call on the battery, hour by hour, and the model has to answer it explicitly.
Who decides the dispatch?
Start here, because it changes the whole model. Under the new determination, procurement is meant to line up with the system operator's charging and discharge requirements, with enforceable availability and performance obligations (ESS News). If someone else presses the buttons, your model is mostly about availability, penalties and degradation under their duty cycle. If you press them, under a private offtake or a wheeling deal, you are modelling arbitrage, and that needs a time step much finer than six months.
A battery earns its money inside the day: the gap between midday and the evening peak, the cloudy afternoon that leaves it half empty at 18:00. You need hourly data for at least a representative year. Full 8,760-row years in Excel are transparent and painfully slow once you run 20 years and some sensitivities. A 12 × 24 grid of average days is quick to audit but smooths out the bad weeks, so it flatters the battery. Most serious hybrid models end up running dispatch in Python or an optimiser and feeding annual totals (energy shifted, cycles, clipping recovered, availability) into the Excel model. The lender's model auditor then has two things to check, which they will mention.
Then there's foresight. An optimiser that knows tomorrow's prices and weather dispatches perfectly, and no real operator does. Either haircut the arbitrage revenue or use simple rules based on what an operator would know in advance, like the tariff schedule and a day-ahead solar forecast. Rules leave a little money on the table. When someone is lending against the number, that's the side to be wrong on.
One connection, two assets
The PV and the battery usually share one grid connection with one export limit, and that single number causes more errors than anything else in the file.
Take an illustrative plant: 120 MW of PV (AC) behind a 100 MW export limit, with a 50 MW battery. At midday the PV wants to push 120 MW and 20 MW can't leave the site. Without the battery it's clipped. With it, the battery charges for close to nothing. In the evening it cuts the other way. If the PV is still making 60 MW at 17:00 in summer, the battery can only discharge 40 MW, not its rated 50.
So every dispatch row needs PV plus discharge, less charging, to stay under the export limit. Check whether the contract and connection agreement let the battery charge from the grid at all, because plenty of hybrid deals restrict it to on-site solar. And know whether the design is AC- or DC-coupled. A DC-coupled battery sits ahead of the PV inverter and can catch DC clipping too, which changes how much recapture you can claim.
While you're in the connection agreement, read the tariff. WFW notes that in several African markets batteries pay network charges on both import and export, which eats into returns. In a model that's a charge on every megawatt-hour in and every megawatt-hour out, and it is easy to leave half of it out.
Degradation depends on how hard you drive it
Solar degradation is a straight line copied from the yield report. Battery degradation depends on how hard you run it, which depends on dispatch, which depends on the revenue stack. Another loop, though a polite one.
Drive the supplier's curve (remaining capacity against cycles and calendar years) from the cycle count your dispatch produces, rather than a flat percentage a year. Then check the warranty, because most cap annual cycles or average state of charge, and a strategy that chases every spread can void it. Put round-trip losses in the charging line where you can see them, not buried in a revenue haircut.
This is where developers and lenders pull in different directions. WFW makes the point that developers may chase short-term revenue even if it shortens the battery's life, while lenders want steady cash flow and a warranty that still holds. Expect covenants and cash sweeps tied to cycling, and model them.
Finally, choose between overbuilding on day one and augmenting later. Overbuilding costs more upfront and keeps usable capacity above the contracted level for longer. Augmentation adds modules in year 7 or 10, or whenever the curve crosses the contracted level. That's cheaper if pack prices keep falling and painful if they don't. Either way it's a dated capex line that needs funding, often from a reserve account built up in the early years. If the contract asks for 50 MW for four hours on demand, the model has to show 200 MWh usable in every year of it, not just year one.
How the bank will read it
Lenders split the stack into money that's contracted and money that isn't. WFW puts it plainly: "a credible contracted revenue floor is the prerequisite for commercial debt." Capacity payments and fixed tariffs get sized much like a solar PPA. Merchant arbitrage and price-dependent ancillary revenue get a heavy haircut, a higher DSCR, or no debt. Build each layer with its own switch for the sizing case, and show the DSCR with and without the uncontracted ones.
The downside case changes shape too. For PV it's a P90 yield. For the battery it's availability (a capacity contract with penalties punishes a 95% available battery harder than any solar PPA would), spreads narrowing as more storage connects (which 4.6 GW of new batteries is likely to help along), and degradation running ahead of the curve. Run all three together, not just a cloudy year.
In South Africa the contracted end is the public programmes. All five BESIPPPP Bid Window 1 projects, 513 MW of four-hour storage, have reached commercial close and started construction (Energy-Storage.news), with the first due online between September and November 2026 (Engineering News). The merchant end waits on the wholesale market, whose launch the NTCSA pushed from April to the third quarter of 2026 (Engineering News). Until there's trading history, a merchant price curve is a forecast with a consultant's name on it.
Before anyone relies on it
- Energy balances every hour. PV generated equals PV exported plus PV into the battery plus clipped, and battery discharge equals charge times round-trip efficiency, give or take the change in state of charge.
- Export stays under the connection limit in every hour of every year.
- Annual cycles sit inside the warranty, and they drive the degradation curve.
- Usable capacity stays at or above the contracted level every year, with augmentation capex where it doesn't.
- Run each revenue layer on its own, then all together. The combined total should not exceed the sum of the standalone runs and should fall below it where the streams compete for the same battery capacity. If the two match, check whether the dispatch constraints are binding and whether anything is being counted twice.
The last one is the cheapest test in the file and the one most often skipped.
Sources
- South Africa pursues 4.6GW of battery storage deployments in Integrated Resource Plan, Energy-Storage.news, 9 October 2026.
- South Africa to procure 4.6 GW of battery storage, ESS News, 9 October 2026.
- Betting on battery storage: Africa’s growing BESS market, Watson Farley & Williams, 15 June 2026.
- South Africa poised for record IPP deployments in 2026, Engineering News, 22 May 2026.
- Launch of SAWEM delayed, but NTCSA says preparations are well advanced, Engineering News, 10 April 2026.
