TL;DR
- Every cross-border ecommerce order into the US now carries duties and fees. Section 321 commercial de minimis was suspended August 29, 2025 (Executive Order 14324) and is statutorily repealed effective July 1, 2027 (One Big Beautiful Bill Act). For the full policy timeline, see what changed for low-value shipments after the de minimis suspension.
- On a $40 cotton t-shirt from Vietnam (HTS 6109.10.00.18, entered May 2026) the actual landed duty is $44.23 on a $40 invoice: 16.5% MFN ($6.60), 10% Section 122 surcharge ($4.00), $33.58 Merchandise Processing Fee (the FY26 minimum binds below ~$9,694 entered value), $0.05 Harbor Maintenance Fee. Duty and fees are 110.6% of merchandise value. The MPF floor alone is 84% of the t-shirt's price.
- That math reshapes unit economics for any DTC merchant whose customers used to pay zero on packages under $800. Surprise duties at delivery cause refused packages, chargebacks, and repeat-purchase drop-off. The question is no longer whether to handle this, but how.
- Three strategic options: show landed cost at checkout (a transparent line on the cart page), absorb duties into MSRP (no duty line, customer never sees it), or switch to DDP shipping (carrier handles duty collection upfront). The right answer depends on monthly cross-border volume, average order value, and brand positioning. Under 500 orders per month, absorbing into MSRP is usually the right call. The decision matrix below names the thresholds.
Three options
Every DTC merchant facing the post-de-minimis world picks one of three patterns. They are not mutually exclusive (most brands eventually mix them by SKU or by destination), but every order flows through one of them.
Option A: Show landed cost at checkout
Customer adds product to cart. Your backend calls a duty calculation API with the SKU's HTS code, country of origin, and declared value. The API returns the duty stack. Your cart shows a single "Import duties and fees: $X.XX" line. Customer pays the full landed cost at checkout. Carrier delivers. No surprise. This is the highest-trust pattern; it also has the highest engineering cost (an API integration that has to handle timeouts, caching, fallbacks, and rate-limit edge cases).
Option B: Absorb duties into MSRP
Pick a per-SKU markup that covers expected duty plus fees. Bake it into the listed price. Don't show duty as a separate line. The customer never sees a duties charge. You eat the variance: on some shipments the actual duty is higher than the markup, on others lower. This is the lowest engineering cost (no API, nothing to wire up) and works fine if your duty exposure is uniform across SKUs and origins. It breaks when origin or SKU mix shifts, when Section 232 derivatives kick in for steel or aluminum content, or when a CSMS message moves a rate that you baked into MSRP six months ago.
Option C: DDP shipping through a carrier
Use a Delivered Duty Paid carrier service (DHL Express Worldwide, FedEx Cross Border, UPS Worldwide, or a DDP aggregator like Passport, Zonos, or Shopify Markets). The carrier or aggregator quotes you a rate that includes the duties, you pay them upfront on the shipping label, the carrier remits to CBP. Your customer is charged once at checkout for a combined shipping plus duties number. The carrier handles the customs paperwork and assumes the discrepancy risk in some aggregator programs (Zonos guarantees, Shopify Markets has its own backstop). This pattern shifts complexity to the carrier but adds a service fee on top of the actual duty: Shopify Markets charges 0.5% per international transaction, Passport charges 5% deferment on duty plus tax, Zonos's Shopify app starts at $2,500 per year plus $2 per order plus 10% of duties collected.
The next section is the decision matrix that names which option to pick based on your monthly cross-border volume and the tradeoffs each one carries.
Decision matrix by volume
Volume is the single biggest input to the choice, because the fixed costs of an API integration or a DDP carrier program have to amortize across enough orders to be worth it.
| Monthly cross-border orders | Recommended pattern | Why |
|---|---|---|
| Under 500 | Absorb into MSRP | API integration overhead and DDP carrier service fees exceed the variance you'd save. Pick a per-SKU markup that covers the worst-case duty plus fees, accept the margin variance, revisit at higher volume. |
| 500 to 5,000 | Show landed cost at checkout (API) | API per-call cost is negligible at this volume, customer experience improves materially, and the engineering cost amortizes. The break-even against Zonos's $2,500-per-year minimum lands here. |
| Over 5,000 | Mixed: API-at-checkout + DDP for sensitive lanes | API at checkout for the long tail; DDP for high-value lanes where the carrier guarantee buys you out of chargeback risk. Above this volume the difference between "show duties" and "guarantee duties" starts compounding into the customer-experience metric. |
We don't recommend this if:
You ship under 500 cross-border orders per month. No duty calculation API is justified at that volume. Manual MSRP markup based on the most-shipped HTS bracket works fine and is what we'd recommend until volume justifies the integration cost. The engineering time you'd spend wiring up a checkout extension is better spent on anything else: SEO, conversion optimization, customer support. Revisit when monthly volume crosses 500 or when your CFO starts asking why duty variance is showing up in the P&L.
This is the answer most "duty API" vendor pages will not give you. They sell APIs.
Postal vs courier
Postal mail (international packages handled by a foreign postal authority into USPS) and courier (UPS, FedEx, DHL, the rest) follow different duty regimes. This matters for fulfillment choice because the math diverges.
Courier (formal or informal entry)
A courier shipment clears as a Type 11 (informal, at or under $2,500) or Type 01 (formal, above $2,500) entry in ACE. Duty is MFN plus Section 122 plus any Section 232 / Section 301 / AD/CVD that applies, plus MPF (0.3464% with FY26 $33.58 minimum on Type 01, flat $2.62 per release on Type 11), plus HMF (0.125% on ocean only). This is the math the worked example below uses, and it's the math the Tandom API returns when you pass a regular HTS code, country, value, and date.
Postal mail (carrier-remitted ad valorem)
Postal mail follows a different track. From August 29, 2025 through February 27, 2026, foreign postal carriers had two remittance methodologies (per CBP CSMS message 65934463): an ad valorem method (the country-of-origin rate applied to declared value) or a specific-rate method ($80 per item if country IEEPA rate is under 16%, $160 if 16% to 25%, $200 if over 25%). Effective February 28, 2026, only the ad valorem method is allowed. Foreign carriers post bonds with CBP and remit duty per shipment.
For a DTC merchant fulfilling via international postal, the duty math is the same ad valorem rate as a courier shipment, but there is no MPF or HMF because those fees attach to formal and informal entries, not postal mode. The carrier handles remittance and there is no broker fee per parcel. This is economically attractive for very-low-AOV products if your fulfillment country's postal authority is willing to handle US remittance.
For most DTC operations, courier (UPS, FedEx, DHL) is the default because it ships faster, has tracking, and integrates with Shopify Markets / BigCommerce / WooCommerce shipping modules. Postal becomes worth considering at very high fulfillment volume from a single origin where the postal-rate economics dominate.
Worked example
A DTC apparel brand sells men's cotton t-shirts. Made in Vietnam, sells for $40, shipped via courier (UPS Worldwide Saver) into the US. Same SKU as the policy explainer's worked example, framed here for the checkout-display angle.
Per-package facts.
- HTS: 6109.10.00.18 (T-shirts, knit, cotton, men's)
- Country of origin: Vietnam (VN)
- Declared value: $40
- Entry date: May 7, 2026
- Mode: courier (UPS Worldwide Saver, Type 11 informal entry)
- No SPI claim, no AD/CVD scope, no exclusion
The raw duty stack (what the API returns)
Same shape you would see in the Tandom calculator: each line carries an authority badge, the regulatory citation, the rate, and the dollar amount contributed.
| 6109.10.00.18MFN base, Men's t-shirts of cotton (Column 1 General) | MFN | 16.5% | $6.60 |
| 9903.03.01Section 122 surcharge (Trade Act §122, eff. Feb 24, 2026) | S122 | 10% | $4.00 |
| n/aMPF (19 CFR 24.23, FY26 minimum binds) | MPF | 0.3464% | $33.58 |
| n/aHMF (19 CFR 24.24, ocean only) | HMF | 0.125% | $0.05 |
| Total duty + fees (per package, no AD/CVD) | $44.23 | ||
The MPF minimum ($33.58) is the dominant line. Merchandise value never reaches the threshold where the 0.3464% ad valorem rate exceeds the floor. Duty alone (MFN + Section 122) is $10.60, a 26.5% effective rate. The full landed duty per package is $44.23, a 110.6% premium on declared value. That fact reshapes unit economics for any DTC business that used to ride under Section 321.
What the customer sees at checkout
The customer-facing presentation consolidates the breakdown into one line. Don't dump "9903.03.01" onto the cart page; the customer doesn't care which Chapter 99 code applies. Show the number, label it clearly, surface the breakdown in a click.
Cart
Paid by us to US Customs at delivery, not collected by you.
Important UX detail: the duty line is $44.23 on a $40 item. Customers balk at this number on first viewing. Pair it with a one-line explainer ("US import duties and fees: $44.23, paid by us to US Customs at delivery, not collected by you") so the customer understands what they're paying for. Clear copy reduces abandonment more than hiding the line ever does.
Provider landscape
For merchants picking the API-at-checkout or DDP path, several providers handle the duty calculation and the carrier integration. The table below is what each one actually charges and what they integrate with, sourced from their own pricing pages where available. Pricing transparency varies; the opaque-contract providers usually price by transaction volume.
| Provider | Pricing entry point | Integration |
|---|---|---|
| Zonos (Shopify app) | $2,500/yr min + $2/order + 10% of duties | Shopify Custom Storefront required, DHL/FedEx/UPS/USPS |
| Shopify Markets DDP | 0.5% per international transaction | Shopify-only, native |
| Easyship | Free → Plus → Premier → Scale (tiered, quotas + overage) | REST API, 550+ carrier services, multi-platform |
| Passport | 5% deferment fee on duty + tax (rest custom) | 100+ platforms, DDP carrier model |
| Avalara CrossBorder | Custom annual contract (opaque) | WooCommerce, ERP, marketplaces |
| Tandom | Free tier + paid tiers per call | REST API on any cart, MCP server |
For a deeper provider-by-provider teardown across pricing, accuracy, AD/CVD coverage, and integration breadth, see Duty calculation API for ecommerce: how to choose.
Tandom is building a drop-in Checkout Widget for Shopify, BigCommerce, and WooCommerce. Join the waitlist.
Common pitfalls
The mistakes that bite DTC merchants and their engineering teams most often when they wire up landed-cost-at-checkout for the first time.
Quoting MPF as a percentage on small parcels
On a Type 01 entry the MPF is 0.3464% with a $33.58 minimum. Below roughly $9,694 of entered value the minimum binds and MPF is flat. Quoting "MPF is 0.35% so on $40 the fee is fifteen cents" is wrong by a factor of 220. Real cost on a $40 t-shirt: $33.58 in MPF alone, not $0.14. Underquote the customer at checkout and you eat $33.44 per package or your customer is shocked when the carrier collects the difference.
Treating postal and courier as the same
Postal mail follows ad valorem methodology after February 28, 2026 with no MPF or HMF; courier follows Type 11 / Type 01 formal entry with full MPF and HMF. Real cost of mixing them up: the entry gets rejected at CBP, the package sits in bond for 4 days while you re-file, the broker charges $300 to fix it, the customer files a chargeback. Per-package fix cost: $300 plus refund plus reputational damage.
Not budgeting refused packages into your COGS
When a carrier collects duty at delivery, a meaningful percentage of customers refuse the package, especially on first-purchase orders. The refused package costs you the return shipping, the original outbound shipping, the restocking labor, and any chargeback risk if the customer disputes the surprise charge. Real cost on a $50 AOV cross-border program: a 10% refusal rate plus $25 average return shipping plus restocking and customer-service queue cost lands at $30 to $40 per cross-border order absorbed across the whole program. Build that into the COGS model when you price the MSRP-absorption option against the API-at-checkout option.
Showing landed cost AFTER coupons or discount codes
Customer adds product, sees "Subtotal $50, Duty $44, Total $94" on the cart page. They apply a 20% discount code, the cart updates to "Subtotal $40, Duty $44, Total $84". They pay. At confirmation: "Duty $44, Total $84" matches. So far so good. But if your duty calc is on the original subtotal and not the discounted value, the customer sees one number on cart and their bank statement shows a different one once the carrier collects. Real cost: chargeback rate spike when customers dispute the duty difference, and a customer-service queue full of "you charged me wrong" tickets. Always recompute duty on the post-discount declared value.
Forgetting Section 232 derivative content on accessories
Section 232 (steel, aluminum, copper) is normally associated with raw metal imports, but the derivative HTSUS list pulls in a long tail of consumer-goods SKUs with metal components: steel zippers on apparel, aluminum buckles on bags, copper components in some electronics, certain tools and kitchen goods. These can pick up an extra 25% or 50% layer that does not stack on Section 122 but does stack on MFN. Real cost: a $60 leather backpack with steel hardware that was priced at MSRP plus 30% suddenly owes 25% Section 232 on the steel content; the markup that was fine for the leather portion under-collects on the metal, margin gap shows up at scale. Run every accessorized SKU through a calculator that handles Section 232 derivatives before you set MSRP markups.
Forgetting AD/CVD on a low-value SKU
A low entered value does not exempt a line from AD/CVD scope. A $40 cotton t-shirt is unlikely to be in an AD/CVD order, but a $40 fastener, a $40 solar panel sample, or a $40 ball bearing may well be. Real cost: customer is invoiced an unexpected $200 in AD/CVD margin at delivery, refuses the package, your refund + return-shipping eats the margin on twenty more units to make it back. Run every new SKU through compliance.tandom.ai/adcvd-catalog before you list it; the API surfaces AD/CVD advisory rates alongside the duty stack.
Mixing entered value with declared value
Customs entered value (used for MPF and HMF computation) can include freight on certain entries; declared value (the price the customer paid for the goods) usually doesn't. The Tandom API takes declared value and computes the right entered-value base internally. Hand-rolling the math and using the wrong base undercollects MPF. Real cost: a few cents per package, but systematic underquote that the carrier eventually invoices back to you on reconciliation. Trust the API to handle the base; pass the declared value as `value`.
Forgetting Section 122 sunsets July 24, 2026
The 10% Section 122 surcharge is statutorily capped at 150 days, terminating 12:01 a.m. EDT July 24, 2026 absent legislation extending it. Hard-coded MSRP markups built today assuming Section 122 is permanent will overcharge customers starting July 25. Real cost: refund queue, customer complaints, and a rebuild of pricing logic at the worst time. The Tandom API computes Section 122 based on the entry date you pass; if you call it with `date=2026-07-25`, the response excludes Section 122 automatically. Don't bake the surcharge into static MSRP markups.
Underquoting broker fees on courier shipments
Customers expect "duties" to mean "the thing the government collects." Carrier brokerage and disbursement fees ($10 to $25 per package on UPS/FedEx) are NOT government duties; they're the carrier's clearing fee. If you only show MFN plus Section 122 plus MPF plus HMF and skip the brokerage line, real cost: the carrier collects a surprise $15 from the customer at delivery, customer files chargeback, their Slack-Ops thread features your brand by name. Either include carrier brokerage in your "Import duties and fees" line or add a separate "Carrier clearing fee" line. Don't omit it.
Skipping HTS verification on first integration
The duty calc is only as right as the HTS code. A merchant importing "men's cotton t-shirts" who picks 6109.10.00.04 (boys') instead of 6109.10.00.18 (men's) gets a duty rate that might be in the same neighborhood or might be off by 5 percentage points. Real cost: systematic over-or-under quote on a fundamental SKU error, propagating until someone notices on a CBP rate-advance audit. Verify every product's HTS against the live HTSUS at hts.usitc.gov or use Tandom's three-layer classifier; the API is only correct if its inputs are.
Glossary
- Landed cost
- The total cost a customer pays for a cross-border order including merchandise, shipping, duties, taxes, fees, and carrier brokerage. The point of showing landed cost at checkout is to make sure the customer pays once and is not surprised at delivery.
- DDP (Delivered Duty Paid)
- Incoterm under which the seller (or seller's carrier) is responsible for paying duties to the destination country. The customer is not invoiced separately at delivery. DDP shifts customs risk and cost onto the seller (or aggregator) and usually carries a service-fee premium on top of the actual duty.
- DDU / DAP (Delivered Duty Unpaid / Delivered at Place)
- Incoterms under which duties are NOT paid by the seller. The carrier collects from the recipient at delivery, or invoices after. Causes refusals, chargebacks, and "I never paid duty before" customer-service tickets in DTC. Most cross-border DTC merchants are moving away from DAP after the August 2025 de minimis suspension.
- MFN (Most-Favored Nation)
- The default duty rate that applies to a product based on its HTS code, country of origin, and applicable trade agreement. 16.5% on cotton t-shirts (HTS 6109.10.00.18) from any country without a preferential agreement. The base layer in the duty stack.
- Section 122
- 10% temporary import surcharge under 19 USC 2132 effective 12:01 a.m. EST February 24, 2026. Capped at 15% ad valorem and at 150 days absent legislation, so it terminates 12:01 a.m. EDT July 24, 2026 unless extended. Stacks on MFN, Section 301, and AD/CVD; does not stack on Section 232.
- MPF (Merchandise Processing Fee)
- CBP fee on every formal and informal entry. 0.3464% ad valorem on Type 01 with FY26 minimum $33.58 and maximum $651.50. Flat $2.62 per release on Type 11. Waived for USMCA-originating goods, Israel FTA, AGOA-eligible goods, and a few others. The minimum binds on every former Section 321 package below ~$9,694 entered value.
- HMF (Harbor Maintenance Fee)
- CBP fee of 0.125% ad valorem on ocean shipments only. No minimum or maximum. Applies to Type 01 and Type 11 but not postal. Statutory basis 19 USC 4461; regulation 19 CFR 24.24.
- HTS (Harmonized Tariff Schedule)
- The 10-digit code that classifies every imported good for US customs purposes. Determines the MFN rate, applicable Chapter 99 layers, and PGA flagging. Maintained by USITC at hts.usitc.gov.
- Chapter 99 codes
- HTSUS Chapter 99 codes (e.g., 9903.03.01) that signal additional duty layers on top of the base HTS. Used for Section 122, Section 232, Section 301, IEEPA reciprocal, and other trade-remedy regimes. The Tandom API returns every applicable Chapter 99 code in the `chapter99Sources` array with its rate, amount, and citation.
- EO 14324
- Executive Order suspending duty-free de minimis treatment for all countries, effective 12:01 a.m. EDT August 29, 2025. Published as FR Doc 2025-14897.
- One Big Beautiful Bill Act (OBBBA)
- Public law signed July 4, 2025 that permanently repeals 19 USC 1321(a)(2)(C) commercial de minimis effective July 1, 2027. Also created a $5,000 / $10,000 civil penalty for misuse of Section 321 effective August 3, 2025.
- Carrier brokerage / clearing fee
- The fee a courier (UPS, FedEx, DHL) charges for processing customs entry on the customer's behalf. Typically $10 to $25 per package. Not a government duty. Often surprises customers when bundled into "duties" without disclosure.
FAQ
High-intent questions DTC merchants and their engineering teams ask most often.