Your Battery Pack Incoterm Decides Who Pays Freight and Duty
An Incoterm does not change what a pack costs to build. It changes which costs attach to that pack between the factory door and your receiving dock, and which party signs for each one. Four quotes for the identical pack at the same factory price will land at four different costs per unit, and only one of those numbers belongs in a TCO model: a rebuilt DDP-equivalent landed cost per pack, with freight, insurance, duty, brokerage, and class 9 handling allocated across the quantity actually shipped. The unit price at the top of the quote is not that number, and treating it as one is the most expensive habit in pack sourcing.
I keep all four quotes in a single tab of my landed-cost workbook, stacked so I can see them at once. Same cell, same chemistry, same BMS, same 600-pack order. The terms field in each header reads FOB Shenzhen, CIF Long Beach, DAP Memphis, DDP Kansas City. The unit prices step downward as you read down the column, which is exactly the trap, because it looks like the seller is getting cheaper when all that is happening is that cost is being moved out of the price and into a place you will pay it later.
I read that terms line before I read the price. Every time. Here is what each one actually hands you.
FOB: you are buying a pack and a booking
Free on board means the seller gets the cargo loaded on the vessel you nominated and then stops. You contract the main carriage. You own the dangerous goods booking, and that is not a paperwork formality. Your forwarder is going to want a shipper's declaration signed by the party that packed and marked the consignment, which is still the factory. So the term says you buy the freight, while the physical reality says the seller has to produce the DG paperwork, the UN38.3 test summary, and the SDS before your forwarder will move at all. When that handshake is sloppy, your cargo sits at origin accruing storage while two companies point at each other.
What FOB gives you is control and visibility. Every freight line on your landed cost is a line you negotiated and can audit.
CIF: the insurance is thinner than you think
Cost, insurance, and freight moves the main carriage and a marine policy onto the seller's side of the line, and buyers relax when they see the word insurance. Read the coverage. The default under CIF is minimum cover, the C clause set, which is a named-perils policy, not an all-risks one. For a container of high-value packs crossing an ocean, that gap is real money and it belongs in your risk model even though it will never show up in the invoice. If you want broad cover, you ask for it and you pay for it, and at that point you are describing CIP, which is the multimodal term built for containerized freight anyway. CIF is a sea and inland-waterway term, and stuffing containers under it means your risk transfers at a rail that has nothing to do with when you lost control of the goods.
DAP: everything except the customs entry
Delivered at place looks generous. The seller pays to get the pallet to your named location, and then the entry has to be filed and the duty has to be paid, and both of those are yours. The failure mode I plan around is timing. The truck arrives, the entry is not filed, and the shipment is in a bonded limbo that bills by the day. If you take DAP, you need your broker engaged before the cargo is airborne or afloat, with the commercial invoice, the ten-digit classification, and the country of origin already in hand.
DDP: the number that hides its own arithmetic
Delivered duty paid is the only term where the seller clears for import. It is also the term where the most fiction happens, because a foreign seller generally cannot easily act as the US importer of record and post the bond. So what gets called DDP is often DAP with the seller reimbursing duty afterward, or DDP with a third-party importer of record you have never met. Ask directly, in writing, who is named as importer of record on the entry. If the answer is vague, you have a classification and a compliance exposure sitting under a clean-looking number.
And even under a genuine DDP, the buyer has to verify what was declared on their behalf. I ask for the goods value, the freight component, the duty advanced, the HTS at ten digits, and the country of origin, and I ask for the entry summary. If the seller will not produce the entry summary, the number is unauditable, and you also lose the ability to support a refund claim or a drawback later if the classification turns out wrong. Ask for a DDP invoice that breaks those components out. A single blended number cannot be reconciled against an entry.
The classification question does not move with the term
Here is the part that trips people: duty is assessed on the declared value and the classification of the goods, and neither of those changes because you picked a different three-letter term. Lithium-ion accumulators almost always sit under 8507.60, and origin is a determination made from where the cells were produced and where the pack was assembled and substantially transformed, not from the port it sailed out of. I have watched a buyer celebrate a DDP quote that turned out to declare the wrong origin, which means the savings were a future bill with interest attached.
The dangerous goods layer sits outside the Incoterm entirely
No Incoterm allocates class 9 compliance. Freight quotations for cells and packs carry documentation and handling charges that plain cargo quotes do not, because the shipment needs a DG declaration, class 9 labeling, and packaging that meets the packing instruction. Which UN number you are shipping matters too: standalone cells and batteries, packs packed with equipment, and packs contained in equipment are three different paperwork universes, and the freight quote you get for one will not apply to another.
Air is where this reshapes the model rather than just adding a line. Standalone cells are capped at a 30% state of charge for air transport, and the small-shipment allowances have narrowed over the years, so the packing instruction you are working from has to be the current one. Quantity limits per package mean air may force you into more packages than you planned, which multiplies per-package handling charges. Air is not ocean plus a premium. It is a different cost structure and a different compliance workload, and modeling it as a faster version of the same thing will get you a bad number.
Where the per-pack number actually comes from
Allocation is the step people skip. Freight, insurance, duty, brokerage, and DG handling are largely per-shipment costs, not per-unit costs, which means your per-pack landed cost changes with order size. A forwarder minimum applies whether you ship 600 packs or 150. Divide that minimum by 150 and the per-pack penalty is four times what it was at 600. I always run the model at the actual quantity on the quote and then again at the top of the minimum-charge band, because that is where a program gets quietly expensive.
A made-up walkthrough, with round placeholders standing in for whatever your forwarder and broker actually quote, to show the order of operations. Goods at a headline unit price across 600 packs, plus the origin charges, the main carriage, the marine or cargo policy, the duty your broker computes from the entry, the entry fee, and the DG handling. Sum them, divide by 600. That result, not the headline price, is what enters the TCO. When I ran that rebuild against a DDP quote on the same tab, the DDP number came in a few dollars above the rebuilt FOB landed cost. That gap is the seller's price for carrying the freight risk and the working capital, and sometimes it is worth paying. You only get to decide that if you have both numbers.
What I do before any of these numbers touch the model
I take the terms line off the quote and put it in its own column so nobody compares prices across different terms by accident. I rebuild each quote to a DDP-equivalent basis, adding back every cost the term pushed onto my side. I confirm the origin and the classification independently of the seller's paperwork. I get the entry summary or I flag the number as unverified. And I keep the per-pack figure split into goods, transport, duty, and compliance, because when the quote moves a month later, I need to know which of those four moved.
None of this makes DDP wrong or FOB right. DDP buys simplicity and hides its arithmetic. FOB buys control and hands you the DG booking. The mistake is picking a term first and modeling afterward, when the term is really a decision about where your costs live, and you cannot compare four landed costs until you have moved all four of them onto the same line.