Tool descriptions start with an English sentence, followed by Vietnamese; tools accept Vietnamese product names.
Free, no account needed, daily limits
bao_loi — Report a system problem
No account needed (daily limits)
Reports a connection or system error of an OZ tool (with the maLuot code if available) to the operations team.
Example question: “phan_loai_hs just failed with a connection error; I have no maLuot.”
Example input (JSON):
{
"moTa": "phan_loai_hs failed with a connection error, no result returned",
"tenCongCu": "phan_loai_hs"
}
Output: Confirmation that the report reached the OZ operations team.
tim_ma_hs — Find HS codes by product name
No account needed (daily limits)
Search HS codes by Vietnamese product-name keywords; returns matching codes with basic duty rates.
Example question: “Find the HS code for a household water pump (máy bơm nước gia dụng).”
Example input (JSON):
{
"tuKhoa": "máy bơm nước gia dụng",
"gioiHan": 10
}
Output: Matching HS codes (up to 20), each with a description and basic duty rates.
tra_cay_hs — HS code tree
No account needed (daily limits)
The HS nomenclature tree around a 4-8 digit code: path, parent, siblings and children, including residual "other" lines.
Example question: “Where does HS 8471.30.20 sit in the tree, and which siblings are residual "other"?”
Example input (JSON):
{
"maHs": "8471.30.20"
}
Output: The node, path, parent, siblings (possibly marked loaiKhac) and children — quoted verbatim from hs-code-api.
tra_chu_giai — Read chapter and heading notes
No account needed (daily limits)
Chapter and heading notes of the Vietnam tariff nomenclature for an HS code.
Example question: “What do the notes for heading 85.17 say?”
Example input (JSON):
{
"maHs": "8517"
}
Output: The notes of the chapter/heading containing the code, with source.
tra_hieu_luc_van_ban — Legal document status
No account needed (daily limits)
Whether Vietnamese legal documents are in force, by document number: in force, expired, amended or replaced.
Example question: “Is Circular 85/2026/TT-BTC still in force?”
Example input (JSON):
{
"soHieu": [
"85/2026/TT-BTC"
]
}
Output: The status of each document number from hs-code-api's legal data.
tra_thue — Import duty lookup
No account needed (daily limits)
Vietnam import duty rates for an HS code (4-8 digits), optionally with a country of origin (2-letter code).
Example question: “What is the import duty for HS 8471.30.20 from China?”
Example input (JSON):
{
"maHs": "8471.30.20",
"xuatXu": "CN"
}
Output: The tariff line and its duty rates from hs-code-api's tariff data, with source and data licence.
tra_tien_le — Classification rulings
No account needed (daily limits)
Vietnam customs classification rulings (TB-TCHQ notices) by HS code or product description.
Example question: “Are there classification rulings for frozen pangasius fillets?”
Example input (JSON):
{
"moTa": "cá tra phi lê đông lạnh"
}
Output: Related rulings: notice number, the HS code assigned, a short product summary.
tra_y_kien_wco — WCO classification opinions
No account needed (daily limits)
WCO Compendium classification opinions by HS code; with an opinion number, the full text and a reference Vietnamese translation.
Example question: “Are there WCO classification opinions for subheading 8517.62?”
Example input (JSON):
{
"maHs": "8517.62"
}
Output: Opinions for the code, or the full text of one opinion with translation; always with the WCO copyright field (banQuyen).
Free, OZ account required
bo_sung_du_kien — Add facts to a queued job
OZ account required, no points charged
Adds the user's answers to a classification job reporting CAN_DU_KIEN and re-queues it — no extra points charged.
Example question: “Add to my job: 750 W power, cast-iron body.”
Example input (JSON):
{
"maLuot": "3f1c2a9e-8b7d-4c6e-9a5b-1d2e3f4a5b6c",
"boSung": "750 W, cast-iron body, for swimming pools"
}
Output: Re-queued confirmation with the estimated wait; ask again with the same receipt id.
gui_phan_hoi — Rate a result
OZ account required, no points charged
Rates an earlier result, optionally with the HS code you believe is correct. danhGia is one of: DUNG, DUNG_DUOC, SAI, KHONG_RO. ghiChu (up to 1,000 characters) is stored only if you have agreed to share data.
Example question: “That last result was wrong; the right code is 9004.10.”
Example input (JSON):
{
"maLuot": "3f1c2a9e-8b7d-4c6e-9a5b-1d2e3f4a5b6c",
"danhGia": "SAI",
"maHsDung": "9004.10"
}
Output: A feedback ID and whether your note was stored.
ket_qua_phan_loai — Check a queued classification
OZ account required, no points charged
Status and full result of a classification request that got a receipt (DANG_XU_LY / XONG / CAN_DU_KIEN / LOI). Status checks are free; points are charged once, on the receipt.
Example question: “Is my earlier classification request (receipt 3f1c…) done yet?”
Example input (JSON):
{
"maLuot": "3f1c2a9e-8b7d-4c6e-9a5b-1d2e3f4a5b6c"
}
Output: The job status; XONG carries the classification result (suggested code, alternatives, legal basis), CAN_DU_KIEN lists questions for the user, LOI confirms points were refunded.
ket_qua_soat — Check a queued code check
OZ account required, no points charged
Status and full result of a declaration code check that got a receipt (DANG_XU_LY / XONG / LOI). Free, needs an account, reads only your own runs; points are charged once, on the receipt. Lines that lack facts for the code check are listed separately.
Example question: “Is my earlier declaration code check (receipt 3f1c…) done yet?”
Example input (JSON):
{
"maLuot": "3f1c2a9e-8b7d-4c6e-9a5b-1d2e3f4a5b6c"
}
Output: The job status; XONG carries the full review result (seven groups per line, with K2 run) and the lines that need more facts, if any; LOI confirms points were refunded.
soat_to_khai — Review a declaration before filing
OZ account required, no points charged
Reviews each line of a draft declaration: description quality, duty rate against the tariff, ACFTA / Form E, licences and technical inspection by code, value sanity and technical file duties. Free, needs an account, rate-limited per hour and per day; no AI call. The description-to-HS-code check is not run here and is reported as not checked. Beta: not yet measured on real declarations.
Example question: “Review this declaration: air fryer 5L, code 8516.79.90, origin China, ACFTA claimed.”
Example input (JSON):
{
"loaiHinh": "A11",
"dongHang": [
{
"stt": 1,
"maHs": "85167990",
"moTa": "Air fryer 5L, 1500W, stainless steel body",
"xuatXu": "CN",
"triGia": {
"soTien": "1200.50",
"tienTe": "USD",
"dieuKien": "FOB"
},
"thueSuatKhai": {
"nk": "0",
"loai": "ACFTA"
},
"coFormE": false
}
]
}
Output: Per line: seven check groups (K1 to K7), each item with a status (pass, warning, error, not checked), evidence and sources; not-checked items always carry a reason. Includes a readiness level and the beta label. Not legal advice.
xem_tai_khoan — View account
OZ account required, no points charged
Remaining points, today's trial calls, daily quota and data-sharing consent status.
Example question: “Show my OZ account.”
Example input (JSON):
{}
Output: Points, trial calls left today (Vietnam time), quota, consent status.
yeu_cau_chuyen_gia_oz — Ask an OZ specialist to call back
OZ account required, no points charged
Asks an OZ customs specialist to call you back about a declaration review or HS-code dispute file you already ran. Free, needs an account, up to 5 requests a day. Needs a call-back phone number and your agreement to be contacted. The specialist can open the contents of that run only if you allow it, chosen again on each request; the internal notice never copies goods names or descriptions.
Example question: “This declaration is complicated, please have an OZ specialist call me back. They may view the review contents.”
Example input (JSON):
{
"maLuot": "3f1c2a9e-8b7d-4c6e-9a5b-1d2e3f4a5b6c",
"mucGap": "GAP",
"soDienThoai": "0901234567",
"choPhepXemNoiDung": true,
"dongYLienHe": true
}
Output: A request code like CG-YYMMDD-xxxx and whether a specialist was notified; the specialist calls back during office hours.
yeu_cau_dat_qua_oz — Ask OZ to quote an import
OZ account required, no points charged
Sends a request for OZ staff to contact you with a quote to import an item for you. Only when you agree to be contacted.
Example question: “I'd like OZ to quote importing 500 of these earphones; please contact me.”
Example input (JSON):
{
"tenHang": "Tai nghe bluetooth không dây",
"soLuong": "500 chiếc",
"dongYLienHe": true
}
Output: Confirmation that the request was recorded; OZ staff then contact you.
OZ account required, charged in points
dinh_danh_hang — Identify a product before classification
OZ account required; charged in points after trial calls
Before HS classification, run this tool to get an attribute frame (function, operating principle, module composition, synonyms vi/en/zh) with an evidence label HYPOTHESIS/CORROBORATED/VERIFIED and sources. On NEED_FACTS, ask the user the listed questions then call again.
Example question: “Identify: a sample-handling work-station, MBraun MB-200MOD, brand new.”
Example input (JSON):
{
"tenHang": "1 sample-handling work-station",
"model": "MBraun MB-200MOD",
"moTa": "brand new"
}
Output: Attribute frame (function/principle/composition/synonyms) with an evidence label and sources — does NOT include an HS code; the tool never locks an HS code, that's still phan_loai_hs's job.
kiem_ma_to_khai — Check descriptions against HS codes
OZ account required; charged in points from the first call
Checks whether the goods description on each line of a draft declaration matches the declared HS code, using AI classification (the K2 group the free review leaves as not checked). Charged per line in points, no trial calls; needs an account; up to 50 lines. Runs in the background: you get a receipt at once and ask for the result with that receipt. Failed runs are refunded in full. Beta: not yet measured on real declarations.
Example question: “Check whether these descriptions match their codes: air fryer 5L declared 8516.79.90, men's sunglasses declared 9004.10.00.”
Example input (JSON):
{
"dongHang": [
{
"stt": 1,
"maHs": "85167990",
"moTa": "Air fryer 5L, 1500W, stainless steel body",
"xuatXu": "CN"
},
{
"stt": 2,
"maHs": "90041000",
"moTa": "Men's sunglasses, plastic frame, UV lenses",
"xuatXu": "CN"
}
]
}
Output: A receipt with the job ID, line count and an estimated time. The result (retrieved later) has the same shape as the review: per line, the K2 group with a status (match, warning, not checked with a reason) and the GIR rules and legal basis quoted verbatim from the data source. Not legal advice.
phan_loai_hs — AI-assisted HS classification
OZ account required; charged in points after trial calls
Suggests HS codes from a text description (name, material, use, specifications).
Example question: “Classify: wireless bluetooth earphones, ABS plastic case, for music and calls.”
Example input (JSON):
{
"tenHang": "Tai nghe bluetooth không dây",
"chatLieu": "vỏ nhựa ABS",
"congDung": "nghe nhạc, đàm thoại khi kết nối điện thoại"
}
Output: A suggested HS code, alternative codes, the GIR rules applied (girRulesApplied) and the legal basis (canCuPhapLy) quoted verbatim from hs-code-api. A reference suggestion for the declarant to verify.
sinh_mo_ta_khai_bao — Generate customs declaration description
OZ account required; charged in points after trial calls
Generates a Circular 39/2018 customs declaration product description from an HS code and product details, with a compliance score.
Example question: “Write a declaration description for HS 8517.62.00: bluetooth earphones, brand X, origin CN.”
Example input (JSON):
{
"maHs": "8517.62.00",
"tenHang": "Tai nghe bluetooth không dây",
"thuongHieu": "X",
"xuatXu": "CN",
"chatLieu": "vỏ nhựa ABS",
"congDung": "nghe nhạc, đàm thoại"
}
Output: A suggested declaration description and compliance score from hs-code-api. A reference draft for the declarant to review before use.
soan_ho_so_giai_trinh — Draft an HS code explanation file
OZ account required; charged in points from the first call
Drafts an explanation file when the customs office applies an HS code different from the one declared: a draft letter, a comparison of the two codes, an argument outline, weak points to state plainly, supporting documents and a difficulty level. Legal basis (notes, GIR rules, provisions, WCO opinions, precedents) is quoted verbatim from the data; citations that do not match the basis are removed from the draft and listed separately. Paid per file, needs an account; re-running the same case within 24 hours is free up to two times. The customs text you paste is treated as data only. It takes no company name, tax code or declaration number: those places stay blank for you to fill in. A draft only: the declarant is responsible for what is filed with customs. Beta: not yet measured on real files.
Example question: “Customs applied code 8419.81.10 to my air fryer but I declared 8516.79.90. Draft an explanation for me.”
Example input (JSON):
{
"loai": "TRANH_CHAP_MA",
"maKhai": "85167990",
"maHaiQuan": "84198110",
"lyDoHaiQuan": "The goods are used to cook and warm food, so heading 84.19 applies.",
"moTaHang": "Air fryer 5L, 1500W, stainless steel body, heated by a resistance element and a convection fan",
"taiLieuCo": [
"catalogue"
],
"hanTraLoi": "2026-10-30"
}
Output: An evidence pack for each code, a comparison table, an argument outline (each point with its basis and confidence level), weak points, a draft letter with blanks, supporting documents, a difficulty level, a hint on whether to involve an expert, and the list of citations that were removed. Always carries the draft sentence and the beta label. Not legal advice.
tra_thu_tuc_nhap_khau — Import procedure lookup
OZ account required; charged in points after trial calls
Specialized inspections, licences and governing legal documents for an 8-digit HS code, with force status.
Example question: “What import procedures apply to HS 8471.30.20?”
Example input (JSON):
{
"maHs": "8471.30.20"
}
Output: Specialized inspections, licences, and governing documents with force status; a warning when no procedure data is available. Procedures are quoted verbatim from hs-code-api.
Frequently asked questions
Does it cost anything?
8 lookup tools work with no account, with daily limits. AI classification needs an account: daily trial calls (accounts created at sign-in: up to 500 trial calls), then points. Details on the pricing page.
Are the answers legally binding?
No. Answers are reference information, not legal advice, and not an opinion or ruling of any customs authority. Every result has nguon[] so you can check the original legal text in force; the declarant decides and is responsible for what is declared.
Is this a Vietnam Customs service?
Unofficial; not affiliated with the General Department of Vietnam Customs. It is operated by OZ, with data from OZ's HS lookup system (hs-code-api).
How do I get an account?
Sign in with Google or email: the first time you call a tool that needs an account, your assistant opens a sign-in page where you choose "Sign in with Google", or enter your email to get a one-time code (OTP). If OZ issued you an ozk_ key, send it when adding the connector. See Account.
Is my product description stored?
The gateway's logs do not record query text or product descriptions, only the length and a short hash. Descriptions are forwarded to hs-code-api to get the result; hs-code-api stores part of the description for operations. See the privacy policy.
What do the error codes mean?
VUOT_HAN_MUC: a limit was reached or the tool is paused; try later. CAN_TAI_KHOAN: the tool needs an OZ account. HET_DIEM: no trial calls or points left. DAU_VAO_SAI: invalid parameters (e.g. an HS code that is not 4–8 digits). BACKEND_LOI: the data service returned an error; try later; points held for the call are refunded.
Where does the data come from; can I reuse it?
From OZ's hs-code-api, licensed CC BY-SA 4.0; WCO classification opinions are an exception and are not under CC BY-SA. Results carry the licence and data version in nguon[] when available. See the data licence section of the terms.
Who is it for?
People declaring goods in Vietnam: importers and exporters, customs brokers, buyers of imported goods. Vietnamese product names give the closest results; English support is minimal.