You size a utility-scale battery energy storage system backwards from the delivery obligation, not forwards from a cell datasheet. Fix four numbers first: the usable energy (MWh), the power (MW), the resulting duration (hours), and the point in the system where you owe that energy (for most projects the point of interconnection, on the AC side). Then gross that target up through every loss and derate between the interconnection and the cells, account for 20 years of degradation, and check the result against the temperatures that bind it. The capacity you install on day one is whatever it takes to still deliver the target in year 20 on a hot day, not the nameplate that matches your MWh on paper.
This guide walks the sequence a BESS engineer actually follows: fix the deliverable, build the loss and derate stack, decide how to hold energy flat across 20 years, and validate against weather. Each step is simple arithmetic. The layers compound, which is exactly where a hand-built spreadsheet drifts.
Write down the deliverable before you open a battery model: usable MWh, MW, duration, delivery point, and the guarantee horizon (usually 20 years). A 100 MW / 400 MWh four-hour project does not mean 400 MWh of cells. It means 400 MWh has to leave the point of interconnection on discharge in the binding year, which takes meaningfully more installed capacity once the stack below eats into it. Because cells fade, year 20 is the binding case, not year one, so size to the end of the guarantee and let the early years carry margin.
From the target energy at the interconnection, gross up through each stage back to the cells. Every stage takes a bite, and the stages interact rather than cleanly multiply:
Run the stack at your design condition and you land on the installed usable capacity the day-one build has to provide. This is the core of any BESS sizing tool, and it is where hand calculations quietly go wrong, because moving one input ripples through every downstream stage.
Cells lose capacity to calendar aging and cycling. If year 20 binds, the day-one design has to carry capacity you have not lost yet. There are two honest ways to hold usable energy flat across the life:
Most utility-scale projects augment. Getting the schedule right, how many containers and inverters to add in which year to keep delivered energy flat, is its own modeling exercise, covered in BESS augmentation explained.
Architecture reshapes both the inverter pairing and the loss path. In an AC-coupled design, the battery has its own PCS and ties in on the AC side, independent of any PV inverters, so each block is modular and its loss path repeats cleanly. In a DC-coupled design (a DC-block), the battery shares a DC bus with PV behind a common inverter. Charging from PV skips a conversion stage (DC to DC instead of AC to DC to AC) and can capture energy the PV inverter would otherwise clip, but battery capacity is now coupled to the inverter DC input and the PV. That changes how you pair batteries to inverters and which losses appear in the discharge path. Size each topology with the stack that matches it, and do not reuse an AC loss chain on a DC-block.
Temperature does two things at once: it raises auxiliary draw and it derates usable capacity at the extremes. That is why you cannot size to an average. Model a typical year (a TMY P50 profile) to understand expected behavior, then size the guarantee against a hot year (a P90 profile), which is usually what binds, because aux is highest and capacity derate is worst on the same days you are expected to deliver full energy. Deriving both profiles from roughly 20 years of climate data for the actual site is what turns the design condition from a guess into a defensible number.
None of this is conceptually hard, but running it across two weather years, a 20-year augmentation schedule, and both architectures becomes a large, brittle spreadsheet that has to be rebuilt every time an input moves. FluxPilot runs the full stack: it sizes AC-coupled and DC-coupled designs to a target usable energy, returns container counts and inverter pairings, models the 20-year augmentation schedule, and derives the weather and aux profiles from about 20 years of climate data. It produces a design draft to iterate on, not a final answer, so you can change the battery, the target, or the layout and re-run in seconds, then carry the same design into site layout. Book a demo to watch it size a real project.
It means the target MWh and MW are defined at the interconnection after all losses, not at the cells. You gross that number up through the usable SOC window (depth of discharge), round-trip efficiency, temperature-driven auxiliary load, and transformer and cable losses to find the installed capacity the project actually needs.
Both hold usable energy flat as cells degrade. Overbuilding installs extra capacity now, which is simple to operate but commits more containers and site area up front and leaves capacity idle early. Augmenting builds closer to target and adds containers (and sometimes inverters) on a schedule, which is what most utility-scale projects do.
Temperature raises auxiliary draw and derates usable capacity at the same time, so the hottest days are usually when the project is least able to deliver full energy. Sizing against a hot year (a P90 profile) makes the target hold on the binding case, while a typical year (TMY P50) shows expected behavior.
AC-coupled batteries have their own PCS and a clean, modular loss path per block. DC-coupled (DC-block) designs share a DC bus with PV behind a common inverter, which skips a conversion stage when charging from PV but couples battery capacity to the inverter and PV. Each topology needs its own loss stack and inverter pairing.
The main stages are the usable state-of-charge window (depth of discharge), round-trip efficiency, temperature-driven auxiliary load, and transformer plus cable losses. They compound rather than simply add, and cell degradation over 20 years reduces available capacity on top of that.