Quy định nhãn hàng hoá API
Nội dung bắt buộc trên nhãn hàng hoá theo NĐ 37/2026 cho 69 nhóm hàng, nhãn phụ hàng nhập khẩu, cách ghi NSX/HSD, xuất xứ và kiểm tra nhãn có sẵn.
Chọn nhóm hàng (group=cosmetics, food, toy, textile, electrical_electronic… 69 nhóm theo Phụ lục I Nghị định 37/2026/NĐ-CP), gửi mã HS (hs_code=9503, ánh xạ sang nhóm thường gặp) hoặc mô tả sản phẩm (q=nồi cơm điện), và cho biết hàng sản xuất trong nước hay nhập khẩu (origin=domestic|import). API trả về từng nội dung bắt buộc kèm căn cứ: nội dung chung của Điều 42 (tên hàng, tổ chức chịu trách nhiệm hoặc nhà sản xuất + nhà nhập khẩu, xuất xứ) cộng nội dung theo nhóm ở Phụ lục I (định lượng, NSX, HSD, thành phần, cảnh báo, năm sản xuất…), cụm từ bắt buộc như "Thực phẩm bảo vệ sức khỏe", quy tắc ghi ngày của Điều 46 / Phụ lục III, cách ghi xuất xứ của Điều 47 và quy định nhãn phụ (Điều 40) với hàng nhập khẩu.
Gửi nhãn đang có trong label (JSON: name, manufacturer, importer, origin, quantity, mfg_date, expiry, ingredients, lot…), kết quả có thêm check: trường còn thiếu, giá trị sai (ngày không theo thứ tự ngày-tháng-năm hoặc ngày, tháng không đủ 2 chữ số, năm sản xuất chỉ 2 chữ số, HSD trước NSX, xuất xứ thiếu cụm "Sản xuất tại / Made in…" hoặc ghi mã nước trên nhãn tiếng Việt) và cảnh báo. Với hàng nhập khẩu còn có aux_label_lines: nội dung nhãn phụ tiếng Việt theo thứ tự, dùng thẳng cho label-pdf (mẫu aux).
Nghị định 37/2026/NĐ-CP (23/01/2026) thay thế NĐ 43/2017 và NĐ 111/2021; nhãn, bao bì in theo quy định cũ được dùng đến hết 23/01/2028. Bảng dữ liệu nhập tay từ văn bản nghị định, rà soát 6 tháng một lần. Luật chuyên ngành (dược, an toàn thực phẩm, công bố mỹ phẩm, xe cơ giới) có thể yêu cầu thêm: đây là bản tóm tắt tham khảo, không phải tư vấn pháp lý.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
group | body|query | string | không | Mã nhóm hàng (Phụ lục I), ví dụ food, cosmetics, toy, textile, electrical_electronic, hoặc số thứ tự 1–69. Không gửi tham số nào: trả về danh sách 69 nhóm. | |
hs_code | body|query | string | không | Mã HS (2–10 chữ số) để gợi ý nhóm. | |
q | body|query | string | không | Tên / mô tả sản phẩm (tiếng Việt hoặc Anh) để tìm nhóm. | |
origin | body|query | string | không | domestic | domestic hoặc import (thêm nhà sản xuất + nhà nhập khẩu và quy định nhãn phụ). |
label | body | object | không | Các trường nhãn cần kiểm tra: name, responsible, manufacturer, importer, origin, quantity, mfg_date, mfg_month_year, mfg_year, expiry, ingredients, warnings, instructions, storage, lot, registration, specs, phrase… |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/vn-label-rules" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"group":"cosmetics","origin":"import","label":{"name":"Serum dưỡng da","manufacturer":{"name":"ABC Cosmetics Co., Ltd","address":"Seoul, Korea"},"importer":{"name":"Công ty TNHH XYZ","address":"Hà Nội"},"origin":"Made in KR","quantity":"30 ml","ingredients":"Water, Glycerin","lot":"L2301","expiry":"01/05/2027","instructions":"Thoa lên da"}}'const res = await fetch('https://apibox.io.vn/v1/vn-label-rules', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"group": "cosmetics",
"origin": "import",
"label": {
"name": "Serum dưỡng da",
"manufacturer": {
"name": "ABC Cosmetics Co., Ltd",
"address": "Seoul, Korea"
},
"importer": {
"name": "Công ty TNHH XYZ",
"address": "Hà Nội"
},
"origin": "Made in KR",
"quantity": "30 ml",
"ingredients": "Water, Glycerin",
"lot": "L2301",
"expiry": "01/05/2027",
"instructions": "Thoa lên da"
}
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-label-rules",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"group": "cosmetics", "origin": "import", "label": {"name": "Serum dưỡng da", "manufacturer": {"name": "ABC Cosmetics Co., Ltd", "address": "Seoul, Korea"}, "importer": {"name": "Công ty TNHH XYZ", "address": "Hà Nội"}, "origin": "Made in KR", "quantity": "30 ml", "ingredients": "Water, Glycerin", "lot": "L2301", "expiry": "01/05/2027", "instructions": "Thoa lên da"}},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-label-rules');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => '{"group":"cosmetics","origin":"import","label":{"name":"Serum dưỡng da","manufacturer":{"name":"ABC Cosmetics Co., Ltd","address":"Seoul, Korea"},"importer":{"name":"Công ty TNHH XYZ","address":"Hà Nội"},"origin":"Made in KR","quantity":"30 ml","ingredients":"Water, Glycerin","lot":"L2301","expiry":"01/05/2027","instructions":"Thoa lên da"}}',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"group": {
"id": "cosmetics",
"no": 14,
"vi": "Mỹ phẩm",
"en": "Cosmetics",
"note": "The expiry date is mandatory when the product is stable for less than 30 months."
},
"origin": "import",
"required_fields": [
{
"key": "name",
"required": true,
"vi": "Tên hàng hóa",
"en": "Product name",
"source": "Điều 42 khoản 1 điểm a"
},
{
"key": "manufacturer",
"required": true,
"vi": "Tên, địa chỉ tổ chức, cá nhân sản xuất",
"en": "Manufacturer name and address",
"source": "Điều 42 khoản 1 điểm b, Điều 44 khoản 2"
},
"…"
],
"check": {
"valid": false,
"missing": [
{
"field": "warnings",
"vi": "Thông tin, cảnh báo",
"en": "Warnings",
"source": "Phụ lục I mục 14"
}
],
"invalid": [
{
"field": "origin",
"value": "Made in KR",
"issue": "\"KR\" looks like a country code: on the Vietnamese label the country name is not abbreviated (Điều 39 khoản 1); abbreviations per TCVN 7217-1 are only accepted on the original label of imports (Điều 42 khoản 2)"
}
],
"warnings": [],
"present": [
"name",
"manufacturer",
"importer",
"origin",
"quantity",
"ingredients",
"lot",
"expiry",
"instructions"
]
},
"aux_label_lines": [
{
"key": "name",
"label": "Tên hàng",
"value": "Serum dưỡng da"
},
{
"key": "manufacturer",
"label": "Nhà sản xuất",
"value": "ABC Cosmetics Co., Ltd, Seoul, Korea"
},
{
"key": "importer",
"label": "Nhập khẩu và phân phối",
"value": "Công ty TNHH XYZ, Hà Nội"
},
{
"key": "origin",
"label": "Xuất xứ",
"value": "Hàn Quốc"
},
"…"
],
"legal": {
"decree": "Nghị định 37/2026/NĐ-CP (quy định chi tiết Luật Chất lượng sản phẩm, hàng hóa), Chương IV, Phụ lục I và III",
"effective_from": "2026-01-23",
"replaces": [
"Nghị định 43/2017/NĐ-CP",
"Nghị định 111/2021/NĐ-CP"
],
"reviewed": "2026-11-11"
},
"disclaimer": "Reference summary, not legal advice; check the official text of Nghị định 37/2026/NĐ-CP and the specialised rules (drugs, food safety, cosmetics…)."
}
Ứng dụng
- Soạn nội dung nhãn phụ cho mỹ phẩm, thực phẩm nhập khẩu
- Rà soát nhãn sản phẩm trước khi in bao bì mới
- Kiểm tra listing của người bán trên sàn có thiếu thông tin nhãn
- Đối chiếu mã HS trên tờ khai với yêu cầu ghi nhãn
Hỏi đáp
API theo nghị định nào?
Nghị định 37/2026/NĐ-CP, Chương IV và Phụ lục I, III, hiệu lực từ 23/01/2026, thay thế NĐ 43/2017/NĐ-CP và NĐ 111/2021/NĐ-CP.
Làm sao chọn đúng nhóm hàng?
Dùng group=<mã nhóm>, mã HS hoặc q=<tên sản phẩm>. Hàng thuộc nhiều nhóm thì ghi nhãn theo công dụng chính (Điều 42 khoản 1 điểm d); API trả về các nhóm gợi ý khi chưa chắc.
Có kiểm tra cách ghi ngày không?
Có: thứ tự ngày, tháng, năm; ngày và tháng 2 chữ số; năm sản xuất 4 chữ số; HSD dạng "30 tháng kể từ NSX" phải kèm NSX; HSD không được trước NSX.
API liên quan
Kiểm tra JSON
Kiểm tra cú pháp JSON, báo đúng dòng và cột bị lỗi, và validate dữ liệu theo JSON Schema (draft 4, 7, 2019-09 hoặc 2020-12).
{ }Định dạng JSON
Làm đẹp JSON với thụt lề 0-8 dấu cách hoặc tab, rút gọn (minify) hoặc sắp xếp key theo bảng chữ cái. Báo lỗi cú pháp kèm dòng và cột.
CSVCSV sang JSON
Chuyển CSV thành mảng object JSON theo dòng tiêu đề, tự nhận dấu phân cách, tự chuyển số và boolean, báo lỗi từng dòng.