Tính lương Gross ↔ Net API
Quy đổi lương gross ↔ net theo quy định Việt Nam: BHXH, BHYT, BHTN, giảm trừ gia cảnh, thuế TNCN từng bậc và chi phí doanh nghiệp, theo từng kỳ.
API tính lương quy đổi lương tháng theo cả hai chiều: từ gross sang net (gross=30000000) và từ số tiền thực nhận mong muốn ngược lại lương gross cần ghi trong hợp đồng (net=26215000). Kết quả có đủ từng bước: bảo hiểm bắt buộc của người lao động (BHXH 8%, BHYT 1,5%, BHTN 1%) kèm mức trần, thu nhập trước thuế, giảm trừ gia cảnh, thu nhập tính thuế, thuế theo từng bậc và chi phí của doanh nghiệp (BHXH 17%, TNLĐ-BNN 0,5%, BHYT 3%, BHTN 1%, kinh phí công đoàn 2% tuỳ chọn).
Các quy định được lưu kèm ngày hiệu lực và kỳ tính là tham số (date hoặc month), nên bảng lương các tháng trước được tính đúng quy định khi đó: biểu 7 bậc và giảm trừ 11 / 4,4 triệu đến hết 2025; biểu 5 bậc của Luật 109/2025/QH15 và giảm trừ 15,5 / 6,2 triệu (Nghị quyết 110/2025/UBTVQH15) từ kỳ tính thuế 2026; lương cơ sở (2,34 → 2,53 triệu từ 1/7/2026) cho mức trần 20 lần và lương tối thiểu vùng cho trần BHTN. Căn cứ pháp lý của từng giá trị được trả trong rules.
insurance_salary đặt mức lương đóng bảo hiểm khác (mặc định bằng gross), non_taxable loại trừ các khoản phụ cấp không chịu thuế, region (1–4) chọn vùng lương tối thiểu và resident=false áp dụng thuế suất 20% cho người không cư trú. Kết quả mang tính ước tính để lập kế hoạch và đối chiếu bảng lương; các trường hợp đặc thù (làm thêm giờ, thưởng, bảo hiểm của người nước ngoài) cần quy định riêng của bạn.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
gross | body|query | number | không | Lương gross tháng (VND); gửi gross hoặc net. | |
net | body|query | number | không | Lương net tháng (VND) để tìm lương gross. | |
dependents | body|query | number | không | 0 | Số người phụ thuộc đã đăng ký. |
region | body|query | number | không | 1 | Vùng lương tối thiểu 1–4 (cho trần BHTN). |
date | body|query | string | không | Kỳ lương, YYYY-MM-DD hoặc month=YYYY-MM (mặc định: hôm nay). Từ 07/2020. | |
insurance_salary | body|query | number | không | Lương đóng bảo hiểm (mặc định: bằng gross). | |
non_taxable | body|query | number | không | 0 | Phần thu nhập không chịu thuế trong gross (phụ cấp ăn trưa…). |
insurance | body|query | boolean | không | true | false: không đóng bảo hiểm bắt buộc. |
resident | body|query | boolean | không | true | false: cá nhân không cư trú, thuế 20%. |
union_fund | body|query | boolean | không | false | Cộng kinh phí công đoàn 2% vào chi phí doanh nghiệp. |
Ví dụ
curl "https://apibox.io.vn/v1/vn-salary?gross=30000000&dependents=1&month=2026-11" \
-H "Authorization: Bearer YOUR_API_KEY"const res = await fetch('https://apibox.io.vn/v1/vn-salary?gross=30000000&dependents=1&month=2026-11', {
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-salary?gross=30000000&dependents=1&month=2026-11",
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-salary?gross=30000000&dependents=1&month=2026-11');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY'],
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"period": "2026-11",
"mode": "gross_to_net",
"region": 1,
"gross": 30000000,
"net": 26592500,
"insurance": {
"salary": 30000000,
"bhxh": 2400000,
"bhyt": 450000,
"bhtn": 300000,
"total": 3150000,
"caps": {
"bhxh_bhyt": 50600000,
"bhtn": 106200000
}
},
"income_before_tax": 26850000,
"deductions": {
"personal": 15500000,
"dependents": 6200000,
"dependent_count": 1,
"non_taxable_income": 0,
"total": 21700000
},
"taxable_income": 5150000,
"personal_income_tax": 257500,
"tax_brackets": [
{
"from": 0,
"to": 10000000,
"rate": 0.05,
"amount": 5150000,
"tax": 257500
}
],
"employer": {
"bhxh": 5100000,
"tnld_bnn": 150000,
"bhyt": 900000,
"bhtn": 300000,
"total": 6450000,
"total_cost": 36450000
},
"rules": {
"personal_deduction": 15500000,
"dependent_deduction": 6200000,
"deduction_ref": "Nghị quyết 110/2025/UBTVQH15",
"tax_table": "Luật Thuế TNCN 109/2025/QH15 (5 bậc, áp dụng từ kỳ tính thuế 2026)",
"base_salary": 2530000,
"region_min_wage": 5310000,
"…": "…"
},
"notes": []
}
Ứng dụng
- Công cụ tính lương trên trang tuyển dụng, trang nhân sự
- Đối chiếu phiếu lương, file xuất bảng lương
- Thư mời nhận việc: tìm lương gross cho mức net đã thoả thuận
- Ước tính tổng chi phí doanh nghiệp cho một vị trí
Hỏi đáp
Năm 2026 dùng biểu thuế nào?
Biểu 5 bậc (5%, 10%, 20%, 30%, 35%) của Luật Thuế TNCN 109/2025/QH15 áp dụng cho thu nhập từ tiền lương của kỳ tính thuế 2026, cùng mức giảm trừ 15,5 triệu cho bản thân và 6,2 triệu cho mỗi người phụ thuộc. Các kỳ từ 2025 trở về trước dùng biểu 7 bậc.
Vì sao lương cao thì bảo hiểm thấp hơn 10,5%?
BHXH và BHYT có mức trần bằng 20 lần lương cơ sở (50,6 triệu từ 1/7/2026), BHTN có trần bằng 20 lần lương tối thiểu vùng. Mức trần đã áp dụng có trong insurance.caps.
Net → gross được tính thế nào?
API tìm mức gross nhỏ nhất cho ra số net không thấp hơn số yêu cầu với cùng quy định, nên kết quả chính xác đến từng đồng.
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.