How to find the right HS code for any F&B product
By Yasmin Karim, Founder of XportStack · 4 May 2026 · 8 min read
The first time I shipped Popsmalaya Ice Bars overseas, I used the wrong HS code.
My Ice Bars are a freeze-at-home sorbet. Not ice cream. Not a juice. Something in between. So which HS code? Classifying them is genuinely tricky.
I picked the code that felt closest. The shipment landed. The duty came back higher than what my buyer had budgeted for.
The buyer paid it. But that surprise bill cost me the relationship.
That was eight years ago. I've shipped to 35 countries since, and I've worked out a method that catches these problems before the container leaves port.
What this post covers
- What an HS code actually is (in plain words)
- The four-step method I use to find the right one
- Three traps that catch most F&B founders
- Who to ask if you want a second opinion
You don't need a customs background to follow this. You just need your product label and ten minutes.
A quick note on who pays the duty
If you quote your buyer FOB, CIF, or CFR, the buyer pays the import duty, not you.
So why does the HS code matter to you, the exporter? Because:
- A surprise duty bill makes your buyer angry. You lose the relationship.
- The buyer might refuse future shipments until you guarantee the code.
- Customs at the destination port can hold the shipment if they disagree with the code. Your buyer pays demurrage. They blame you.
The HS code is your reputation in someone else's market. Getting it right protects your buyer, which protects you.
(I don't recommend exporters quote DDP — Delivered Duty Paid — because that puts destination duty risk back on you. Stick to FOB, CIF, or CFR.)
What is an HS code, in plain words
HS stands for Harmonised System. It's a 6-digit number every traded product gets.
The first 6 digits are the same in every country. So a sweet biscuit is 1905.31 whether you ship it to Tokyo, Toronto, or Sydney.
After 6 digits, each country adds its own digits for tax purposes:
- The US uses 10 digits (HTS)
- The EU uses 8 to 10 digits (CN and TARIC)
- ASEAN countries use 8 digits (AHTN)
For finding your code, work at the 6-digit level. The local 8 or 10-digit extension is something your freight forwarder or the buyer's broker can refine later.
Why this matters for you:
- The HS code decides the buyer's duty rate
- It decides whether your FTA preferential rate applies
- It decides which food safety rules trigger
- It decides what labels you need
One wrong digit and your buyer's landed cost gets eaten.
Step 1: Describe your product in plain words
Most HS code tools want you to start with a number you don't have.
Start with words instead.
Write down what your product actually is, the way you'd describe it to a friend:
- "Sweet biscuits"
- "Palm oil"
- "Chocolate"
- "Ice cream"
Now search for those words. Either in the official customs database for your destination, or in a free tool like the HS Code Lookup at tools.xportstack.com.
The tool will show you the codes that match those descriptions.
Step 2: Read the chapter description, not just the title
Each HS code sits inside a chapter. The chapter number is the first two digits.
Chapter 19 is bakery and cereals. Chapter 21 is sauces and food preparations. Chapter 22 is beverages.
Read the full description of each candidate code, not just the name.
Here's an example.
My Popsmalaya Ice Bars could fit under three different codes:
2105.00— ice cream and other edible ice (chapter 21)2009.x— fruit juices (chapter 20)2106.90— food preparations not elsewhere specified (chapter 21, the catch-all)
Each one has a different duty rate at every destination. Each one has different labelling rules.
The right answer depends on:
- The main ingredient (fruit pulp vs dairy vs sugar syrup)
- The form (frozen solid vs liquid sold as a mix)
- The way the consumer uses it (eats it frozen vs drinks it)
If two codes look like they could fit, read both chapter descriptions in full. The right code will start to feel obvious.
Step 3: Check classification risk
Some HS codes are safe. Customs at your buyer's port will agree with you nine times out of ten.
Other codes are risky. Customs might disagree and reclassify the shipment to a different code with a higher duty.
The worst offender in F&B is 2106.90 — "food preparations not elsewhere specified". It's a catch-all for products that don't fit anywhere else.
Codes you should treat with extra care:
2106.90— food preparations, catch-all2202.99— non-alcoholic beverages, other1517.90— edible mixtures of fats and oils, other1904.90— cereal preparations, other
If your candidate code ends in .90 or .99, it usually means "other, not classified anywhere specific". That's where customs has the most room to argue.
The free HS Code Lookup flags classification risk on every code so you can spot the risky ones before you ship.
Stop guessing your HS code on every quote. Try the free HS Code Lookup →
Step 4: Cross-check the duty rate
Once you have a candidate code, look up the duty rate for your destination and origin.
Two things to compare:
- The MFN rate (the standard rate, applied to any country)
- The FTA preferential rate, if your origin has a trade agreement with the destination
The duty rate gives you a quick way to double-check.
If your candidate code shows a 0% duty at every destination, and a similar product you know about shows 5-25%, your code might be wrong.
If your candidate code shows a very high duty (say 30% MFN), check whether you should be under a different code instead. Sometimes the same product fits under two codes with very different rates. You can legally use the one with the lower rate as long as the description fits.
Run the candidate through the Duty Calculator and the FTA Eligibility Checker to see the numbers side by side.
Three traps that catch most F&B founders
Here are the mistakes I've seen the most.
Trap 1: Trusting the code your manufacturing partner used.
If you work with a contract manufacturer (sometimes called a co-packer in the US), they may have used a code on past shipments for someone else's brand.
That code might not be right for your product, your packaging, or your destination market.
Your manufacturing partner's job is making product. The HS code is your job, as the brand owner of record on the export paperwork. Always verify the code yourself before you put it on a quote.
Trap 2: Using the same code across markets without checking.
The 6-digit code is the same everywhere. But the duty rate and the 8 or 10-digit extension can change a lot.
A product that ships duty-free into one market might pay 25% into another. Check every new market before you quote.
Trap 3: Quoting before you verify.
The most expensive mistake. You quote a buyer based on a duty rate you assumed. The container lands. The real duty is higher. Your buyer absorbs it, then never reorders.
Always run the HS code and duty rate before sending a quote. It takes five minutes.
Who to ask if you want a second opinion
You can find the right HS code yourself nine times out of ten. But for high-value shipments or new markets, having someone else check the code is worth it.
Two parties have a real interest in getting it right. You, the exporter. And your buyer, the importer.
Best practice: you propose the code. Your buyer's side confirms or proposes an alternative. Both of you agree before the shipment leaves.
The buyer is the legal "declarant" at destination customs. They are the one paying the duty. So they have every reason to check the code too. If they don't, ask them to.
On your side (in your country)
1. Your freight forwarder.
Freight forwarders see HS codes every day, on every shipment. They will spot a wrong code faster than most other sources, and they don't charge extra to double-check.
If you've never asked your forwarder to check a code, try it on your next quote. Most are happy to.
2. The chamber of commerce that issues your Certificate of Origin.
If you're applying for a Certificate of Origin for an FTA (RCEP, ATIGA, CPTPP, etc.), the chamber of commerce that issues the CoO verifies your HS code. That happens as part of the process. So it's a free second opinion.
3. Your national customs authority.
Most major customs authorities offer a free or low-cost "advance ruling" or "tariff classification ruling" service for exporters. You apply with product details, they give you a written answer on the correct code. Examples: Royal Malaysian Customs (RMCD), Singapore Customs, US CBP, Japan Customs, EU member state authorities.
On your buyer's side (in their country)
1. Their freight forwarder or customs broker.
The forwarder or broker handling the import sees the code on the paperwork. They will flag it if something looks wrong before clearance.
2. Their national customs authority — the gold standard.
For high-value or recurring shipments, the importer can request a binding tariff ruling from destination customs before the shipment ships. This is the most reliable confirmation you can get.
Most major markets offer this:
- US — CBP eRulings
- EU — Binding Tariff Information (BTI)
- UK — Advance Tariff Rulings (ATaR)
- China — General Administration of Customs advance rulings
- Japan — Japan Customs advance rulings
- Australia — Tariff Advice
- Singapore — Singapore Customs classification rulings
A binding ruling locks the code in. If the buyer ships with that code, destination customs cannot reclassify it later. The ruling takes a few weeks to get, but it removes classification risk forever.
If you're moving five containers a year of the same product to the same destination, ask your buyer to apply for an advance ruling. It pays off after one shipment.
Putting it together
The four steps again:
- Describe your product in plain words and search
- Read the chapter description, not just the title
- Check classification risk
- Cross-check the duty rate
Run that loop for every product, every market, every quote.
It feels slow the first three times. By the tenth product, you'll do it in under five minutes.
And every five-minute check is one less duty surprise at your buyer's port. Which is one less awkward email after the container lands.
Yasmin Karim is the founder of XportStack and Popsmalaya, a Malaysian freeze-at-home sorbet brand shipping to 35 countries across 6 continents over 8 years.
Run every quote through the right HS code first.
XportStack's free tools include an HS code lookup, duty calculator, and FTA eligibility checker. Built for F&B brand owners, no signup needed.