Your Small Battery Pack Order Costs More per Unit Than Quoted
A small battery pack order costs more per unit because the charges that repeat with every shipment do not shrink with the quantity. Dangerous goods documentation, dangerous goods handling, customs entry, and carrier minimums are priced per shipment, so they land on 200 units the same way they land on 2,000. Unit price is the wrong place to look for the gap. The gap lives in that fixed block, and the only way to see it is to give it its own line in the landed cost model and divide it by the number of units actually in the box.
The quote that taught me this was one page. Two hundred and forty packs, a unit price, a lead time, and the letters FOB at the bottom. I printed it. Then I printed the forwarder's email and laid it beside the quote, and the email was longer than the quote.
You can picture what it asked for, because it asks for the same things every time. Gross weight and dimensions. The UN38.3 test summary. The safety data sheet in the current revision. Whether the packs ship as UN3480, batteries alone, or as UN3481, packed with equipment or contained in equipment. The state of charge they left the factory at. How many packages and what the packaging is. Whether the outer box is UN specification packaging. A twenty-four hour emergency contact number that will actually be answered.
None of that changed because we ordered 240 instead of 2,400. It is the same list, the same review, the same signature block.
The buyer had done the comparison he was asked to do, which was our unit price against two other suppliers. On that page we looked fine. On the page after it we didn't, and the page after it was mine to write.
The block that doesn't resize
Sit with the model for a minute. Delivered cost per unit has three kinds of terms in it, and they behave differently when quantity moves.
The first is unit price times quantity. That one is linear. Everyone negotiates it and everyone stares at it.
The second is the ad valorem family: duty and tax assessed on the declared value of the goods. That one is proportional. Halve the order and the duty halves with it. It behaves nicely on the spreadsheet, which is exactly why people trust it more than they should.
The third is the fixed block. It has nothing to do with how many units are inside. On a small order it includes:
- preparation and review of the shipper's declaration for dangerous goods, and the classification decision behind it
- dangerous goods acceptance and handling at the origin terminal
- the carrier's minimum charge, which applies whether the shipment fills a pallet or not
- customs entry, which carries a broker minimum before a single line item is counted
- final delivery, which has its own minimum on a small lot
- and, if anything is wrong with the paperwork, the cost of the shipment sitting somewhere while it gets fixed
Divide that block by 240 and you get a number. Divide it by 2,400 and you get a tenth of that number. The block itself did not move. Only the denominator did.
Duty scales. The paperwork doesn't.
Here is the thing I end up explaining most often to people new to this category. A low declared value genuinely does reduce the duty line and the tax line. That part of the model is honest and it scales down with the order the way you would expect.
What it does not reduce is the effort of clearing a shipment. An entry is an entry. The broker opens a file, classifies the goods, transmits, and bills a minimum whether the shipment is worth a little or a lot. The forwarder prepares and reviews a dangerous goods declaration for a shipment of any size. The terminal handles dangerous goods for a shipment of any size. There is no small-lot discount on regulatory scope.
So the two lines people watch most closely are the two lines that behave best, and the lines that wreck small-order economics sit quietly at the bottom of the page in absolute dollars that look trivial. They aren't trivial. They're just small in a way that stops you from dividing them.
I don't put dollar figures in an article, because every one of them moves with lane, season, and carrier and any number I typed would be wrong by the time you read it. The structure holds regardless. Pull the actual figures from a forwarder quote on the actual weight and dimensions, from your broker, and from the supplier's packing list, and drop them in.
Air, ocean, and what a small lot can actually move
Mode choice is where a small battery order gets decided, and it is not only about transit time.
Air carries a lower state-of-charge ceiling than ocean for cells and packs, and the applicable packing instruction limits how much can go into a single package. For a small lot that often means more packages than you would guess, more marks, and a declaration with more lines on it. Documentation effort per unit goes up, not down.
Ocean for a small lot usually means less-than-container-load, which has its own minimums and its own handling at the consolidation facility. Your cargo gets touched by people who are not your forwarder, and your dangerous goods paperwork has to be correct enough to survive that. Consolidating a small lot with other freight can drop transport cost per unit substantially. It also adds handling steps and documentation steps, and those have to be planned before the vessel sails, not discovered at the CFS.
Neither mode is the cheap one for a small order. They are expensive in different places.
The Incoterm goes in the header
Every one of these comparisons has to be labeled with a named Incoterm, in the header, before anyone looks at a number. EXW hands you the entire fixed block and you will see every line of it. FOB origin means the block starts at the port or airport. DDP buries the block inside the seller's unit price, and with dangerous goods a seller may decline DDP outright or price the risk of it into the number in a way you cannot unpack.
Two quotes with different Incoterms are not two quotes for the same thing. I have watched a meeting go sideways for twenty minutes because one column was DDP and the other was FOB and nobody in the room noticed. Put it in the header. Make it a column. Make it something the spreadsheet forces you to fill in.
The quantity break is usually a pallet, not a price
The per-unit penalty of a small order shrinks as the order approaches the next logical shipment increment, and that increment is almost never a supplier price break. It is carton quantity, pallet quantity, or container fill.
So before we settle a quantity, I ask the supplier for three numbers: units per inner carton, cartons per pallet, and pallets per container or per air pallet position. Then I run the model at the order quantity, at the next carton, at the next pallet, and at the next container fill. Often the jump from 240 to 300 costs almost nothing in fixed terms and shaves the per-unit block down more than a week of price negotiation would.
That is the cheapest conversation in the whole project and almost nobody has it. It is three questions in an email, and the answers belong in the RFQ response so you can compare suppliers on increments as well as on price.
Buying the increment and holding the balance
The obvious alternative is to buy the full increment and hold the rest as inventory, and that deserves honest modeling rather than a reflex.
The carrying cost is real. Warehouse space, and if you store packs at your own site you also inherit dangerous goods storage limits along with whatever your fire code and your insurer think about them. Cells age on the shelf, and a design revision can strand the balance. If you are matching cells for a pack build, though, holding a larger lot is an advantage rather than a burden, and that cuts the other way.
The fixed-cost penalty is also real, and it is the one people forget to put on the same page. Do the comparison per unit, at the same Incoterm, with carrying cost expressed per unit per month so it can actually be added to the delivered cost. Sometimes inventory clearly wins. Sometimes the storage, aging, and revision risk clearly lose. Either way you find out before the PO instead of after the second shipment.
One more thing about releases. A blanket order with quarterly releases feels like it solves the small-order problem. It doesn't. It converts one shipment into four, with four declarations, four entries, and four minimums. That can still be the right call, because it keeps inventory off your floor and matches spend to consumption. But run both versions through the model before you sign, because the fixed block multiplies while the unit price doesn't.
What I do before the PO goes out
I keep a tab in the landed cost model called 'per shipment.' One column per shipment scenario. One row per fixed item, each with a source written next to it: forwarder quote, broker confirmation, supplier packing list. Below that, a row for units. Below that, the block divided by the units. It takes an afternoon to build once and about ten minutes to update per project, and it has changed my recommendation on quantity more than once.
After that the comparison is honest. Unit price against unit price. Ad valorem against ad valorem. The fixed block against itself at different quantities. Three clean lines instead of one blended number nobody can defend.
The last thing I will say is the part that gets skipped. A small order is sometimes exactly right: an engineering build, a bridge shipment while a tooling change is finished, a low-volume program where the fixed cost is simply the cost of serving that program. Nobody should pretend a fifty-unit build can be made cheap, and chasing that usually just moves the money around. The point isn't to avoid small orders. It is to know, before you sign, which lever will move your number: quantity toward the next increment, mode, Incoterm, consolidation, or carrying the balance as inventory. Those are the five. Usually one of them is nearly free and the other four are not.