How to use TariffOS
From the file already sitting in your inbox to a source-linked brief your customs broker can act on. The core import, report and brief work without an account; account-only features are marked where they appear.
Measure dataset verified as of 2026-06-12. The figures in your own report are computed in your browser from your own file.
Choose where to start
No file ready yet
Answer three questions and open a clearly labelled fictional dashboard for a business like yours.
Build a tailored exampleHave a CSV or TSV
Run the real workflow in your browser. No account, template or upload is needed.
Start an import1. What TariffOS answers
Four questions, in the order they usually get asked:
- Which official U.S. tariff measures hit which of my products? Matched on HTS code and country of origin against a curated dataset where every measure links to its own Federal Register notice, proclamation or CBP guidance.
- What is that costing me? From your entered value and duties paid where you supply them — never from a rate we guessed.
- What changes next? Effective dates, expiries, comment deadlines and court rulings on the positions you actually hold.
- What should I ask my broker? The gaps in your own data, turned into specific questions with the reason each one matters.
TariffOS is not customs advice and does not replace your broker. Classification, valuation and origin remain your responsibility as importer of record under CBP’s reasonable-care standard. Everything here is designed to make the conversation with a licensed broker shorter and better evidenced — not to substitute for it.
2. Before you start: get the right file
Start with a CSV or TSV; there is no template. What you bring decides what you can be told, so the inputs are ranked. If you can get the first one, get the first one.
Best by far. Already carries the HTS codes you were classified under, the duties you actually paid and the entry dates — the only input that lets us reconcile what you were charged and flag possible refunds.
Usually has HTS codes and duty amounts, but not entry numbers, so lines cannot be tied back to specific entries.
Product names and costs, rarely HTS codes, customs entered value or origin. We classify what we can and you confirm in batches; costs can support scenarios but not a customs-value or duty total.
A spreadsheet you maintain by hand is fine. Columns are matched on their contents, so headers do not need to be tidy.
The email to send your broker
Brokers field this request constantly. One that names the report and the period gets answered; one that asks for “our import data” gets a phone call. You are asking only for your own filings.
Subject: ACE entry summary extract request Hi [broker], Could you send me an extract of our entry summary (CBP 7501) data for the last 12 months, as CSV or Excel? Ideally with these columns: - entry number and entry date - HTS number as filed (10 digits) - country of origin - line description - entered value - duty paid (including any Section 301 / 232 amounts, broken out if you have them) Our own filings only — nothing else needed. Thanks.
3. Step 1 — Run your first import
Go to /import and drop the file. There is no account, no template and no field mapping to fill in first.
Your file is not uploaded
It is read by JavaScript running in your own tab. It never reaches a TariffOS server, so there is nothing for us to store, leak, or be asked to hand over. This is also why no signup is needed to see a result — and why closing the tab discards it.
Columns are identified by what is in them, not what they are called. A column of ten-digit numbers is read as an HTS code whether its header says “HTS”, “Code”, or nothing at all — files with no header row work too. The result names what it thinks the file is and what evidence it used.
4. Step 2 — Check how your columns were read
Press Check columns on the result bar. Each column shows the field it was mapped to, the evidence for that decision, and a sample value. Anything that was read from contents against its header is flagged read from contents.
Correct anything wrong with the dropdown, or set it to Not used. Every figure on the page recomputes immediately. This costs thirty seconds and is the single highest-value check in the whole flow — a mis-read entered-value or duty column changes the headline, while a mis-read cost changes downstream scenarios.
5. Step 3 — Read the headline number
The big number is not always the same number. Which one you get depends entirely on what your file could support, and the page tells you which one you are looking at.
| If your file has | The headline is | Why |
|---|---|---|
| Duties paid (plus entered value for a rate) | Duties recorded in the file, and an effective rate when entered value is present | Nothing is modelled — the effective rate is duties paid divided by entered value from the same file. |
| Entered value, but no duty total | Entered value in the file on products hit by measures collecting duties now | The file can support customs-value exposure, but not what was charged. The page points at duty-paid entry data as the fix. |
| No entered value or duties paid | A count: products hit by measures collecting now, out of your total | Unit cost × volume is product spend, not customs entered value, so TariffOS does not turn it into an exposure dollar figure. HTS + origin matching still works. |
Why there is no duty rate next to a measure
This is the question this product gets asked most, and the answer is deliberate. Tariff measures do not reduce to one number. A Section 232 action can carry different rates by product, by quota status and by whether an exclusion is in force; a Section 301 list stacks on top of the ordinary rate; an IEEPA action may apply to some ten-digit codes within a heading and not others.
So TariffOS stores rates as the published prose says them, shows that prose, and links the notice it came from. It never multiplies a guessed rate by your value to manufacture a figure. When you supply duties actually paid, the effective rate you see is arithmetic on your own two numbers and nothing else.
Below the headline you also get: measures matched, upcoming deadlines, potential recovery flags, and how many of your rows are classified. The recovery flag is a count of struck-down measures touching your positions — never a dollar amount, because those measures apply origin-wide and an entry total does not break duties out by measure. Take a flag to a licensed broker or trade attorney; only they can file.
Press Open the full report to move the parsed rows into the editable catalog workspace. That working copy is stored in this browser’s local storage, not uploaded to TariffOS, so it can survive a reload on this device. You can stay on the import screen instead if your next task is the brief or alert request below.
6. Step 4 — Clear the classification queue
Rows without an HTS code cannot be checked against product-specific measures — only country-wide ones. Rather than a list of hundreds, they are grouped by product similarity, so one decision classifies a whole group. Confirm with Apply to N.
The product text matched a heading unambiguously. Still yours to confirm, but the CROSS check is usually quick.
A good match with a plausible alternative heading. Read the rationale before applying.
A weak match offered so you have somewhere to start. Treat it as a hypothesis to test against rulings, not an answer.
Suggestions are at heading level and are a starting point, not a classification. Every group links out to CROSS ruling search and to the HTS schedule for exactly this reason: you are responsible for the final code. A confirmed suggestion stays marked as a suggestion throughout the report, and the brief lists it as a gap until a real code replaces it.
7. Step 5 — Think in positions, not SKUs
Fifty SKUs of the same shirt from the same country are one tariff position. TariffOS rolls your rows up into distinct HTS + origin combinations, and everything downstream — the brief, watchlist and any future position alert — works on those.
This is not a display choice. Alerting per SKU would bury the signal it exists to deliver: a single Section 301 change would fire fifty notifications for one decision. A catalog of 400 rows commonly collapses to a dozen positions, and a dozen positions is something a person can actually hold in their head.
8. Step 6 — Build the broker brief
Press Build a broker-ready brief. This is the artefact you forward — to a CFO, a procurement lead, or your customs broker — so it is written to be read by someone who has never seen TariffOS. Use Print / save as PDF on the brief itself to send it; the PDF contains the brief alone, without the app around it.
What it contains, in order:
- The headline with its footing stated — duties paid if you supplied them, entered-value exposure when the file supports it, otherwise a product count.
- What is affecting these positions — each measure in force, its status, the rate exactly as published, which of your positions it touches, its dates, and a link to the official source.
- Excluded pending verification — measures that touch your positions but whose recorded status no longer matches their own dates. They are not counted in any figure, and they are listed anyway, because omitting them silently would understate your exposure.
- Your positions — a table of HTS + origin, products, entered value, duties paid, and status.
- What is stopping a firm answer — every data gap written as a consequence and a fix, not a label. “Only 6 digits, so a 301 list can match a product it does not cover” rather than “short HTS”.
- Questions to send your customs broker — the point of the document, each with the reason it matters.
The gaps section is deliberately as prominent as the findings. A brief that hid its own uncertainty would be worse than no brief, because it would be acted on.
9. Step 7 — Save the watchlist and request alerts
At the bottom of the result, add an email to save your positions and join the position-alert early access list. Note where this sits: your result is already complete and on screen. The email never unlocks a number you have already earned.
What gets saved — and what is not live yet
TariffOS stores the email plus the specific HTS codes and origins you requested; the uploaded file still does not leave the browser. Automated position-alert delivery is in early access and is not promised by this form today. When it is enabled, only a measure the dataset can stand behind will be eligible to trigger it; a status that needs verification cannot tell you to act.
10. With an account: catalog, analyst, weekly brief
Everything above works signed out. An account exists for the things that need to persist between visits.
The same import, kept server-side so your positions survive the tab closing and can feed the account’s analyst and weekly brief.
Four tabs over your saved catalog: Overview (the same deterministic exposure engine as the public report), Chat for questions about your own positions, Repricing for what a duty change does to your margin, and Sourcing for comparing origins.
Generated Mondays for subscribers with products in their catalog, and archived here. On a free plan this shows a locked state rather than a fabricated sample.
Plans and current limits are on /pricing. Paid plans are in limited rollout and are activated by request — creating an account does not charge you, and hitting a limit stops the limited action rather than deleting anything.
11. Reference: the public measure library
No account, no import. Useful on its own, and the source record behind every measure match in your report.
- Latest changes— What moved recently, newest first.
- Deadlines— Effective dates, expiries and comment windows that are coming up.
- Countries— Every measure by country of origin.
- Search— Across measures, countries and HTS codes.
- Methodology— Where the data comes from, how status is verified, and what is deliberately not covered.
- /hs/<code>— everything touching an HTS chapter or heading, e.g. /hs/8708 for motor vehicle parts.
- /measures/<slug>— one measure in full: timeline, rates as published, legal authority, challenges, and every source.
12. Reference: the free calculators
Standalone tools for a single question. They do not need a file or an account.
- Impact scanner— One HTS code plus one origin — which measures match, right now.
- Import duty calculator— Landed cost from customs value, freight, insurance and a rate you supply.
- Consumer price impact— What a tariff rate does to a shelf price at a given pass-through.
- Policy tracker— Live Federal Register trade announcements.
- Savings simulator— Two duty rates compared over your annual volume.
The calculators take a rate from you. They are arithmetic tools; the measure library is where rates come from, and it states them as published.
13. How to read a measure page
Every measure carries two independent labels. Status is where it stands in its lifecycle; signal strength is how legally solid the evidence is. They answer different questions, and conflating them is how people act on a press remark as though it were implementation guidance.
Status
| threatened | Stated intent only. No legal instrument exists. |
| announced | A formal instrument was issued, but duties are not being collected yet. |
| proposed | A formal process is underway — investigation, review or comment period. |
| in_effect | Duties are being collected now. |
| paused | Suspended by agreement or order, with or without an expiry date. |
| reinstated | Resumed after a pause or a withdrawal. |
| reduced | Still in effect, at a lower rate than before. |
| withdrawn | Abandoned, either before or after taking effect. |
| expired | Lapsed under its own terms, such as a statutory sunset. |
| struck_down | Invalidated by a final court ruling. Shown struck through. |
| stayed | A court has put enforcement, or a ruling, on hold. |
Signal strength, weakest first
| statement | A verbal remark, social media post or press comment. Nothing is filed. |
| executive_order | A signed executive order or proclamation, before publication. |
| federal_register_notice | Published in the Federal Register. |
| cbp_guidance | CBP has issued implementation instructions. Your broker can act on this. |
| enacted_law | A statute passed by Congress. |
From federal_register_notice upward, a compliance-relevant instrument exists. Below it, something has been said but nothing has been filed. Measures also carry a status verified date — the day a person last confirmed the status specifically. If a measure’s own dates contradict its recorded status, it is demoted at runtime and excluded from collecting counts and exposure figures rather than quietly counted.
14. Troubleshooting
- Almost none of my rows got classified.
- Your file probably has no HTS column. That is normal for a store or accounting export. Work the grouped queue on the import page — one confirmation classifies every row in a group — or ask your broker for an entry extract, which arrives already classified.
- A column was read as the wrong field.
- Open "Check columns" on the result. Columns are matched on their contents rather than their headers, so a column titled "Code" holding 10-digit numbers is read as an HTS code even if it meant something else. Change it in the dropdown and every figure recomputes.
- My entered-value or duty total looks too low.
- Open "Check columns" and confirm the entered-value and duties-paid fields. TariffOS sums only figures present in those fields; it does not fill missing customs values from unit costs, volumes or industry assumptions.
- A measure I know about is not counted.
- Look for the "Excluded pending verification" section on the brief. A measure whose recorded status no longer matches its own dates is listed but never counted, because this document gets acted on. Open the measure and check its source.
- My HTS code matched a measure I do not think applies.
- Check the digit count. Section 301 lists and 232 inclusions are drawn at 8 and 10 digits, so a 6-digit code can match a measure that does not cover your product. Use the full 10-digit code from your entry summary.
- I closed the tab and lost my result.
- The import screen itself is temporary. Re-drop the file, or press "Open the full report" before leaving; that keeps a working copy in this browser’s local storage. Saving an alert request keeps only the HTS + origin positions and your email, not the uploaded file.
15. What TariffOS will not do
Worth knowing up front, because each of these is a decision rather than a missing feature:
- Infer a duty rate from a measure, or multiply one by your value to produce a figure.
- Turn unit cost × volume into customs entered value. Exposure dollars require entered value or duties paid from your file.
- Report a measure as collecting when its own dates contradict that status.
- Put a dollar amount on refund exposure — those measures apply origin-wide, and an entry total does not break duties out by measure.
- Show a sample or placeholder result in place of a real one. Where there is nothing to show, you get an empty state that says so.
- Give you a classification. It suggests headings, links the rulings, and leaves the decision where the law puts it.
- File anything with CBP. A refund or correction goes to a licensed broker or trade attorney.
Ready to run it
Drop a file and see the result. No account, nothing uploaded.