A distributor in Poland receives two quotes for a 10 kWh wall-mount battery. One is $2,850 (Factory A), the other $2,150 (Factory B). Same nominal capacity, same 48V architecture, same LFP chemistry on paper. The cheaper one looks like the obvious win until you notice the second quote lists no UN38.3 test summary, a BMS from a supplier you can’t trace, and a warranty that quietly excludes cycle life after year three.
The gap between those two numbers is not profit. It is a list of components, tests and reserves that one factory paid for and the other skipped. If you can’t see that list, you can’t tell a fair quote from a trap.
This article breaks a residential energy storage system into its real cost layers, gives you the benchmark numbers for each, and shows you how to read a supplier’s quote the way a factory cost engineer would.
Where the Money Actually Goes
A residential system is not one product. It is a stack of components, each with its own market price, and the total lands somewhere predictable if you know the current cell market. Here is the breakdown for a typical 10 kWh, 48V LFP wall-mount unit, expressed as a share of the ex-works bill of materials.
- Cells50–60% of BOM
- Inverter / PCS$400–700
- Enclosure & assembly10–15%
- BMS$40–90
- प्रमाणनamortised
- Freight & reserve$80–150 + 2–4%
LFP prismatic cells dominate the cost, running 50–60% of the BOM. At current market rates a grade-A 100 Ah LFP cell costs roughly $0.06–0.08 per Wh, so a 10 kWh pack carries $600–800 in cells alone before a single weld is made. This is the number that moves the whole quote, and it moves weekly with lithium carbonate prices. A supplier who quotes you a fixed price for six months is either hedging or hiding something.
A proper 16-cell BMS with active balancing, CAN and RS485, and a UL-recognised protection IC runs $40–90 at volume. A passive-balance board with no comms costs $15. The difference is invisible in a photo and decisive in year four, when one drifted cell takes the whole string down.
ए 5 kW hybrid inverter with MPPT and grid-forming capability lands at $400–700 ex-works. This is where cheap quotes cut hardest, because a low-frequency transformer design that looks identical on a spec sheet costs half as much and derates badly under inductive loads.
These add another 10–15%. A wall-mount steel enclosure with IP65 sealing, a proper heat path and a drop-tested crate is not free, and neither is the labour to torque every terminal to 8 Nm and log every serial number.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
| कॉन्फिगरेशन | सामान्य क्षमते | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits |
|---|---|---|---|---|---|---|
| cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | $850 |
| cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | $1,800 |
| cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | १५.३६ किलोवॅट ताशी | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits | $2,700 |
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits
cURL Too many subrequests by single Worker invocation. To configure this limit, refer to https://developers.cloudflare.com/workers/wrangler/configuration/#limits.
A warranty that excludes the expensive part
Read the cycle-life clause. A warranty that covers “manufacturing defects” but caps cycle life at 2,000 cycles on a cell rated for 6,000 is not a warranty, it is a disclaimer. The reserve the factory sets aside for claims is the difference between a partner and a drop-shipper.
Questions Wholesalers Ask Before They Commit
A fair ex-works price for a grade-A, fully certified 10 kWh wall-mount unit runs $215–285 per kWh. Below $180 per kWh, start asking hard questions about the cells and the BMS.
Usually cells, BMS and certification. The cell grade alone can swing the BOM by 20%, and a missing certification set is another 5–8% that you will pay later at the port or in the market.
Only if your market holds systems past ten years. A 6,000-cycle cell costs more than a 4,000-cycle cell, and for most residential installs the extra cycles are never used. Match the cell to the market, not to the marketing.
Ask for the cell supplier name, the grade certificate and a batch test report showing capacity and internal resistance spread. A factory that buys grade-A cells by the container will show you all three without hesitation.
Judge the Cost Sheet, Not the Cover Price
A residential energy storage quote is a list of decisions someone made about cells, BMS, certification and reserve. The price is just the sum of those decisions. Learn to read the list and the cheap quote stops looking like a bargain and starts looking like a deferred invoice.
If you are sourcing residential systems at volume, send us your target capacity, your market’s grid code and your annual volume, and we will return a line-by-line cost breakdown with the cell supplier, BMS topology and certification set named in full within 24 hours.


