The Landed Costs Hiding Behind Your Robot Battery Pack Quote

Date Author Lot Trace

The landed cost of a robot battery pack is the quoted unit price plus freight, dangerous-goods handling, duty, brokerage, the carrying cost of the safety stock you hold against transit variability, and the amortized value of the calendar life those cells burn while they sit in a rack. Of those, duty is the one most often entered once as a fixed number and never touched again, which is exactly the mistake. Duty treatment and trade programs move over the life of a fleet program, so the rate belongs in the model as an adjustable input with a range attached to it, not as a figure you look up the week you build the budget.

I keep two things open when I price a pack. On the left is the supplier's quote. Usually a single page: a price at the top, an Incoterm I read three times to be sure I've got it right. On the right is a workbook I built years ago that has six columns instead of one.

Column one is the quoted unit price. Column two is inbound freight plus dangerous-goods handling, which stops being a rounding error the moment the pack is Class 9 lithium and every carton has a state-of-charge limit stapled to it. Column three is duty and brokerage. Column four is carry: capital, warehouse, insurance. Column five is the landed number per pack. Column six divides that by warranted pack-years.

If you only ever fill in columns one and two, you can still pass a budget review. That is the problem. Columns three, four, and six are where a program gets expensive eighteen months after the PO, at which point nobody wants to reopen the assumption that made it look cheap.

Duty is a dial, not a lookup

I don't build a model around today's duty treatment, because today's treatment is not a fact about the program. It's a fact about today. A fleet program runs five or more years. Packs get ordered in waves: pilot, first tranche, spares, replacements. Every one of those waves passes through whatever the trade environment happens to be at the time. If your model has a hard-coded number in it, you have not made a forecast. You've made a bet and labeled it a budget.

What I do instead is make duty a cell with a floor and a ceiling around the current treatment, then show what landed cost per pack does across that range. That's not policy prediction, and it isn't classification work. That part belongs to my broker and to counsel. It's arithmetic on a range, and it takes twenty minutes. When the number moves, I already know whether it moves my program by comfort or by crisis, and roughly where the break-even sits.

I keep duty and brokerage in separate cells because they move for different reasons. Brokerage is a service cost and behaves like one. Duty is exposure.

One more thing lives in that column: the value basis. I don't set it. But I insist that whatever basis gets applied is stated in writing on a quote or a memo, and then I model the alternative on the same page, so the swing is visible next to the price. Buyers get surprised by that swing far more often than by the headline number.

The same pack has three different landed costs

The pack doesn't have a landed cost. The lane does.

Air gets packs to you in days and costs the most per kilogram, and the dangerous-goods rules on state of charge and quantity per package generally get tighter, so the same 500 units may need more packaging, more paperwork, and more handling events. Ocean is cheaper per unit, slower, and more variable, and that variability is not free. It converts straight into safety stock in column four. Domestic assembly takes most of the inbound pipeline out of the picture.

In the US, the shipping rules behind all of this sit inside the DOT and PHMSA hazardous materials framework, and the mode you choose decides which packing instruction you're working inside. What I need at my desk is not a legal reading of it. It's an honest answer to whether the chosen mode keeps the schedule and the packaging budget intact.

I've watched the same pack spec quote out at three landed numbers that varied by more than the supplier's unit price, purely on mode and origin. Which means the sourcing decision I thought I was making, supplier A versus supplier B, was really a lane decision wearing a supplier's name.

The document that decides a lot of this is the UN 38.3 test summary. I ask for it early. I read the section headings, the version date, and what's covered. I hand the body to people qualified to interpret it. What I watch for at my level is narrower and more practical: does the summary cover the cell, the module, and the assembled pack, or only part of the chain? If it covers part of it, the schedule risk lands on me whether or not anyone wants to admit it, because packaging and mode choices downstream get built on that document.

The expensive half of carry is the calendar

When people say carrying cost, they list capital, warehousing, and insurance. Those are real, and they're the easy ones. You can get a rate from finance and a rate from the 3PL and multiply.

The half that doesn't show up on anyone's rate sheet is age. These are lithium cells. They start a calendar clock the moment they're built, independent of how many cycles they've run. A pack that sits in a rack for sixteen weeks before it goes into a robot does not arrive at the customer as a new pack. It arrives with part of its service window already spent, and if you're warrantying pack-years rather than months in service, you paid for life you'll never use.

So carry has two components: the cost of the money and space tied up in inventory, and the amortized value of the life that inventory is losing. Most models have the first and are missing the second. The second is usually why the overseas lane that looked cheaper per unit stops looking cheaper once you're carrying six or eight weeks of safety stock instead of two.

Numbers here are illustrative and hypothetical, but the shape matters. Hold a couple weeks of pack stock at a finance-driven carry rate and the carry per pack is small. Stretch to two months of stock to cover a variable ocean lane, add insurance and warehouse, and carry per pack starts to look like a real percentage of unit price. Then add the age. The column stops being overhead and starts being a decision.

What domestic assembly actually buys you

It's rarely the labor rate. It's the pipeline.

Domestic assembly compresses the inbound leg, and often the outbound leg to the customer, which means less safety stock, less capital sitting in racks, and cells that go into robots weeks younger. That's worth a real premium on unit price, and I've seen it worth more than people expected, because the comparison people run is unit price against unit price. The honest comparison is landed-per-pack-year against landed-per-pack-year.

It isn't free. Domestic assembly converts duty and transit risk into labor and overhead, and overhead is sticky. You can move a lane. You can't renegotiate a facility lease in a week. If your domestic partner is the only source that can build to your BMS spec, you've traded a trade-policy risk for a single-source risk, and both belong in the model.

The number you'll actually be defending

Whatever gets written into the business case is a landed number, and it will be quoted back at you long after the PO closes. Build the sheet so that number is a formula instead of a figure. Then when someone asks what happens if duty treatment moves or the lane gets slower, you open one cell, change it, and answer in the meeting instead of two weeks later.

The quote is not the cost. It's the first term in it.

Lot Trace

About the author

Lot Trace

Lot Trace is a byline shared by sourcing, quality, and compliance professionals who have spent their working lives on the buyer's side of custom battery pack programs. They have walked pack assembly lines in the Midwest and in Guangdong, reviewed cell lot records and UN 38.3 test summaries, and sat through PPAP reviews for robot programs built on both sides of the Pacific.

More about us