Vietnam Minimum Wage API
Regional minimum wage in Vietnam (region I–IV, monthly and hourly) for any current ward, an old pre-2025 ward code or a province, for 2026 and 2027.
Look up which wage region (vùng I–IV) a phường, xã or đặc khu belongs to and its minimum wage: NĐ 293/2025/NĐ-CP in 2026 (5,310,000 / 4,730,000 / 4,140,000 / 3,700,000 đ per month) and NĐ 399/2026/NĐ-CP from 1/1/2027 (5,700,000 / 5,080,000 / 4,450,000 / 4,040,000 đ). Both appendices list the new administrative units after 1/7/2025 by name; every one of the 3,321 wards is mapped to its code, so the answer also shows the region from the next decree.
Send ward as a name (with province when the name exists in several provinces) or a 5-digit code, old_ward with a pre-2025 commune code (converted through the official merger table, including split communes), or only province to list its regions and the wards named in each. Without parameters you get the rates in force; date picks another day (2024-07-01 onwards for the rates).
Data is rebuilt from the decree appendices by a script that checks every name against the ward list.
Parameters
| Name | In | Type | Required | Default | |
|---|---|---|---|---|---|
ward | query | string | no | Current ward / commune name or 5-digit code. | |
province | query | string | no | Province (name or code); alone, lists its regions. | |
old_ward | query | string | no | Pre-2025 ward / commune code. | |
date | query | string | no | Date (default today). |
Example
curl "https://apibox.io.vn/v1/vn-min-wage?ward=Thục Phán&province=Cao Bằng" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-min-wage?ward=Thục Phán&province=Cao Bằng', {
method: 'GET',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
},
});
const data = await res.json();
console.log(data);import requests
res = requests.get(
"https://apibox.io.vn/v1/vn-min-wage?ward=Thục Phán&province=Cao Bằng",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-min-wage?ward=Thục Phán&province=Cao Bằng');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Response
{
"date": "2026-11-11",
"results": [
{
"ward": "Phường Thục Phán",
"ward_code": "01273",
"province": "Tỉnh Cao Bằng",
"province_code": "04",
"region": "III",
"monthly": 4140000,
"hourly": 20000,
"from_next_decree": {
"region": "III",
"monthly": 4450000,
"hourly": 21400,
"effective_from": "2027-01-01"
}
}
],
"decree": "293/2025/NĐ-CP",
"effective_from": "2026-01-01",
"effective_to": "2026-12-31",
"source": "https://lsvn.vn/danh-muc-dia-ban-ap-dung-muc-luong-toi-thieu-tu-ngay-01-01-2026-a165752.html",
"reviewed": "2026-11-11",
"upcoming": {
"decree": "399/2026/NĐ-CP",
"effective_from": "2027-01-01",
"monthly": {
"I": 5700000,
"II": 5080000,
"III": 4450000,
"IV": 4040000
},
"hourly": {
"I": 27400,
"II": 24400,
"III": 21400,
"IV": 19400
}
}
}
Use cases
- Check that contract wages respect the minimum wage in payroll
- Show the region of a workplace in an HR app
- Cap unemployment benefits in insurance calculators
- Answer "which region is my ward in" in a chatbot
FAQ
Are the wards after the 2025 merger supported?
Yes: both decrees list the new units, and every current ward code is mapped. Old codes work through old_ward.
What if a ward name exists in several provinces?
The answer has ambiguous: true and lists the candidates; add province or use the ward code.
Which decree applies to the region of a workplace?
The one in force on date: NĐ 293/2025 for 2026, NĐ 399/2026 from 1/1/2027. The region is where the employer (or branch) operates.
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.