Part 1 — The Business of Fashion Wholesale

F Costing, Pricing and Margin Management

A garment's profit is decided long before anyone sells it: in the cost sheet, in the container, at the customs entry, and in the twenty small deductions a retailer takes off your invoice. This chapter walks the money from a meter of fabric to the cash that actually lands in your bank account, number by number, and then turns every step into a table, a field, and a constraint your ERP has to get right.

In this chapter10 sections · about 70 min
  1. What you need to know first
  2. The cost sheet, line by line
  3. From FOB to landed cost
  4. Duty, classification and the 2026 tariff landscape
  5. Margin math done properly
  6. Price architecture
  7. Margin erosion: the full catalog
  8. Costing when currency and materials move
  9. Inventory valuation and its effect on reported margin
  10. What this means for your ERP

What you need to know first

Everything in this chapter is arithmetic on top of six ideas. Learn them now and the rest reads easily.

Styles, SKUs and cost sheets

A style is a design; a SKU is a thing you can pick off a shelf. "Kestrel wide-leg trouser" is a style. "Kestrel wide-leg trouser, Ink, size 8" is a SKU (stock keeping unit). A colorway is one color version of a style, so "Kestrel in Ink" and "Kestrel in Bone" are two colorways of one style. Costing happens mostly at style level, because every size of the same color uses roughly the same trims and nearly the same fabric. Selling and inventory happen at SKU level. Chapter B set up this entity map; this chapter lives on top of it.

A cost sheet is a recipe with prices. It lists every physical thing that goes into one garment (the bill of materials, or BOM) plus the labor to sew it, plus the factory's own costs and profit. Add them up and you get the price the factory charges you. It works exactly like a restaurant costing a dish: 180g of flour at this price, 40g of butter at that price, eleven minutes of a chef's time, a share of the rent, and a margin.

CMT means "cut, make, trim". It is the factory's charge for turning materials into a finished garment: cutting the fabric, sewing it, attaching the trims, pressing and packing. When a factory quotes "CMT only", you are buying labor and they expect you to supply and pay for the fabric. When they quote "FOB" or "full package", they buy the materials too and quote you one all-in price per garment.

FOB, landed cost and the two selling prices

FOB is the factory's price at the port; landed cost is what the goods really cost you. FOB (free on board) means the factory's price with the goods loaded onto the ship at their port. It excludes ocean freight, insurance, customs duty, government fees, and the truck to your warehouse. Landed cost is FOB plus all of that.

For imported apparel the gap varies enormously, mostly because duty rates vary enormously, but on a typical sea shipment expect landed cost to run between 20% and 45% above FOB. The worked example later in this chapter lands at 32.6%. If you price off FOB, you will quietly go broke.

Wholesale price and MSRP are two different prices for the same garment. Wholesale price (WSP) is what a retailer pays you. MSRP (manufacturer's suggested retail price; in the UK, RRP, recommended retail price) is what that retailer is expected to charge a shopper. The gap between them is the retailer's margin, and it is barely negotiable — buyers walk in with a required margin percentage and work backwards. Your job is to make your cost fit underneath both numbers.

Margin, markup and the words for profit

Margin and markup are different things, and confusing them is the classic beginner's mistake. Margin is profit as a share of the selling price. Markup is profit as a share of the cost. A garment costing $10 and selling for $20 has a 50% margin and a 100% markup. Say "50% markup" when you mean margin and you will underprice everything by a large amount. There is a full worked section on this below; it exists because this error costs real companies real money every season.

Three more terms you will meet constantly:

  • COGS (cost of goods sold) is the landed cost of the units you actually sold in a period. Units you bought and still hold are inventory; only the ones that went out of the door count.
  • Gross margin is net sales minus COGS, usually stated as a percentage of net sales.
  • Contribution margin goes further and also subtracts the costs that vary directly with each sale — sales commission, pick-and-pack, outbound freight, so it tells you what one more order is genuinely worth.

Incoterms, HTS codes and the chapter's acronyms

Finally, two pieces of plumbing vocabulary. An Incoterm is a three-letter code in your purchase contract (EXW, FCA, FOB, DDP and so on) that says exactly where the seller's responsibility for cost and risk stops and yours begins. An HTS code is a ten-digit number that classifies your garment for customs; it determines the duty rate, and for apparel those rates are unusually high and vary enormously. Both get their own sections.

Apparel and freight run on acronyms. Rather than making you hunt for them, here is the set this chapter uses, each defined again at the point where it first matters.

TermStands forPlain meaning
SAMStandard allowed minutesHow many minutes of sewing time one garment needs.
BOMBill of materialsThe list of every physical part in the garment.
Ad valoremLatin, "according to value"A duty charged as a percentage of value, not per kilo.
MFNMost favored nationThe normal duty rate a country charges everyone it trades with normally. In the US tariff book this is the "Column 1 General" rate.
CBMCubic meterThe volume a carton takes up. Ocean freight is sold by space.
gsmGrams per square meterHow heavy a fabric is. 270 gsm is a mid-weight twill.
THCTerminal handling chargeThe port's fee for lifting and moving your container.
DrayageThe short truck move between port and warehouse.
ISFImporter Security FilingData US Customs requires before your container is loaded overseas.
3PLThird-party logistics providerThe outside company that stores your stock and ships your orders.
AQLAcceptance Quality LimitThe statistical rule for how many faults in a sample batch means you reject the whole shipment.
RNRegistered Identification NumberA number the US Federal Trade Commission issues to a business so its garment labels can show that number instead of the full legal company name.
ASNAdvance ship noticeAn electronic message telling a retailer what is in the boxes before they arrive.
EDIElectronic data interchangeAn old but universal standard for sending business documents between companies as structured files. Each document type has a number: 810 is an invoice, 812 is a credit or debit adjustment.
RTVReturn to vendorGoods the retailer sends back to you.
IMUInitial markupThe margin implied by the price you first set.
NRVNet realizable valueWhat you could realistically sell stock for, minus the cost of selling it.
TRQTariff-rate quotaA set volume of goods allowed in at a lower rate, with the normal rate applying above it.
P&LProfit and loss statementThe report showing revenue minus costs for a period.
Core principle

Cost is a stack of numbers, each with its own source, its own currency, its own date, and its own reason to change. An ERP that stores "cost" as a single column on the product table has already lost the argument. Store the whole stack.

The cost sheet, line by line

Let us cost a real-ish garment: style W2601 "Kestrel", a women's wide-leg trouser in 8 oz cotton twill, made in Haiphong, Vietnam, ordered in a run of 3,600 units across six sizes. We will carry this style through the whole chapter.

Fabric: consumption, yield and wastage

Fabric is nearly always the largest single materials line in a woven garment. How large depends on how much trim the garment carries: a plain trouser or dress can sit at 80% or more of materials cost, while a jacket loaded with zips, lining and padding may drop to half. Treat "fabric dominates" as the rule and check the actual split on every style. Two numbers drive the fabric line: how much fabric one garment consumes, and what a unit of that fabric costs.

Consumption comes from the marker. A marker is the cutting plan — a long paper or digital layout showing how the pattern pieces for a set of sizes nest together on the fabric width, like a jigsaw arranged to waste as little space as possible. The factory lays many plies (layers) of fabric on a table, puts the marker on top, and cuts through the whole stack.

Marker efficiency, how much of the rectangle is actually pattern pieces rather than gaps, usually runs between 75% and 90% for wovens, and it varies a lot with the garment shape and how many sizes are nested together. That inefficiency is already baked into the marker length, so do not deduct for it twice.

FABRIC CONSUMPTION - Style W2601 "Kestrel" wide-leg trouser
----------------------------------------------------------------------
Marker: sizes 2-4-6-8-10-12 nested, one way, 58" cuttable width
  Marker length for 6 garments                       9.72 yd
  Net marker yield per garment   9.72 / 6         =  1.62 yd

Wastage allowance (added on top of net yield)
  End-of-roll and short lengths                      1.5%
  Splices and fabric faults                          1.0%
  Cutting loss (ends of lay, ply loss)               1.5%
  Shrinkage confirmed by wash test                   1.0%
  TOTAL WASTAGE                                      5.0%

  Gross consumption   1.62 x 1.05                 =  1.701 yd
  Rounded for costing                             =  1.70 yd

  Fabric price, 8 oz cotton twill, 270 gsm        =  $3.95 / yd
  FABRIC COST PER GARMENT   1.70 x 3.95           =  $6.72
----------------------------------------------------------------------

Reading that from the top: the factory nests one of each of six sizes into a marker 9.72 yards long, so on average each garment uses 1.62 yards of the roll. That is the net figure and it is a fantasy, because rolls end awkwardly, mills splice rolls mid-length, the ends of a cutting lay are unusable, and the fabric shrinks in the wash.

Each of those is a separate, measurable loss, and adding them gives a 5% wastage allowance. Gross consumption, the number you actually buy fabric against, is 1.62 × 1.05 = 1.70 yards. Multiply by the price and the fabric line is $6.72. (The "8 oz" and the "270 gsm" describe the same cloth two ways: 8 ounces per square yard works out at about 271 grams per square meter.)

Note the two distinct numbers your ERP must store separately: consumption (1.62) and wastage_pct (0.05). If you store only the product, you can never answer "what happens if the mill improves yield?" or "why did the factory bill us for more fabric than the marker says?"

Watch out

Fabric is priced in different units by different mills: per yard, per meter, per kilogram (common for knits), or per piece. Take a knit mill quoting $9.80 per kilogram for 270 gsm fabric (grams per square meter, a measure of fabric weight) at 165 cm cuttable width. One linear meter of that cloth weighs 0.270 × 1.65 = 0.4455 kg, so it costs 0.4455 × $9.80 = $4.37 per linear meter. Your cost sheet must store the price with its unit of measure and do the conversion explicitly, or you will one day multiply kilograms by yards and ship a season at the wrong price.

Trims, labels and packaging

Trims are the functional non-fabric components: zips, buttons, thread, elastic, drawcords, rivets, interlining (the stiffening layer fused inside a waistband or collar), pocketing. Labels are the branding and legal components: the woven brand label, the care and fiber-content label, the size label, the hangtag.

In the United States the Federal Trade Commission's textile rules require that label to show the fiber content, the country of origin, and the identity of the company responsible for the garment. You can print your full registered company name, or use the short RN number — a Registered Identification Number the FTC issues free of charge for exactly that purpose. Packaging is the polybag, tissue, and a share of the master carton.

Individually these are pennies. Collectively on this trouser they come to $1.29, which is nearly a fifth of the fabric cost. Two traps hide here.

First, minimum order quantities: a custom woven label might cost $0.07 at 10,000 pieces and $0.19 at 1,000, so trim costs are quantity-dependent in a way fabric often is not. Second, retailer-specific requirements: one customer wants their own price ticket applied, another wants a specific polybag with a suffocation warning in three languages, a third wants a barcode label in a defined position. Those are real per-unit costs attached to a customer, not to a style.

CMT labor

Labor is quoted from the SAM — standard allowed minutes, the industrial-engineering estimate of how many minutes of sewing-machine time one garment needs at a defined pace, including allowances for fatigue and machine handling. A simple T-shirt usually runs 5–12 SAM depending on how it is finished; this trouser, with a fly zip, welt pockets (pockets set into the fabric with a bound slit rather than patched on top), a fused waistband and topstitching, is 32 SAM. The factory quotes a cost per standard minute that already embeds their line efficiency, their wage bill, their supervision and their downtime.

Line efficiency is the hidden variable. If a factory runs at 65% efficiency, 32 standard minutes actually occupy about 49 minutes of real machine time. A factory quoting you $0.075 per standard minute has done that arithmetic internally. When a factory suddenly raises its per-minute rate mid-season, it is usually because wages went up, or because your order got smaller and the cost of switching a sewing line over to your style is spread across fewer units. Minimum wages in the major sourcing countries are set by government review and move in steps, not smoothly, which is why CMT rates jump rather than drift.

Overhead and factory margin

The last two lines are the factory's. Overhead covers their building, electricity, boilers, quality staff, merchandisers and finance costs, usually quoted as a percentage of materials plus labor — commonly 8–18%, depending on the country and the factory's own structure. Factory margin is their profit, often in the 5–15% range. Both are negotiable, both are opaque, and both vary widely between factories; treat any single number as a starting point for a conversation. A factory that agrees to cut margin on a big program will often claw it back on a small one.

LineDetailQtyUnit costExtended
Shell fabric8 oz cotton twill, 270 gsm, incl. 5% wastage1.70 yd$3.95$6.72
PocketingCotton poplin0.22 yd$1.15$0.25
InterliningFusible waistband interlining0.10 yd$0.90$0.09
Fabric subtotal$7.06
ZipperYKK #3, 15 cm, tape-dyed to match1 pc$0.38$0.38
ButtonShank button, custom engraved1 pc$0.11$0.11
Spare buttonAttached to care label1 pc$0.03$0.03
ThreadAll operations, incl. topstitch1 set$0.22$0.22
Trim subtotal$0.74
Brand labelWoven, center-back waistband1 pc$0.07$0.07
Care labelPrinted satin, fiber content + origin + RN1 pc$0.05$0.05
Size labelWoven1 pc$0.02$0.02
HangtagCard + cotton cord1 set$0.18$0.18
Price ticketRetailer-format ticket, applied at factory1 pc$0.06$0.06
Label subtotal$0.38
PolybagRecycled LDPE with warning print1 pc$0.06$0.06
TissueAcid-free interleaf1 pc$0.02$0.02
Master cartonCarton + tape + label, 20 units per carton1/20$1.80$0.09
Packaging subtotal$0.17
MATERIALS TOTAL$8.35
CMT labor32 SAM at $0.075 per standard minute32 min$0.075$2.40
FinishingGarment wash, dry, press, fold1$0.55$0.55
TestingLab tests per colorway, spread over the order1$0.12$0.12
Conversion subtotal$3.07
Factory overhead12% of materials + conversion ($11.42)12%$1.37
Factory cost$12.79
Factory margin10% of factory cost10%$1.28
FOB HAIPHONGPer unit, 3,600 units, USD$14.07

Reading the finished cost sheet

Read the table as three blocks. The first block is materials — things you could hold in your hand — totalling $8.35, of which fabric is $7.06, or 85%. That is at the high end even for a woven, because a trouser is a trim-light garment: one zip, one button, no lining, no padding. Cost a parka the same way and fabric might be half.

The second block is conversion: turning materials into a garment, $3.07. Together those are $11.42 of genuine physical cost. The third block is the factory's own economics: 12% overhead on top ($1.37) and then 10% margin on the result ($1.28).

Notice the compounding — the margin is charged on a base that already includes the overhead, so a dollar saved in materials saves you $1 × 1.12 × 1.10 = $1.23 at FOB. That multiplier is the reason cost engineering should start at the top of the sheet and work down: every dollar you take out of fabric is worth $1.23 at the bottom, while a penny off a hangtag is worth barely more than a penny.

One practical consequence: ask every factory to quote in this structure, not as a single FOB number. A factory that will only give you one number is a factory you cannot negotiate with, cannot re-cost when cotton moves, and cannot audit when they come back asking for an increase. Make the structured cost sheet a condition of doing business, and store it — the bargaining advantage compounds over seasons.

From FOB to landed cost

What Incoterms actually transfer

Incoterms are published by the International Chamber of Commerce; the current edition is Incoterms® 2020, with eleven rules. They answer three questions: who arranges and pays for transport at each leg, where the risk of loss passes from seller to buyer, and who handles export and import clearance. They do not transfer legal ownership of the goods, and they say nothing about when payment is due. Those are separate contract terms that people constantly confuse with the Incoterm.

TermSeller pays main carriage?Export clearanceImport dutyRisk passesMode
EXWNoBuyerBuyerAt seller's premises, before loadingAny
FCANoSellerBuyerOn handover to buyer's carrierAny
FASNoSellerBuyerAlongside the vesselSea only
FOBNoSellerBuyerWhen goods are on board the vesselSea only
CFRYes, to destination portSellerBuyerOn board at origin (not at arrival)Sea only
CIFYes, plus minimum insuranceSellerBuyerOn board at originSea only
CPTYes, to named destinationSellerBuyerOn handover to first carrierAny
CIPYes, plus all-risks insuranceSellerBuyerOn handover to first carrierAny
DAPYes, to named placeSellerBuyerAt named place, ready for unloadingAny
DPUYes, and unloadsSellerBuyerAfter unloading at named placeAny
DDPYesSellerSellerAt named place, ready for unloadingAny

Two rows deserve attention. Under CFR and CIF, the seller pays freight all the way to your port but the risk passed back at their port, so if the ship sinks, the goods were yours, even though the seller was paying the freight. That asymmetry surprises people every time.

Under DDP, the seller becomes the importer of record — the party legally responsible to customs for the entry and the duty, and pays the duty themselves. That sounds attractive and is usually a trap for an apparel brand: you lose visibility of the duty you are paying, you cannot claim it back if a tariff is later refunded, you cannot use first-sale valuation (explained later in this chapter), and the seller has every incentive to pad the "duty" line.

FOB or FCA, with you controlling the freight and the customs entry, is the normal arrangement for a brand that wants to manage its own landed cost.

Watch out

People say "FOB" for everything, including air shipments and truck shipments where it is meaningless. If a supplier writes "FOB Shanghai Airport", the contract is ambiguous and the correct term is FCA. Store the Incoterm as a constrained enum plus a named place, and reject the combination of a sea-only term with an air shipment. This is a two-line check that prevents a category of insurance disputes.

Ocean versus air, and what freight actually costs

Ocean container rates are volatile and publicly tracked. Drewry's World Container Index, assessed on 23 July 2026, put the global composite at $4,374 per 40 ft container, with Shanghai–Los Angeles at $5,878 and Shanghai–New York at $7,598.

Those are spot rates, the price for booking a box this week rather than under a long-term contract, and they move every week: the composite fell 4% in the week of that reading, Shanghai–Los Angeles fell 6%, and Shanghai–New York fell 4%. Treat the figures as a snapshot as of July 2026. If you have a contract rate with a carrier you will pay something different, but the index tells you which way the wind is blowing and whether your forwarder's quote is sane.

Air freight is charged on chargeable weight, which is the greater of actual weight and volumetric weight. Volumetric weight turns the space a shipment occupies into a notional weight; for air the standard conversion is volume in cubic centimeters divided by 6,000. Apparel is light and bulky, so volumetric almost always wins, and you pay for air you are not using.

Asia–US air in normal conditions plans at roughly $4–$7 per kilogram plus fuel and security surcharges, spiking well above that in peak season or during a capacity crunch; treat those as planning ranges, not quotes. For our trouser, a carton of 20 units at 0.075 CBM (cubic meters — the volume the carton occupies) gives 12.5 kg volumetric against about 9.3 kg actual, so you pay on 0.625 kg per unit — roughly $3.44 per trouser at $5.50/kg, against about $0.61 by sea.

Air freight is a margin decision disguised as a logistics decision, and your ERP should be able to show you the landed cost both ways before someone books it.

Allocating a container across styles

Freight arrives as one invoice for one container holding several styles. Splitting it is where most homegrown costing spreadsheets go wrong.

ALLOCATING ONE 40' HIGH-CUBE CONTAINER, HAIPHONG -> LOS ANGELES
----------------------------------------------------------------------
Container cost stack (everything except duty and government fees)
  Ocean freight incl. bunker surcharge                    $ 5,950
  Origin THC, export docs, drayage to load port           $   520
  Destination THC, chassis, pier pass, ISF filing         $   610
  Drayage port -> 3PL warehouse, Vernon CA                $   650
  Customs brokerage entry fee + single-entry bond         $   185
  Devanning and receipt into the 3PL                      $   480
  TOTAL TO ALLOCATE                                       $ 8,395

Contents
  Style    Units   Ctns  CBM/ctn     CBM     FOB value
  W2601    3,600    180    0.075   13.50   $  50,652
  W2604    2,400    240    0.105   25.20   $  68,160
  K2610    8,400    210    0.062   13.02   $  57,540
  TOTAL   14,400    630            51.72   $ 176,352

Method A - allocate by volume (CBM)
  W2601  13.50/51.72 = 26.102%  -> $2,191.27 / 3,600 = $0.6087
  W2604  25.20/51.72 = 48.724%  -> $4,090.37 / 2,400 = $1.7043
  K2610  13.02/51.72 = 25.174%  -> $2,113.36 / 8,400 = $0.2516

Method B - allocate by FOB value
  W2601  50,652/176,352 = 28.722% -> $2,411.22 /3,600 = $0.6698
  W2604  68,160/176,352 = 38.650% -> $3,244.67 /2,400 = $1.3519
  K2610  57,540/176,352 = 32.628% -> $2,739.11 /8,400 = $0.3261

Both methods add back to exactly $8,395.00 after rounding.

Same container. Same money. Different answer per style:
  W2601  +10.0%      W2604  -20.7%      K2610  +29.6%
----------------------------------------------------------------------

Start at the top: a single container generates six separate invoices from four different vendors, totalling $8,395 that has to end up inside inventory cost. Some vocabulary from those lines:

  • A bunker surcharge is the carrier's fuel adjustment.
  • THC is the terminal handling charge, the port's fee for moving the box.
  • Drayage is the short truck leg between port and warehouse.
  • ISF is the Importer Security Filing, the advance data filing US Customs requires before your container is loaded overseas.
  • A single-entry bond is a one-off guarantee, bought from a surety company, that you will pay whatever duty turns out to be owed.
  • A 3PL is a third-party logistics provider — the outside company that stores your stock and ships your orders.
  • Devanning is unloading the container by hand at that warehouse.

Now look at the contents: three styles with wildly different unit economics — the jacket is bulky and expensive, the knit top is compact and cheap. Method A splits the money by the space each style occupied, which is what you actually bought from the shipping line. Method B splits it by dollar value, which is what accountants often reach for because the numbers are already in the system.

The bottom three lines are the punchline: choosing Method B instead of Method A makes the knit top look 29.6% more expensive to freight and the jacket 20.7% cheaper, purely by choice of denominator.

Volume is the defensible basis for ocean freight because volume is what fills a container; weight is the defensible basis for air. Whichever you pick, pick it deliberately, store it as a field, and never let two shipments in the same season use different bases without a reason.

Core principle

Every allocation must reconcile to the penny. Allocate with full precision, round at the end, and designate one line as the rounding sink that absorbs the difference. An allocation that does not sum back to the invoice total will produce an inventory balance that never ties to the general ledger, the master record of every accounting entry the business makes, and you will spend a quarter looking for eleven cents.

The full FOB-to-landed calculation

FOB -> LANDED COST PER UNIT - Style W2601, 3,600 units
Origin Vietnam. HTS 6204.62.80, women's trousers, of cotton.
Customs entry filed 15 June 2026. The duty stack below is the one
that applied on that date; see the tariff section for why it moved.
----------------------------------------------------------------------
FOB Haiphong (from the cost sheet)                        $ 14.0700
  + Ocean freight and port charges, allocated by CBM      $  0.6087
  + Marine cargo insurance (0.35% of CIF x 110%)          $  0.0565
  = CIF Los Angeles                                       $ 14.7352

Dutiable (entered) value = price paid to the seller       $ 14.0700
  Column 1 General (MFN) rate, 6204.62.80       16.6%     $  2.3356
  Section 122 global import surcharge           10.0%     $  1.4070
  ------------------------------------------------------------------
  Total ad valorem duty                         26.6%     $  3.7426
  Merchandise Processing Fee, 0.3464% (min/max apply)     $  0.0487
  Harbor Maintenance Fee, 0.125% (ocean only)             $  0.0176
  Cotton research and promotion assessment (illustrative) $  0.0100
  Customs brokerage entry fee            (already in the freight stack)

  + Third-party AQL inspection, $350 / 3,600 units        $  0.0972
----------------------------------------------------------------------
LANDED COST PER UNIT                                      $ 18.6513
----------------------------------------------------------------------
Landed cost as an uplift on FOB                              32.6%
Duty and fees alone, as a share of FOB                       27.1%
----------------------------------------------------------------------

Follow the two columns. The first section builds CIF — the physical cost of getting the goods to the US port, $14.74. The second section is customs, and the important point is that customs does not charge duty on that CIF figure. The United States appraises imports on transaction value, which is the price actually paid or payable to the seller, so international freight and insurance are excluded when they are separately identified on the paperwork. That is why duty is charged on $14.07, the entered value, and not on $14.74. Ad valorem means "charged as a percentage of value".

The government fees on an entry

Then come the government fees. The Merchandise Processing Fee is 0.3464% of entered value, subject to a minimum of $33.58 and a maximum of $651.50 on formal entries (figures from CBP's user fee table, checked in July 2026; CBP adjusts them for inflation by Federal Register notice).

Those limits apply per customs entry, not per style, so before you spread the fee across units you have to compute it on the whole entry: this container's entered value of $176,352 produces an MPF of $610.88, comfortably under the cap, so a straight per-unit share is valid.

The Harbor Maintenance Fee is 0.125% of entered value and applies to ocean arrivals but not to air. There is also a cotton research and promotion assessment on cotton-content goods, collected under 7 CFR part 1205 at rates set per kilogram of cotton content; the cent shown above is a placeholder, and your broker can give you the real figure for your HTS line.

Finally the AQL inspection: AQL, or Acceptance Quality Limit, is the statistical rule that says how many faults in a sampled batch mean you reject the whole shipment, and paying a third party to run that check is genuinely part of bringing the goods into saleable condition.

The result is $18.65, which is 32.6% above FOB. Duty and fees are 27.1% of FOB on their own — more than five times the freight and insurance combined. For US apparel importers in 2026, customs is the single largest cost line after the garment itself.

The same unit, six weeks later

That entry was filed in June 2026. The legal basis for the 10% component expired on 24 July 2026 and a different program replaced it at a higher rate for Vietnam, so here is the same unit entered a few weeks later.

THE SAME UNIT, ENTERED ON 1 AUGUST 2026
----------------------------------------------------------------------
  Column 1 General (MFN) rate, 6204.62.80       16.6%     $  2.3356
  Section 301 forced-labour tariff, Vietnam     12.5%     $  1.7588
  ------------------------------------------------------------------
  Total ad valorem duty                         29.1%     $  4.0944
  Every other line on the entry is unchanged
----------------------------------------------------------------------
LANDED COST PER UNIT                                      $ 19.0031
----------------------------------------------------------------------
Landed cost as an uplift on FOB                              35.1%
Margin at the same $42.00 wholesale price                    54.8%
----------------------------------------------------------------------

Nothing physical changed. The garment, the factory, the container and the freight bill are identical. One tariff program lapsed and another began, and landed cost rose by 35 cents a unit — $1,266 on this order, and about 0.8 of a margin point on every trouser sold at $42.

That is the whole argument for the effective-dated duty model later in this chapter. The rest of the worked examples here keep using the June figure of $18.65 so the arithmetic stays traceable from one section to the next; when you build your own, use the rate in force on the day the entry is filed.

Duty, classification and the 2026 tariff landscape

What an HTS code is

The Harmonized System is a global product-classification scheme maintained by the World Customs Organization. The first six digits are the same in every country; the United States extends them to ten in the Harmonized Tariff Schedule of the United States (HTSUS), published by the US International Trade Commission. Chapters 61 and 62 are apparel: 61 for knitted or crocheted garments, 62 for woven. Within those, the code is driven by garment type, gender, fiber content by weight, and sometimes construction details.

Reading 6204.62.80: chapter 62 (woven apparel), heading 04 (women's suits, jackets, dresses, skirts and trousers), subheading 62 (trousers of cotton), then US-specific digits narrowing to "other". The statistical suffix at the end (for example 6204.62.80.11) does not change the duty but does drive trade statistics and quota category reporting.

Two column names matter. The Column 1 General rate is the normal rate for countries the US trades with on ordinary terms — what economists call most-favored-nation, or MFN, treatment. The Special column lists the free trade agreements and preference programs under which the same garment can enter at a lower rate or free.

Why apparel duty is unusually high and unusually variable

Most manufactured goods entering the US carry low single-digit duty. Apparel does not, for historical reasons rooted in decades of textile protection. Rates are high, they differ sharply between near-identical garments, and the difference usually hangs on fiber content. Every rate in the table below was read directly from the current HTSUS in July 2026.

HTSGarmentColumn 1 General rate
6109.10.00T-shirts, singlets, tank tops, knitted, of cotton16.5%
6109.90.10The same T-shirt, of man-made fibers32%
6110.20.20Sweaters and pullovers, knitted, of cotton16.5%
6110.30.30The same sweater, of man-made fibers32%
6110.30.20That man-made-fiber sweater, 30% or more silk by weight6.3%
6110.30.10That man-made-fiber sweater, 25% or more leather6%
6110.11.00Sweaters and pullovers, of wool16%
6205.20.20Men's woven shirts, of cotton19.7%
6206.30.30Women's woven blouses, of cotton15.4%
6204.62.80Women's woven trousers, of cotton16.6%
6204.63.90Women's woven trousers, of synthetic fibers28.6%
6204.63.75The same synthetic trousers, water resistant7.1%
6203.43.09Men's synthetic trousers, 36%+ wool49.6¢/kg + 19.7%
6202.30.50Women's woven coats and anoraks, of cotton8.9%
6204.49.10Women's woven dresses, 70%+ silk6.9%
6117.10.20Knitted shawls and scarves, man-made fibers11.3%

Four things jump out:

  • First, the fiber swing: one sweater shape pays 6% when a quarter of it is leather, 6.3% when a third is silk, 16% in wool, 16.5% in cotton, and 32% in plain polyester — a 26-point spread.
  • Second, gender: a men's cotton woven shirt pays 19.7% while a women's cotton woven blouse pays 15.4%.
  • Third, construction details matter enormously — making a synthetic trouser water resistant moves it from 28.6% to 7.1%, a 21.5-point saving, which is precisely why US Customs publishes a dedicated informed compliance guide on coated and water-resistant apparel.
  • Fourth, some lines are compound: men's wool-blend synthetic trousers pay 49.6 cents per kilogram plus 19.7% of value, so your duty engine has to handle percentages, per-kilogram amounts and combinations of the two.

Classification as a cost lever

Because rates vary so much, classification is a genuine design decision rather than a back-office formality. Changing a garment's real construction or fiber content so that it correctly falls in a lower-duty line is called tariff engineering, and it is legal and long established. Declaring a code that does not match the garment you actually shipped is fraud. The line between them is simple: the goods as imported must genuinely be what the code describes.

The threshold that catches people is chief weight. Many apparel headings are decided by which fiber makes up the greatest share of the garment's weight, so a blend that crosses 50% flips the whole classification.

A $0.38 FOB SAVING THAT COSTS $1.20
Comparing the MFN component only; any surcharge in force applies
to both options and roughly cancels out.
----------------------------------------------------------------------
Option A   100% cotton twill        -> HTS 6204.62.80  duty 16.6%
  Fabric 1.70 yd @ $3.95 = $6.72
  Materials 8.35 + conversion 3.07 = 11.42
  x 1.12 overhead = 12.79   x 1.10 margin = FOB  $14.07
  Duty  14.07 x 16.6%                          = $ 2.34

Option B   62% polyester / 38% cotton twill
           chief weight is now synthetic
                                    -> HTS 6204.63.90  duty 28.6%
  Fabric 1.70 yd @ $3.77 = $6.41
  Materials 8.04 + conversion 3.07 = 11.11
  x 1.12 overhead = 12.44   x 1.10 margin = FOB  $13.69
  Duty  13.69 x 28.6%                          = $ 3.92

  FOB saving from the cheaper fabric              -$0.38
  Extra duty from the higher rate                 +$1.58
  NET DAMAGE PER UNIT                             +$1.20
  On 3,600 units                                +$4,320
----------------------------------------------------------------------

This is the single most common self-inflicted margin wound in apparel sourcing. A designer or a merchandiser swaps to a cheaper blend to hit a cost target. The FOB price genuinely falls by $0.38 per unit and everyone signs off.

But crossing the 50%-by-weight threshold moved the garment from the cotton trouser line at 16.6% to the synthetic trouser line at 28.6%, and the extra duty of $1.58 more than wipes out the saving. Net damage is $1.20 a unit, $4,320 on this order, and nobody notices until the customs entry posts three months later.

The fix is structural: your ERP must recompute the HTS classification, or at minimum flag it for review, whenever the fiber-content percentages on a style change, and it must show duty inside the costing screen rather than only at goods receipt.

First sale valuation

When goods pass through a middleman, a trading company or a buying agent that buys from the factory and sells to you, there are two sales. First sale valuation lets you base duty on the lower factory-to-middleman price rather than the higher middleman-to-you price, provided the first sale was a bona fide sale, clearly destined for export to the United States, and conducted at arm's length. "At arm's length" means the two companies negotiated as genuinely independent businesses, with the price not shaded by common ownership or control.

The doctrine comes out of US federal court decisions in the late 1980s and early 1990s and survived a Congressional review in 2008. Customs brokers and trade counsel implement it routinely; US Customs publishes an informed compliance guide, "Bona Fide Sales & Sales for Exportation to the United States", covering the requirements.

The saving is real. If the factory sells at $12.50 and the agent invoices you at $14.07, duty at 26.6% is charged on the lower figure, so it falls from $3.74 to $3.33 — $0.42 a unit, about 2.2% of landed cost, for no change in the physical product.

The catch is documentation: you must be able to produce the factory's invoice, proof of payment, and evidence that the sale was genuinely at arm's length, for every entry, for five years. A spreadsheet will not survive that, so it becomes an ERP requirement. Store the first-sale price as a distinct field alongside the invoice price, and never let them collapse into one column.

De minimis and what changed

For years, shipments valued under $800 entered the United States duty-free and with minimal paperwork under the de minimis provision, Section 321 of the Tariff Act of 1930. That is what let overseas fast-fashion sellers ship individual parcels straight to American consumers without paying the 16–32% duty a domestic wholesaler pays on the same garment.

Executive Order 14324, signed on 30 July 2025, suspended duty-free de minimis treatment for all countries with effect from 12:01 a.m. EDT on 29 August 2025. Shipments now attract applicable duties, taxes and fees regardless of value.

International postal shipments got a temporary alternative: for six months from that date, carriers could opt to pay a flat fee per package of $80, $160 or $200, banded by the origin country's effective tariff rate (under 16%, 16 to 25% inclusive, or above 25%), after which all postal shipments moved to standard percentage-of-value treatment. A further executive order signed on 20 February 2026 continued the suspension, which remains in force as of July 2026.

For a wholesale brand there are two consequences, pointing in opposite directions. It removes a large structural cost advantage your direct-from-Asia competitors enjoyed. It also means that if you ship samples, replacements or small direct-to-consumer parcels from an overseas warehouse, those now carry duty and formal entry costs you previously ignored. Your ERP needs to be able to cost a small parcel the same way it costs a container.

The 2025–2026 tariff whiplash, and how to model it

The past eighteen months have been the most volatile tariff period in modern apparel history. The sequence matters because it teaches you the shape of the problem rather than a set of rates that will be stale by the time you read this.

WHAT ACTUALLY HAPPENED, AND WHY YOUR SCHEMA MUST HANDLE IT
----------------------------------------------------------------------
2025-08-29  Duty-free de minimis suspended for all countries
            (Executive Order 14324, signed 2025-07-30, effective
            12:01 a.m. EDT).  For six months, postal carriers
            could instead pay a flat $80, $160 or $200 per
            package, banded by the origin country's effective
            tariff rate: under 16%, 16-25%, above 25%.

2026-02-20  US Supreme Court, 6-3, holds that the International
            Emergency Economic Powers Act does not authorise the
            President to impose tariffs (Learning Resources,
            Inc. v. Trump, No. 24-1287, argued together with
            Trump v. V.O.S. Selections).  An executive order
            terminates all IEEPA tariff actions.  A second order
            the same day continues the de minimis suspension.

2026-02-24  CBP stops collecting IEEPA duties.  A 10% surcharge
            on almost all imports is imposed under Section 122
            of the Trade Act of 1974 instead, effective 12:01
            a.m. EST.  Section 122 is capped by statute at 15%
            and at 150 days.  Carve-outs for Section 232 goods,
            USMCA-qualifying goods, and textile and apparel
            articles entering duty-free under DR-CAFTA.

2026-07-24  The Section 122 surcharge expires on schedule at
            12:01 a.m. EDT, 150 days after it began, still at
            10%.  The same morning, Section 301 forced-labour
            tariffs take effect: 10% for 17 economies, 12.5%
            for 36 more, and rates pegged to the MFN rate for
            the EU, Japan, South Korea, Switzerland and Taiwan.
            60 economies, 99.4% of all US imports.  Vietnam and
            China are both at 12.5%.  USMCA-qualifying Canadian
            and Mexican goods, and DR-CAFTA duty-free textiles
            and apparel, are exempt.  Tariff-rate quotas are to
            follow for some apparel from Bangladesh, Cambodia,
            Indonesia and Malaysia.

2026-08-19  Section 338 tariffs on Canada take effect at 50% on
            about $20bn of goods (three proclamations issued
            2026-07-20).  The headline targets are vehicles,
            dairy and alcohol, but the annexes reach much wider
            and include textiles and apparel.  The tariff
            applies regardless of USMCA origin and stacks on
            everything else.  Not yet in force at the time of
            writing.

Refunds     The Court of International Trade is overseeing
            refunds of the invalidated IEEPA duties, and CBP is
            building a claims process inside its ACE system.
            Trade counsel advise protesting liquidations within
            180 days, and suing at the CIT for entries that
            have already finally liquidated.
----------------------------------------------------------------------

Read that timeline as a specification. Inside a year the legal basis for the largest variable component of apparel duty changed twice: an emergency program struck down by the Supreme Court and unwound, a replacement with a hard statutory expiry, and a successor that started the same morning the old one ended, at a different rate for most countries. Any system that stored a duty rate as a number on a product record was wrong within weeks, repeatedly.

What survives all that churn is the shape: duty is a set of independent, effective-dated rules, each with its own legal authority, its own scope (an HTS prefix and possibly an origin country), its own rate type, and its own stacking position. Model the shape and the rate changes become data entry.

MODELLING THE DUTY STACK AS DATA
(Rates illustrative; the point is the shape.)
----------------------------------------------------------------------
duty_rule rows relevant to one entry line
 hts_prefix  origin  program      rate     basis     valid from -> to
 ----------  ------  -----------  -------  --------  ----------------
 6204.62.80  *       MFN_COL1      16.6%   entered   long-standing
 6204.62     CN      SEC301_L4A     7.5%   entered   2019-09 ->
 62          *       SEC122        10.0%   entered   2026-02-24 ->
                                                     2026-07-24
 62          VN      SEC301_FL     12.5%   entered   2026-07-24 ->
 62          CN      SEC301_FL     12.5%   entered   2026-07-24 ->
 62          CA      SEC338        50.0%   entered   2026-08-19 ->
 *           *       MPF         0.3464%   entered   min/max apply
 *           *       HMF           0.125%  entered   ocean arrivals

Resolving a rate becomes a query over these rows:

 Entry 2026-06-15, Vietnam   16.6 + 10.0 (Sec 122)         = 26.6%
 Entry 2026-08-01, Vietnam   16.6 + 12.5 (301 forced lab.) = 29.1%
 Entry 2026-08-01, China     16.6 +  7.5 + 12.5            = 36.6%
 Entry 2026-08-20, Canada     0.0 free under USMCA and
                              exempt from the 301, but
                              Section 338 applies anyway   = 50.0%
----------------------------------------------------------------------

Each row is one legal instrument. hts_prefix can be as specific as a ten-digit line or as broad as a chapter, and the most specific matching row wins within a program. origin is the country of origin, which for apparel is determined by where the garment was assembled, not where the fabric came from. valid from/to is a date range, which is what makes the Section 122 expiry a data fact rather than a code change.

The four worked resolutions show why this matters. The same Vietnamese trouser paid 26.6% on 15 June and 29.1% on 1 August, and the increase had nothing to do with the garment, the factory or the price: one program lapsed and a different one, at a different rate, replaced it. Hardcode "26.6%" and you are wrong from the morning of 24 July onwards.

The Canadian line is the nastiest case: a USMCA-originating garment that enters free under the trade agreement and is exempt from the forced-labor tariff still picks up a 50% Section 338 tariff that overrides the agreement entirely.

Two cautions on the forced-labor rows. The rate depends on which list a country falls into — 17 economies at 10%, 36 at 12.5%, and a handful with rates calculated against their existing MFN rate, and those lists change, so resolve the country against the current notice rather than trusting a value typed in months ago. And whether two programs stack on the same entry is itself a rule your table has to record explicitly, because code that assumes an answer will be wrong for some origin sooner or later.

Watch out

When a tariff program is struck down, importers may become entitled to refunds, which is exactly what followed the February 2026 ruling on the emergency tariffs. Getting the money back is procedural: you generally have to protest each entry's liquidation (the point at which Customs finalizes what was owed) within the statutory window, or sue at the Court of International Trade for entries that have already finally liquidated. A live claim creates an asset, a duty refund receivable, and a genuinely hard accounting question about whether it reduces the cost of inventory you still hold or is income in the current period. Your ERP needs the entry-level detail to compute the claim at all: entry number, entry date, liquidation date, HTS line, entered value, and which program each duty dollar was paid under. If you only stored a total duty amount per shipment, you cannot file.

Free trade agreements and preference programs

Preference programs can take apparel duty to zero, but apparel has the strictest rules of origin of any product category. The dominant rule is yarn forward: to qualify, the yarn must be spun in a member country, the fabric woven or knitted in a member country, and the garment cut and sewn in a member country. Buying Chinese fabric and sewing it in a preference country does not qualify. This is why sourcing decisions and costing decisions cannot be made separately — a factory quoting $0.40 less per unit is worthless if using them costs you a 16.6% duty exemption.

The programs that matter most for US apparel importers are USMCA (Canada and Mexico), CAFTA-DR (Central America and the Dominican Republic), AGOA (sub-Saharan Africa, whose statutory authorization ran to 2025 and whose renewal has been an open question since — confirm the current position with your broker before you build a costing on it), and a set of bilateral agreements whose eligibility codes appear directly in the HTSUS "Special" column.

On our trouser line, that column reads "Free (AU, BH, CL, CO, IL, JO, KR, MA, OM, P, PA, PE, S, SG)" — those two-letter codes are the qualifying agreements. Note in the 2026 timeline that even the emergency tariff programs carved out USMCA-qualifying goods and DR-CAFTA textiles and apparel. When general tariffs rise, a preference you already qualify for gets more valuable, because the duty it saves you is bigger.

Margin math done properly

MARKUP vs MARGIN - the same $42 trouser, two ways to say it
----------------------------------------------------------------------
  Cost (landed)                C = 18.65
  Selling price (wholesale)    P = 42.00
  Gross profit                 G = P - C = 23.35

MARGIN - profit as a share of the SELLING price
  margin%  = G / P = 23.35 / 42.00 = 0.5560  ->  55.6%

MARKUP - profit as a share of the COST
  markup%  = G / C = 23.35 / 18.65 = 1.2520  -> 125.2%
  multiple = P / C = 42.00 / 18.65 = 2.252x

PRICE FROM A TARGET MARGIN
  P = C / (1 - margin%)
  P = 18.65 / (1 - 0.55) = 18.65 / 0.45 = $41.44

PRICE FROM A TARGET MARKUP
  P = C x (1 + markup%)
  P = 18.65 x (1 + 1.25)                  = $41.96

CONVERTING BETWEEN THEM
  margin% = markup% / (1 + markup%)
  markup% = margin% / (1 - margin%)

THE MISTAKE
  "We need 55%" priced as a margin       ->  $41.44
  "We need 55%" priced as a markup       ->  $28.91
  Same words. $12.53 a unit. $45,108 on this order.
----------------------------------------------------------------------

The top block establishes the three numbers. The middle blocks give you the formulas in both directions, and the one to memorize is P = C / (1 - margin%), because margin is what your finance team, your board and your investors will speak in. Never price by adding a percentage to cost when you mean margin: dividing and multiplying give different answers, and the gap widens fast.

The bottom block shows the cost of the confusion on this one style — someone who hears "55%" and multiplies cost by 1.55 prices the trouser at $28.91 instead of $41.44, and books an order at a 35.5% margin believing it is 55%.

Multiple (P/C)Markup on costMargin on priceWhere you see it
1.50×50%33.3%Off-price / closeout deals
1.82×82%45.0%Thin wholesale, high-volume basics
2.00×100%50.0%"Keystone" — the classic retail rule of thumb
2.22×122%55.0%Healthy wholesale target for a brand
2.50×150%60.0%Strong wholesale, or good direct-to-consumer
3.33×233%70.0%Retail-side margin on a designer garment
4.00×300%75.0%Vertically integrated brand, own stores

Keep this conversion table somewhere your merchandisers can see it. The 2.0× row is keystone, a piece of old retail shorthand meaning simply "double the cost to get the retail price". Doubling the cost produces a 50% margin and a 100% markup, and half the arguments in this industry come from someone quoting the second number when they mean the first.

Two other bits of vocabulary in the right-hand column: off-price means the discount channel, chains that buy leftover stock cheaply and sell it below normal retail, and closeout means clearing the last of a style at whatever it fetches. Every row is the same three facts said three ways, and being fluent in all three is the difference between negotiating and guessing.

Initial markup, maintained margin, and contribution

Three margin concepts sit on top of each other and get confused constantly.

Initial markup (IMU) is the margin implied by the price you first set, before anything goes wrong. On our trouser, $42 against $18.65 landed is a 55.6% initial markup. It is what you intend to achieve, and the rest of this chapter is about the distance between that intention and the outcome.

Maintained margin is what you actually achieved after discounts, allowances, markdowns and deductions. It is always lower than IMU. The gap between the two is the entire subject of the next section, and it varies enormously by channel: a brand selling to boutiques may lose only a few points, while a brand selling to national department stores can lose ten or more at the gross margin line and far more once selling costs are counted. The worked example below loses 8.5 points of gross margin and ends 33 points below the linesheet at contribution.

Contribution margin subtracts the variable costs of servicing the sale: sales commission, factoring fees, pick-and-pack, outbound freight, retailer-specific ticketing. It is the number that answers "should we take this order?" A customer that pays list price but demands its own ticketing, drop-ships to fifty stores, and takes 90-day terms can have a worse contribution margin than a discounter that takes one bulk delivery. Two terms there: a door is one individual store location, so "fifty doors" means fifty shops; and to drop-ship is to send goods straight to each of those shops instead of to one central warehouse, which multiplies your shipping and admin cost.

Benchmark margins from public filings

For calibration, here are audited gross margins from apparel companies' own Form 10-K filings, for the most recent full fiscal year reported as of July 2026:

  • G-III Apparel Group, whose business is predominantly wholesale, reported 39.4% for the year ended 31 January 2026, against 40.8% the prior year.
  • PVH reported 57.5% for the year ended 1 February 2026.
  • Oxford Industries 60.7% for the year ended 31 January 2026.
  • Levi Strauss 61.7% for the year ended 30 November 2025.
  • And Ralph Lauren, with a heavy direct-to-consumer mix, 69.9% for the year ended 28 March 2026.

The spread from 39% to 70% is almost entirely channel mix. A pure wholesale brand that models itself on a 65% gross margin is modeling a different business.

Price architecture

Pricing runs backwards from two constraints at once: your required margin and the retailer's required margin. Both have to be satisfied by the same garment.

PRICING W2601 FROM BOTH ENDS
----------------------------------------------------------------------
FROM YOUR SIDE
  Landed cost                                          $18.65
  Target wholesale gross margin                          55%
  Required wholesale price 18.65 / 0.45              =  $41.44
  Set at a clean price point                         =  $42.00
  Actual margin (42.00 - 18.65) / 42.00              =   55.6%

FROM THE RETAILER'S SIDE
  You propose MSRP                                      $98.00
  Retailer's initial markup (98 - 42) / 98            =   57.1%
  Retailer's multiple 98 / 42                         =   2.33x

  A department store demanding 60% IMU at $98 retail
  will only pay 98 x (1 - 0.60)                       =  $39.20
  Your margin at $39.20  (39.20 - 18.65) / 39.20      =   52.4%

  A specialty boutique happy with 55% IMU at $105
  will pay 105 x (1 - 0.55)                           =  $47.25
  Your margin at $47.25                               =   60.5%
----------------------------------------------------------------------

The top block is straightforward: divide landed cost by one minus your target margin, then round up to a price point customers recognize.

The bottom block is the negotiation. The buyer does not care about your cost; they arrive with a required initial markup handed down by their planning department and they solve for your wholesale price. A retailer demanding 60% IMU at a $98 retail price is telling you your wholesale price is $39.20 whether you like it or not. Your only moves at that point are to raise the MSRP, cut the cost, or decline.

Notice that the same garment supports a 52.4% margin at a department store and a 60.5% margin at a boutique, which is exactly why channel mix explains the 39%-to-70% spread in the audited numbers above.

Laddering the line

Individual styles do not get priced in isolation. A linesheet is the document you sell from — one page per style with a photo, the colors, the sizes, the wholesale price and the suggested retail price, and the collection on it has a price ladder: a deliberate spread of price points that gives a buyer an entry, a middle and a top. The margins across that ladder should be consistent enough that the mix does not sink you.

PRICE LADDER - Autumn 2026 women's bottoms
----------------------------------------------------------------------
Style   Description             Landed    WSP    GM%    MSRP   Mult
----------------------------------------------------------------------
K2612   Jersey lounge pant      $ 9.20   $ 22   58.2%   $ 55   2.50x
W2601   Kestrel twill wide-leg  $18.65   $ 42   55.6%   $ 98   2.33x
W2603   Pleated crepe trouser   $24.10   $ 54   55.4%   $125   2.31x
W2607   Wool-blend tailored     $38.40   $ 88   56.4%   $210   2.39x
W2609   Leather straight leg    $96.00   $215   55.3%   $495   2.30x
----------------------------------------------------------------------
Ladder ratio, entry to top:  22 -> 215, roughly 10x
Margin band across the ladder:  55.3% to 58.2%, spread 2.9 pts
----------------------------------------------------------------------

Five styles, ten-times price range, and margins that sit inside a three-point band. That band is the point. If the lounge pant carried a 62% margin and the leather trouser 44%, then every season where the leather sells better than planned would quietly destroy your blended margin even as revenue rose.

Hold that band and a swing in mix moves your revenue without moving your blended margin rate. Note also that the retail multiple drifts down as price rises — retailers accept a thinner multiple on expensive items because the absolute dollars are larger. Your ERP should compute and display this table live, because a merchandiser tweaking one cost or one price should see the whole ladder move.

When the target margin is missed

It will be. Here is the ordered list of levers, cheapest to most damaging:

  1. Re-engineer the garment. Reduce SAM by simplifying construction — a bar tack (a dense cluster of stitches that reinforces a stress point) instead of a metal rivet, a plain single-needle seam instead of a felled seam that is folded and stitched twice. Improve marker efficiency by half a percent. Drop a lining you do not need. Remember the 1.23× multiplier: a dollar out of materials is $1.23 off FOB.
  2. Renegotiate quantity. Consolidate colorways to hit fabric minimums and get a better mill price. Combine two styles onto one fabric to move the order into a higher price band.
  3. Check the classification. Before you accept a cost, confirm the HTS code and check whether a small, genuine construction change puts you in a materially lower duty line. The water-resistant trouser example is a 21.5-point swing.
  4. Change origin. A preference-eligible country can be worth more than a cheaper factory. Model it as landed cost, never as FOB.
  5. Raise the MSRP. Sometimes the answer is that the garment is worth more than you assumed. This is the only lever that improves both your margin and the retailer's.
  6. Accept a lower margin deliberately, with a rule. Some styles are there to open a door or complete a story. Fine, but the system should require a documented approval and should report the blended margin including the exception, not average it out of sight.
  7. Kill the style. The most under-used lever in the industry. A style that cannot hit margin will not improve after it ships; it will get worse, because it will be the one that gets marked down.
Core principle

Margin is decided at costing, not at selling. By the time a garment is in a warehouse, every remaining decision only subtracts. Build your ERP so that the margin calculation is visible and enforced at the moment a cost sheet is confirmed and a price is set, rather than surfacing in a report someone reads in month four.

Margin erosion: the full catalog

First-time founders are rarely warned about this part. The margin printed on your linesheet is a starting point, and the number that reaches your bank account is much smaller. Between the price a buyer agrees to and the cash in your account sit a dozen documented, contractual, entirely normal deductions.

ErosionWhat it isTypical wholesale range
Terms / settlement discountA percentage off for paying early, e.g. "8/10 EOM" — 8% off if paid by the 10th of the month following. Common in apparel and much richer than the 2/10 net 30 (2% off for paying within 10 days, otherwise the full amount in 30) of other industries.2–8% of invoice
Co-op advertisingA fund the retailer draws on to advertise your brand. Contractual, often taken whether or not the advertising happened.1–5% of net
Markdown money / margin supportCash you pay the retailer after the season to compensate them for marking your goods down. Negotiated after the fact, and the biggest single line for many brands.0–15% of net
Compliance chargebacksFees for breaching the retailer's routing guide — the rulebook telling you exactly how to label, pack, book and deliver. Wrong carton label, missing advance ship notice, late delivery, wrong hanger, wrong ticket, shipping to the wrong door.0.5–5% of net
Shortage and pricing claimsThe retailer says fewer units arrived than invoiced, or that the price differs from the purchase order. Frequently a scanning error at their end, always your job to prove.0.3–2% of net
Returns and RTVReturn to vendor: damaged, defective or simply unsold goods sent back under a contractual right.1–5% of net
Freight allowanceYou agree to pay the inbound freight to their distribution center, or they deduct a flat percentage in lieu.1–3% of net
SamplesSalesman sample sets, showroom sets, press samples, fit samples. Real garments at full cost, mostly never sold.1–4% of net
Your own markdownsUnsold inventory you clear yourself at 30–70% off wholesale.Highly variable

The ranges are ranges because this genuinely varies by channel, by customer and by how badly the season went; treat them as orders of magnitude to plan against rather than figures to budget to the decimal. A brand selling to specialty boutiques may see almost none of the middle rows; a brand selling to national department stores will see all of them, every season, and will negotiate the markdown-money line in a meeting where the buyer holds most of the cards.

Two deadlines drive the chargeback rows and you should learn both: the cancel date is the date after which the retailer may refuse the order outright, and many retailers also set a must arrive by date, a single day by which goods have to reach the warehouse — arrive early and you can be refused just as surely as arriving late.

The big chains publish the rules on their vendor portals; Macy's, for example, distributes its vendor standards, routing guides and compliance materials through MacysNet. Those documents define the chargeable offenses in exhaustive detail. Read your customers' guides before you ship.

A season waterfall, booked to contribution

SEASON WATERFALL - Style W2601, Autumn 2026
Booked 3,600 units at $42.00 wholesale
Rates below SHIPPED AT LIST apply to shipped-at-list dollars.
Lines in CAPITALS show the running total as a % of booked.
----------------------------------------------------------------------
                                          %          $        Running
----------------------------------------------------------------------
Gross wholesale booked                100.0%   151,200       151,200
  Cancellations, late-delivery cuts    -6.0%    -9,072       142,128
SHIPPED AT LIST                        94.0%                 142,128
  Terms discount 8/10 EOM, taken
    on 55% of the dollars              -4.4%    -6,254       135,874
  Co-op advertising fund               -2.0%    -2,843       133,031
  Markdown money / margin support      -5.0%    -7,106       125,925
  Compliance chargebacks               -1.5%    -2,132       123,793
  Returns and RTV                      -2.0%    -2,843       120,950
  Freight allowance                    -1.2%    -1,706       119,244
NET SALES                              78.9%                 119,244
  COGS 3,384 units at $18.65 landed            -63,112        56,132
GROSS MARGIN                                                  56,132
    47.1% of net sales / 37.1% of booked
  Sales commission, 8% of net sales             -9,540        46,592
  Factoring commission and interest             -1,615        44,977
  Pick, pack and ticket $1.10 x 3,384           -3,722        41,255
  Outbound freight $0.85 x 3,384                -2,876        38,379
  Salesman sample sets written down             -3,100        35,279
CONTRIBUTION                           23.3%                  35,279
  Clearing the 216 cancelled units
    at $12 against $18.65 cost                  -1,436        33,843
CONTRIBUTION AFTER CLEARANCE           22.4%                  33,843
----------------------------------------------------------------------
Gross margin on the line sheet                        55.6%
Money that actually reached the P&L                   22.4%
----------------------------------------------------------------------

Walk down it. You booked $151,200. Six percent of the order was canceled because two deliveries slipped past their cancel date, so you only shipped $142,128.

Then the deductions start: over half your major customers take the 8% settlement discount, which on 55% of the dollars costs 4.4%; the co-op fund, the markdown support you negotiated in January, the chargebacks for cartons that went to the wrong door, the returns, and the freight allowance. Net sales are $119,244, which is 78.9% of what you booked.

COGS at landed cost leaves a gross margin of 47.1% of net sales, already 8.5 points below the 55.6% on the linesheet. Then the variable costs of selling: commission, the factor's fee, the 3PL's pick-and-pack, outbound freight, and the sample sets you gave to your sales team. Contribution is $35,279.

Finally the 216 canceled units have to go somewhere, and they go off-price at $12 against a cost of $18.65, losing $6.65 each. You end at 22.4% of the number that went into the order book. That is the honest picture of a normal, non-disastrous wholesale season, and it is the single most important report your ERP will ever produce.

What a factor does

One line there needs explaining, because it is standard in apparel and strange to everyone else. A factor is a finance company that buys your invoices. You ship to a retailer, sell the invoice to the factor at a small discount, and get most of the cash immediately instead of in 60 or 90 days. The factor also approves your customers' credit up front, so you know before you ship whether you will be paid.

Two flavors matter. Under non-recourse factoring, the factor absorbs the loss if an approved customer goes bankrupt. Under recourse factoring, the factor takes the money back from you, so the credit risk was never really transferred. Cheaper quotes are usually recourse quotes; store which one you have, because it changes who eats a bad debt.

Watch out

Most of these deductions arrive as unexplained short payments against invoices, often months later and often referencing a purchase order number rather than an invoice number. Reconciling them is a job, and it needs software. Brands that cannot match a deduction to its cause simply write it off, which means they never learn which customer, which door or which carrier is costing them money. Build the deduction workbench early.

Costing when currency and materials move

A cost sheet is a photograph of a moment. Two things underneath it move continuously.

Currency. Most Asian apparel is invoiced in US dollars, which feels like it removes exchange-rate risk for a US brand. What it actually does is push the risk one step upstream, into the factory. The factory's costs are in dong, taka or rupees; when their currency weakens against the dollar their dollar price can fall, and when it strengthens they come back asking for an increase.

So a currency you never trade in still turns up in your cost sheet, one negotiation later. And if you sell in a currency other than the one you buy in — a US brand selling wholesale into Europe, say — you carry the exposure directly, where a 5% move can eat a tenth of your margin.

Practically: store every cost in its transaction currency plus the base-currency equivalent plus the rate and the rate date used. Keep three distinct rate types:

  • the spot rate (today's market rate) for actual settlement,
  • a budget rate locked for the season so plans do not wobble daily,
  • and a hedge rate if you have forward contracts (agreements to buy currency at a fixed rate on a future date).

Report margin at budget rate for planning and at actual rate for accounting, and show the difference between them as its own line, because that variance is not the merchandiser's fault and should not be charged against their performance.

Cotton and commodity moves

Materials. Cotton is a traded commodity. The Cotlook A Index, the standard international benchmark for physical cotton, stood at 90.35 US cents per pound on 24 July 2026, with the forward index at 92.15. USDA's Economic Research Service expects global cotton prices to rebound in 2026/27 to around 90 cents per pound, up from roughly 80 cents in the previous two seasons.

A 10-cent move from that level is about an 11% change in the raw fiber, which flows through to a smaller change in your fabric price, because fiber is only part of what a mill charges for spinning, weaving, dyeing and finishing.

Work the sensitivity through on the Kestrel trouser: a 5% rise in the shell fabric price adds about $0.34 of materials cost, the overhead and factory margin multiplier turns that into roughly $0.41 at FOB, and duty and fees on the higher entered value take it to about $0.53 landed. Against a $42 wholesale price that is about 1.3 points of margin from one commodity.

Re-costing on a schedule

Re-costing is the discipline of refreshing cost sheets on a schedule rather than when someone notices a problem. A workable cadence for a wholesale brand with two main seasons:

RE-COSTING CADENCE
----------------------------------------------------------------------
Development cost      At first prototype. Rough, high wastage
                      assumption, indicative fabric price. Used to
                      decide whether the style is even viable.

Line sheet cost       Before the line sheet is priced and shown.
                      Real marker consumption, quoted trims, factory
                      quote at an assumed order quantity. THIS is the
                      cost that must be right, because the price it
                      produces is the price you will live with.

Order-confirmation    When the order book closes and the real
  re-cost             quantity is known. Requote at actual quantity.
                      Flag any style whose margin has moved more than
                      2 percentage points against the line sheet.

Pre-shipment re-cost  After the factory's final invoice and before
                      the goods ship. Locks the FOB actually paid.

Landed cost actual    At customs entry and 3PL receipt. Freight and
                      duty are now facts. This becomes the inventory
                      cost. Post the difference against the standard.

Triggered re-cost     Any time: a duty rule changes, a currency moves
                      beyond a threshold, a fabric price changes, or
                      a component is substituted.
----------------------------------------------------------------------

Six checkpoints, each with a different level of certainty, and every one of them produces a cost number that is correct for its moment. This is why cost sheets must be versioned rather than edited.

The linesheet cost is the one you priced against and must be preserved forever for margin analysis; the landed actual is the one that goes into inventory and the general ledger. If your system lets someone overwrite the linesheet cost with the actual, you have destroyed your ability to ever answer "did we price this correctly?"

The triggered re-cost at the bottom is what the 2026 tariff timeline demands: when a duty rule's effective date passes, every open cost sheet touching that HTS prefix and origin should be recalculated and flagged.

Inventory valuation and its effect on reported margin

You bought the same trouser twice at different landed costs. When you sell one, which cost did you sell? The answer is a policy choice, and it changes your reported profit without changing anything physical.

SAME PHYSICAL SALES, TWO COST METHODS
----------------------------------------------------------------------
Receipts
  PO-1  February   3,600 units @ $18.65 landed  =  $ 67,140
  PO-2  June       2,000 units @ $21.40 landed  =  $ 42,800
                   (freight rose and a new duty line applied)
  Total            5,600 units                     $109,940

Sales during the season: 4,000 units at $42.00  =  $168,000

FIFO (first in, first out)
  COGS  3,600 x 18.65 + 400 x 21.40            =  $ 75,700
  Ending inventory  1,600 x 21.40              =  $ 34,240
  Gross profit  168,000 - 75,700               =  $ 92,300   54.9%

WEIGHTED AVERAGE COST
  Average unit cost  109,940 / 5,600           =  $ 19.6321
  COGS  4,000 x 19.6321                        =  $ 78,529
  Ending inventory  1,600 x 19.6321            =  $ 31,411
  Gross profit  168,000 - 78,529               =  $ 89,471   53.3%

  Difference in reported gross profit           =  $  2,829
  Difference in balance-sheet inventory         =  $  2,829
  Difference in the physical business           =  none
----------------------------------------------------------------------

Both methods start from the same $109,940 of actual spend and both end with the same 1,600 units on the shelf. FIFO — first in, first out — says the units you sold were the cheap February ones, so COGS is lower and this season's profit is higher, but the leftover stock is carried at the expensive June cost, so the pain is deferred to next season. Weighted average blends everything, smoothing the reported margin.

The two numbers differ by $2,829 in both directions: whatever profit one method adds to this period, it removes from the inventory balance, and vice versa. Neither is more honest; what matters is that you pick one, apply it consistently, and can explain it.

Under IFRS — the International Financial Reporting Standards used across most of the world — standard IAS 2 permits FIFO and weighted average and does not permit LIFO (last in, first out). US GAAP, the American equivalent rulebook, also allows LIFO, which apparel brands rarely use.

Standard cost versus actual cost

Many apparel businesses run a standard cost: a planned landed cost per SKU set at the start of the season and used for all transactions, with the differences from actual cost posted to separate accounts called variance accounts. The advantage is stability — a merchandiser looking at margin today sees the same number they saw yesterday. The requirement is that you actually analyze the variances, and for apparel the useful decomposition is:

  • Purchase price variance (the factory invoiced more or less than the standard FOB),
  • freight variance (the container cost more than planned, or shipped less full),
  • duty variance (the rate changed, or the classification was corrected),
  • and currency variance (the settlement rate differed from the budget rate).

In 2026 the duty variance line is the one that will surprise you. Report it separately from the others, because its cause is government policy rather than anything your sourcing team did or failed to do.

Lower of cost and net realizable value

Inventory cannot be carried above what you can realistically get for it. IAS 2 requires measurement at the lower of cost and net realizable value, defined as "the estimated selling price in the ordinary course of business less the estimated costs of completion and the estimated costs necessary to make the sale". US GAAP under ASC 330 reaches the same place for FIFO and average-cost inventory.

THEN THE MARKET MOVES - lower of cost and net realisable value
----------------------------------------------------------------------
  1,600 units of W2601 remain after the season.
  Best available offer is an off-price buyer at $11.00 a unit.

  Estimated selling price                              $ 11.00
  Costs necessary to make the sale
    pick, pack, ticket removal, outbound freight       $  0.90
  NET REALISABLE VALUE                                 $ 10.10

  Carrying value under FIFO   1,600 x $21.40        =  $34,240
  Required carrying value     1,600 x $10.10        =  $16,160
  WRITE-DOWN TO RECOGNISE THIS PERIOD                  $18,080
----------------------------------------------------------------------
  Under IFRS (IAS 2) this write-down may be reversed if NRV
  later recovers. Under US GAAP the reduced amount becomes the
  new cost basis and is not written back up.
----------------------------------------------------------------------

Be precise about what net realizable value measures: the realistic selling price in the ordinary course of business, less the cost of achieving that sale. The wholesale list price does not qualify, and neither does the price you are hoping someone will eventually pay. Once the only realistic buyer for 1,600 leftover trousers is an off-price chain paying $11, the inventory is worth $10.10 a unit and you must say so this period, not next. The $18,080 hit lands on the profit and loss statement now. The divergence between the two rulebooks at the bottom is genuine and matters if you report under both.

Reserves for aged stock

Waiting until you have an offer in hand is too late. Mature apparel businesses run an aging reserve: a formulaic provision against inventory based on how long it has sat and how it is selling. A common shape, applied per SKU:

AGEING RESERVE POLICY - illustrative
----------------------------------------------------------------------
  Age since receipt        Reserve % of carrying cost
  ----------------------   --------------------------
  0 - 6 months (in season)              0%
  7 - 12 months                        15%
  13 - 18 months                       40%
  19 - 24 months                       70%
  Over 24 months                      100%

  Overlay adjustments
    Core / never-out-of-stock SKU        halve the reserve
    Discontinued colourway               step up one band
    Sample or damaged grade             100% immediately
----------------------------------------------------------------------

The bands are a policy decision your accountant signs off, and they differ from business to business. The mechanics belong in the ERP: it must know each unit's receipt date, hold the carrying cost, apply the band, and produce a reserve roll-forward — a small report showing the opening reserve, what was added, what was released when stock actually sold, and the closing reserve.

The overlays matter for apparel specifically. A "core" or never-out-of-stock SKU is one you intend to carry permanently, like a black T-shirt, and it is a different asset from a discontinued seasonal print that has sat for the same year. A flat aging rule that treats them the same will either over-reserve your basics or under-reserve your fashion.

Report gross margin two ways every month: before and after inventory reserves and write-downs. The first tells you whether your pricing and sourcing worked. The second tells you whether your buying quantities worked. Blending them hides which of the two problems you actually have.

What this means for your ERP

Everything above turns into schema, rules, screens and reports. Here is the concrete translation.

Tables and fields

-- Cost sheets are versioned and effective-dated. A confirmed
-- version is never edited; it is superseded. This is what lets you
-- answer "what did we price against?" three seasons later.

create type cost_category as enum (
  'fabric','trim','label','packaging','labour','finishing',
  'testing','overhead','factory_margin','freight','insurance',
  'duty','govt_fee','inspection','other'
);

create table cost_sheet (
  id               uuid primary key default gen_random_uuid(),
  tenant_id        uuid not null,
  style_id         uuid not null references style(id),
  season_id        uuid not null references season(id),
  supplier_id      uuid not null references supplier(id),
  version          int  not null,
  stage            text not null check (stage in
                     ('development','line_sheet','order_confirm',
                      'pre_shipment','landed_actual')),
  status           text not null check (status in
                     ('draft','quoted','confirmed','superseded')),
  incoterm         text not null check (incoterm in
                     ('EXW','FCA','FAS','FOB','CFR','CIF','CPT',
                      'CIP','DAP','DPU','DDP')),
  incoterm_place   text not null,
  currency         char(3) not null,
  fx_rate          numeric(18,8) not null,
  fx_rate_type     text not null check (fx_rate_type in
                     ('spot','budget','hedge')),
  fx_rate_date     date not null,
  order_qty        integer not null check (order_qty > 0),
  unit_price       numeric(12,4) not null,  -- in `currency`
  unit_price_base  numeric(12,4) not null,  -- x fx_rate
  first_sale_price numeric(12,4),           -- factory-to-agent
  hts_code         text,
  country_of_origin char(2),
  effective_from   date not null,
  effective_to     date,
  created_at       timestamptz not null default now(),
  created_by       uuid not null,
  unique (tenant_id, style_id, season_id, supplier_id, version)
);

-- Exactly one confirmed sheet per style / season / supplier.
create unique index cost_sheet_one_confirmed
  on cost_sheet (tenant_id, style_id, season_id, supplier_id)
  where status = 'confirmed';

create table cost_sheet_line (
  id            uuid primary key default gen_random_uuid(),
  cost_sheet_id uuid not null references cost_sheet(id)
                on delete cascade,
  seq           int  not null,
  category      cost_category not null,
  description   text not null,
  material_id   uuid references material(id),
  consumption   numeric(12,5) not null check (consumption >= 0),
  uom           text not null,        -- yd, m, kg, pc, min, pct
  wastage_pct   numeric(6,5) not null default 0
                check (wastage_pct >= 0 and wastage_pct < 1),
  unit_cost     numeric(12,5) not null check (unit_cost >= 0),
  extended_cost numeric(12,5) generated always as
                (round(consumption * (1 + wastage_pct)
                       * unit_cost, 5)) stored,
  unique (cost_sheet_id, seq)
);

Three decisions in that schema are load-bearing. First, consumption and wastage_pct are separate columns and extended_cost is a generated column, one the database computes for you from the others, so the arithmetic can never drift from its inputs and a yield improvement is one field edit.

Second, every money column is numeric, never float; floating-point columns store approximations, which will produce allocations that fail to reconcile, and you will find out at year end.

Third, stage and version together mean the linesheet cost that produced your price survives forever, even after the landed actual is known. The index applies only to rows whose status is 'confirmed', so it enforces exactly one confirmed sheet at a time while still letting you keep every superseded version.

-- Duty is modelled as a set of effective-dated rules. This is the
-- table that made the 2025-26 tariff whiplash survivable.

create extension if not exists btree_gist;

create table duty_rule (
  id            bigserial primary key,
  hts_prefix    text not null,          -- '6204.62.80', '62', ''
  origin_iso2   char(2),                -- null = all origins
  program       text not null,          -- MFN_COL1, SEC301_FL, ...
  authority     text not null,          -- statute / proclamation
  rate_type     text not null check (rate_type in
                  ('ad_valorem','specific','compound','fee')),
  ad_valorem    numeric(8,5),           -- 0.16600
  specific_amt  numeric(12,5),          -- 0.49600 per unit of uom
  specific_uom  text,                   -- 'kg', 'doz'
  fee_min       numeric(12,2),          -- MPF floor
  fee_max       numeric(12,2),          -- MPF cap
  stack_order   int not null,
  validity      daterange not null,
  source_url    text not null,
  recorded_at   timestamptz not null default now(),
  -- no two versions of the same rule may overlap in time
  exclude using gist (
    hts_prefix  with =,
    origin_iso2 with =,
    program     with =,
    validity    with &&
  )
);

-- Freight allocation runs are idempotent and must reconcile.

create table landed_cost_run (
  id                uuid primary key default gen_random_uuid(),
  tenant_id         uuid not null,
  shipment_id       uuid not null references shipment(id),
  idempotency_key   text not null,
  basis             text not null check (basis in
                      ('volume_cbm','gross_weight_kg',
                       'fob_value','units')),
  total_to_allocate numeric(14,2) not null,
  posted_at         timestamptz,
  unique (tenant_id, idempotency_key)
);

create table landed_cost_alloc (
  run_id           uuid not null references landed_cost_run(id),
  shipment_line_id uuid not null references shipment_line(id),
  cost_category    cost_category not null,
  allocated_amount numeric(14,4) not null,
  is_rounding_sink boolean not null default false,
  primary key (run_id, shipment_line_id, cost_category)
);

-- Retailer deductions, tracked individually so they can be
-- disputed, recovered, and analysed by cause.

create table customer_deduction (
  id               uuid primary key default gen_random_uuid(),
  tenant_id        uuid not null,
  customer_id      uuid not null references customer(id),
  invoice_id       uuid references invoice(id),
  po_number        text,
  deduction_code   text not null,     -- the retailer's own code
  reason_class     text not null check (reason_class in
                     ('terms_discount','co_op','markdown_support',
                      'compliance_chargeback','shortage','pricing',
                      'freight','rtv','sample','other')),
  claimed_amount   numeric(14,2) not null,
  disputed         boolean not null default false,
  recovered_amount numeric(14,2) not null default 0
                   check (recovered_amount >= 0),
  edi_812_ref      text,              -- credit/debit adjustment
  status           text not null default 'open',
  taken_at         date not null,
  check (recovered_amount <= claimed_amount)
);

The duty_rule table is the centerpiece. The GiST exclusion constraint is a Postgres feature that makes overlapping versions of the same rule impossible at the database level, which means "what was the rate on 30 June?" always has exactly one answer. rate_type covers all four shapes apparel actually uses: percentage rates, fixed per-kilogram amounts, compound rates that are both, and capped fees like the Merchandise Processing Fee. source_url earns its place: when an auditor or a customs broker asks why you applied 12.5%, you need the citation, and when a program is struck down you need to know which rows to reverse and refund against.

The allocation tables carry an idempotency key, a caller-supplied identifier that lets the system recognize a repeat of the same request and ignore it, so re-running a freight allocation cannot double-post. The rounding-sink flag guarantees the allocation reconciles to the invoice. The deduction table stores each claim as its own row instead of netting it into the invoice, because the whole value of the data is being able to group by reason_class and customer_id and discover that one distribution center generates 40% of your chargebacks.

Rules the software must enforce

No price without a cost. A style cannot be added to a price list unless a confirmed cost sheet exists for it. The margin is computed, displayed, and compared to the season's target at the moment the price is entered.

Margin floor with explicit override. A wholesale price below the configured floor margin requires a named approver and a reason code, stored. The exception then appears in the margin report rather than disappearing into the blend.

Reclassification trigger. Changing fiber content percentages, adding a coating or finish, or changing country of origin sets the style's HTS to "needs review" and blocks purchase-order confirmation until someone re-confirms it. This is the control that prevents the $4,320 fiber-swap mistake.

Incoterm consistency. Reject sea-only Incoterms (FAS, FOB, CFR, CIF) on air shipments. Require a named place for every Incoterm. Where the term is DDP, block the landed-cost duty component from being calculated twice.

Allocations must reconcile. Assert that the sum of allocated_amount for a run equals total_to_allocate before the run may be posted, with the difference forced onto the rounding-sink line.

Duty rules are append-only. Never update a duty_rule row in place. Close the old validity range and insert a new row. This is the same discipline as the append-only inventory ledger in chapter 1 and for the same reason: you must be able to reconstruct what the system believed on any past date.

Currency is never implicit. Every money column travels with its currency, its rate, its rate type and its rate date. A cost sheet in Vietnamese dong with no rate date is not a cost sheet.

Screens and workflows people will actually use

  • Cost sheet editor with live FOB and landed cost, side-by-side version comparison, and a "what changed" difference view between the linesheet version and the current one.
  • Duty simulator: pick an HTS code, an origin and a date, and see the resolved stack with each rule and its legal authority listed.
  • Landed cost wizard that fires on shipment receipt, lets the user choose or confirm the allocation basis, previews the per-unit effect on every style in the container, and posts once.
  • Price list builder showing the whole ladder with margins, so a change to one cost visibly moves the band.
  • Deduction workbench: an inbox of short payments to be matched to invoices, classified, disputed and tracked to recovery, ideally fed automatically by the EDI 812 credit and debit adjustment messages retailers already send.
  • Re-cost run: select a season and a trigger, recalculate all open cost sheets, and produce an exception list of styles whose margin has moved more than a threshold.

Reports people will demand within the first month

  • Style margin, planned versus actual, with the variance decomposed into purchase price, freight, duty and currency.
  • Customer profitability as the full waterfall from booked to contribution, by customer and by door.
  • Open order book margin at risk — unshipped orders valued at current landed cost, showing which will miss target.
  • Duty exposure by origin country and HTS with a scenario slider, because someone will ask "what if the rate goes to 25%?" and they will want the answer the same day.
  • Aging inventory with the reserve roll-forward.
  • Chargeback analysis grouped by customer, reason class and distribution center.
  • Margin by channel, because the wholesale-versus-direct gap is the single biggest driver of your blended number.

How this connects to the engineering chapters

Cost layers are an append-only ledger and belong with the inventory ledger of chapter 1 — each receipt creates a layer with a quantity and a unit cost, and consumption draws down layers in FIFO order rather than mutating a balance. The numeric discipline, generated columns, daterange, and the GiST exclusion constraint are all chapter 2 Postgres material.

Landed-cost allocation runs and deduction imports must be idempotent and safe under concurrent posting, which is chapter 3. Duty rules, currency rates, retailer chargebacks arriving as EDI 812, invoices as EDI 810, and COGS journals pushed to your accounting package are all chapter 4 integration surfaces. Cost sheets are commercially sensitive and must be scoped by tenant with row-level security per chapter 5.

Cost sheets will arrive from factories as spreadsheets and need the import pipeline of chapter 7. Margin-by-style and the waterfall are expensive aggregate queries and want the caching approach of chapter 8. The allocation arithmetic needs property-based tests that assert reconciliation to the penny across random inputs, which is chapter 9. And the full table definitions land in the reference schema of chapter 11.

Core principle

If you build only one thing from this chapter, build the versioned cost sheet with a separate landed-cost actual. Everything else — pricing, margin reporting, the erosion waterfall, inventory valuation, duty variance — is a query over that one structure. A system that cannot tell you what a style was planned to cost, what it actually cost, and why they differ, cannot manage margin at all.

The margin waterfall The margin waterfall. Each bar is narrower than the one above it because something has been taken out. The headline order value at the top is not what arrives in the bank. Discounts, retailer deductions, markdown support and returns all bite before you have paid for the goods themselves. The proportions shown are illustrative — the point is the shape, and that most of these deductions never appear on the order document your system captures. WHERE THE MARGIN ACTUALLY GOES Gross wholesale sales 100.0% less discounts and terms − 9% less chargebacks and compliance deductions − 8% less markdown money and co-op advertising − 6% less returns and allowances − 3% = net sales actually collected 74% less landed product cost − 38% = contribution 36% Illustrative proportions only — every one of these lines is negotiated, and they vary widely by account. The deductions below the top line are invisible on the order. They are where brands lose money without noticing.
The margin waterfall. Each bar is narrower than the one above it because something has been taken out. The headline order value at the top is not what arrives in the bank. Discounts, retailer deductions, markdown support and returns all bite before you have paid for the goods themselves. The proportions shown are illustrative — the point is the shape, and that most of these deductions never appear on the order document your system captures.

Field notes & further reading

  • Harmonized Tariff Schedule of the United States (USITC) — the authoritative, searchable source for every duty rate in this chapter; all sixteen rates in the table above were read from it in July 2026. Search a code and read the Column 1 General rate and the Special column for preference eligibility. It also exposes a REST endpoint (for example hts.usitc.gov/reststop/search?keyword=6204.62.80), which is how you should populate your duty_rule table rather than typing rates by hand.
  • US Customs and Border Protection user fee table — the Merchandise Processing Fee (0.3464% of value, $33.58 minimum, $651.50 maximum on formal entries as of July 2026), the Harbor Maintenance Fee at 0.125%, the cotton and other agricultural import assessments, and every other fee that lands on an entry summary. CBP adjusts the dollar figures for inflation by Federal Register notice, so check the table each year.
  • CBP Informed Compliance Publications — free, plain-language guides in the "What Every Member of the Trade Community Should Know About" series. The apparel set includes "Classification: Apparel Terminology under the HTSUS", "Classification of Knit to Shape Apparel Garments under HTSUS Heading 6110", "Classification of Coated and Water Resistant Apparel", "Textile & Apparel Rules of Origin", and "Bona Fide Sales & Sales for Exportation to the United States" for first-sale valuation.
  • Sandler, Travis & Rosenberg tariff actions resource center — a running record of Section 122, Section 232, Section 301, Section 338 and IEEPA actions, with a separate page per program giving effective dates, rates by country and carve-outs. Every date and rate in the 2026 timeline above came from these pages. Check them before you quote a landed cost, because the rates in this chapter are dated by design.
  • Executive Order 14324, "Suspending Duty-Free De Minimis Treatment for All Countries" — the primary text behind the end of the $800 exemption, including the $80/$160/$200 postal flat fees and the six-month window in which carriers could elect them. Reading one executive order end to end is the fastest way to see how much detail sits under a headline tariff number.
  • Drewry World Container Index — weekly spot container rates on major lanes, published free. Use it to sanity-check a forwarder's quote and to set the freight assumption in your linesheet cost.
  • ICC Incoterms® 2020 — the source of truth for what each three-letter term transfers. Read it before signing a supply agreement; the CFR/CIF risk asymmetry alone is worth the hour.
  • Cotlook — the A Index, the international benchmark for physical cotton, updated daily with a forward index alongside it. The reference point for any conversation with a mill about why fabric prices moved.
  • USDA Economic Research Service, cotton and wool market outlook — the monthly supply, demand and price outlook behind any medium-term fabric assumption, and the source of the 2026/27 price forecast quoted above. Free, and more useful for planning a season than a spot quote.
  • IAS 2 Inventories (IFRS Foundation) — the standard behind lower of cost and net realizable value, the permitted cost formulas, and the definition of NRV used in the write-down example above. The gross margin benchmarks quoted earlier come from the filers' own 10-K filings, which are free on SEC EDGAR; comparing a wholesale-heavy filer with a direct-to-consumer-heavy one is the fastest way to calibrate what your channel mix should produce.
Exercise

1. Build one real cost sheet and take it all the way to contribution. Pick a single style you have actually made or intend to make. Get the factory to quote it in the structure of the table in this chapter — materials, conversion, overhead, factory margin — rather than as one FOB number. Look up its HTS code on hts.usitc.gov and record the Column 1 General rate and the Special column. Then build the landed cost using a real freight quote allocated by cubic meters, and finally build the waterfall down to contribution using your own customers' actual terms, co-op percentages and chargeback history from the last twelve months. Compare the contribution percentage to the gross margin on your linesheet.

2. Make your duty rules data. Create the duty_rule table from the ERP section in a scratch Postgres database, including the GiST exclusion constraint. Populate it with the rules that actually applied to your top three styles over the last eighteen months, each with its legal authority and source URL and its correct validity range. Remember that at least one of those ranges must close on 24 July 2026, when the Section 122 surcharge expired, and another must open the same morning at the Section 301 forced-labor rate for that origin. Then write one query that takes an HTS code, an origin country and an entry date, and returns the resolved duty stack with a row per program. Verify it against a real customs entry summary from your broker.

When you are done you should have: a versioned cost sheet whose numbers you can defend line by line, a landed cost you would be willing to price against, an honest contribution percentage for one style, and a working duty resolver that will not need rewriting the next time a tariff program changes.