Vietnam Label Rules API
Mandatory label content for goods sold in Vietnam (Decree 37/2026), 69 product groups, the Vietnamese sticker for imports, date rules and a label checker.
Pick a product group (group=cosmetics, food, toy, textile, electrical_electronic… 69 groups of Appendix I of Decree 37/2026/NĐ-CP), give an HS code (hs_code=9503, mapped to the usual group) or describe the product (q=nồi cơm điện), and say whether the goods are made in Vietnam or imported (origin=domestic|import). The API lists every field the label must show with its legal source: the general content of Article 42 (name, responsible party or manufacturer + importer, origin) plus the group content of Appendix I (quantity, production date, expiry, ingredients, warnings, year of production…), mandatory phrases such as "Thực phẩm bảo vệ sức khỏe", the date rules of Article 46 / Appendix III, the allowed origin wording of Article 47 and, for imports, the auxiliary label (nhãn phụ) rules of Article 40.
Send the label you have as label (JSON: name, manufacturer, importer, origin, quantity, mfg_date, expiry, ingredients, lot…) and the response adds a check: missing fields, invalid values (dates not in day-month-year order or without 2-digit day and month, a 2-digit year of production, an expiry before the production date, an origin without "Sản xuất tại / Made in…" or with a country code on the Vietnamese label) and warnings. For imports it also returns aux_label_lines, the Vietnamese sticker text in order, ready for label-pdf (template aux).
Decree 37/2026/NĐ-CP (23 January 2026) replaced Decrees 43/2017 and 111/2021; labels printed under the old decrees may be used until 23 January 2028. The table is hand-entered from the decree text and reviewed every 6 months. Specialised rules (drugs, food safety, cosmetics notification, vehicles) can add requirements: this is a reference summary, not legal advice.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
group | body|query | string | no | Product group id (Appendix I), e.g. food, cosmetics, toy, textile, electrical_electronic, or its number 1–69. Without any parameter the 69 groups are listed. | |
hs_code | body|query | string | no | HS code (2–10 digits) to suggest the group. | |
q | body|query | string | no | Product words (Vietnamese or English) to find the group. | |
origin | body|query | string | no | domestic | domestic or import (adds manufacturer + importer and the auxiliary label rules). |
label | body | object | no | Label fields to check: name, responsible, manufacturer, importer, origin, quantity, mfg_date, mfg_month_year, mfg_year, expiry, ingredients, warnings, instructions, storage, lot, registration, specs, phrase… |
Example
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));Response
{
"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…)."
}
Use cases
- Prepare the Vietnamese sticker for imported cosmetics or food
- Check a product label before printing a new packaging run
- Validate seller listings on a marketplace for missing label data
- Map HS codes of a customs declaration to label requirements
FAQ
Which decree does it follow?
Decree 37/2026/NĐ-CP, Chapter IV and Appendices I and III, in force since 23/01/2026. It replaced Decrees 43/2017/NĐ-CP and 111/2021/NĐ-CP.
How do I find the right product group?
Use group=<id>, an HS code or q=<product words>. Goods that fit several groups are labelled by their main use (Article 42.1.d); the API returns suggestions when unsure.
Does it check the date format?
Yes: day, month, year in that order, 2-digit day and month, a 4-digit year of production, durations like "30 tháng kể từ NSX" only next to a production date, and expiry not before production.
Related APIs
JSON Validator
Check JSON syntax with exact line and column of errors, and validate data against a JSON Schema (draft 4, 7, 2019-09 or 2020-12).
{ }JSON Formatter
Pretty print JSON with 0-8 spaces or tabs, minify it, or sort object keys recursively. Syntax errors are reported with line and column.
CSVCSV to JSON
Convert CSV into an array of JSON objects using the header row, with delimiter auto-detection, number and boolean typing, and row-level errors.