Skip to content

MAXMIN API reference

OpenAPI 3.1.0 · version 1.0.0 · generated 27/09/2026

Base URL https://api.maxmin.vn (also https://maxmin.vn/v1/...). JSON in, JSON out. Machine-readable spec: OpenAPI 3.1. Field names are Vietnamese identifiers and stay stable; descriptions below come from the spec (Vietnamese).

  • Every calculation takes ngay_ap_dung (YYYY-MM-DD, Vietnam time); empty means today.
  • Money is whole VND. Each result carries giai_trinh: the steps and the legal basis.
  • Key (optional): Authorization: Bearer <key> or X-API-Key. Without a key: 30 requests/minute and 1,000/day per IP. Every response has X-RateLimit-* headers.

GET /healthz

Health check

curl
curl -s 'https://api.maxmin.vn/healthz'
Response fields (200)
FieldTypeDescription (VI)
trang_thai requiredstring
phien_ban requiredstring
commitstring
phien_ban_luat requiredstring

Status codes: 200 Sống

POST /v1/luong/gross-net

Gross to net salary, with insurance, PIT and employer cost

Từ lương gross ra lương net (thực nhận), kèm bảo hiểm, thuế, chi phí doanh nghiệp

Request body (JSON)

FieldTypeDescription (VI)
ngay_ap_dungstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ma_xastringThay cho vung (từ 01/07/2025: Phụ lục I Nghị định 128/2025, từ 01/01/2026: Nghị định 293/2025)
so_nguoi_phu_thuocinteger
default 0
dong_bhboolean
default true
false = không đóng bảo hiểm bắt buộc
dong_bhtnboolean
default true
kpcdboolean
default true
Tính kinh phí công đoàn 2% (phần doanh nghiệp)
thu_nhap_mien_thueintegerPhần miễn thuế nằm trong gross (ăn giữa ca trong mức
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
quoc_tich"viet_nam" | "nuoc_ngoai"
default "viet_nam"
nuoc_ngoai = người nước ngoài làm việc tại Việt Nam (không thuộc đối tượng BHTN).
gross requiredinteger
luong_dong_bhintegerTiền lương làm căn cứ đóng BH; mặc định = gross
curl -s https://api.maxmin.vn/v1/luong/gross-net \
  -H 'content-type: application/json' \
  -d '{"gross":30000000,"ngay_ap_dung":"2026-09-27","vung":"I","so_nguoi_phu_thuoc":1}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
grossinteger
netinteger
net_muc_tieuintegerChỉ có ở net-gross
lechintegernet - net_muc_tieu (net-gross)
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
bao_hiemobject | null
bh_nldinteger
thu_nhap_chiu_thueinteger
giam_tru_ban_thaninteger
giam_tru_nguoi_phu_thuocinteger
tong_giam_truinteger
thu_nhap_tinh_thueinteger
thue_tncninteger
bacinteger
chi_tiet_bacmảng object
chi_tiet_bac[].bacinteger
chi_tiet_bac[].tuinteger
chi_tiet_bac[].deninteger | null
chi_tiet_bac[].phannumber
chi_tiet_bac[].thue_suatnumber
chi_tiet_bac[].thuenumber
chi_phi_dnintegergross + BH doanh nghiệp + KPCĐ
thue_suat_hieu_dungnumber

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 413 Thân yêu cầu quá 64 KB · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/luong/net-gross

Net target to the smallest gross (whole VND) that reaches it

Từ lương net mong muốn ra gross nhỏ nhất (đồng nguyên) cho net >= mục tiêu

Request body (JSON)

FieldTypeDescription (VI)
ngay_ap_dungstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ma_xastringThay cho vung (từ 01/07/2025: Phụ lục I Nghị định 128/2025, từ 01/01/2026: Nghị định 293/2025)
so_nguoi_phu_thuocinteger
default 0
dong_bhboolean
default true
false = không đóng bảo hiểm bắt buộc
dong_bhtnboolean
default true
kpcdboolean
default true
Tính kinh phí công đoàn 2% (phần doanh nghiệp)
thu_nhap_mien_thueintegerPhần miễn thuế nằm trong gross (ăn giữa ca trong mức
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
quoc_tich"viet_nam" | "nuoc_ngoai"
default "viet_nam"
nuoc_ngoai = người nước ngoài làm việc tại Việt Nam (không thuộc đối tượng BHTN).
net requiredinteger
curl -s https://api.maxmin.vn/v1/luong/net-gross \
  -H 'content-type: application/json' \
  -d '{"net":25000000,"ngay_ap_dung":"2026-09-27","vung":"I"}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
grossinteger
netinteger
net_muc_tieuintegerChỉ có ở net-gross
lechintegernet - net_muc_tieu (net-gross)
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
bao_hiemobject | null
bh_nldinteger
thu_nhap_chiu_thueinteger
giam_tru_ban_thaninteger
giam_tru_nguoi_phu_thuocinteger
tong_giam_truinteger
thu_nhap_tinh_thueinteger
thue_tncninteger
bacinteger
chi_tiet_bacmảng object
chi_tiet_bac[].bacinteger
chi_tiet_bac[].tuinteger
chi_tiet_bac[].deninteger | null
chi_tiet_bac[].phannumber
chi_tiet_bac[].thue_suatnumber
chi_tiet_bac[].thuenumber
chi_phi_dnintegergross + BH doanh nghiệp + KPCĐ
thue_suat_hieu_dungnumber

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/bhxh

Compulsory social, health and unemployment insurance, employee and employer shares, union fee

BHXH, BHYT, BHTN phần người lao động và doanh nghiệp, kinh phí công đoàn

Request body (JSON)

FieldTypeDescription (VI)
luong_dong_bh requiredinteger
ngay_ap_dungstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ma_xastring
dong_bhtnboolean
default true
kpcdboolean
default true
quoc_tich"viet_nam" | "nuoc_ngoai"
default "viet_nam"
nuoc_ngoai = người nước ngoài làm việc tại Việt Nam (không thuộc đối tượng BHTN).
curl -s https://api.maxmin.vn/v1/bhxh \
  -H 'content-type: application/json' \
  -d '{"luong_dong_bh":60000000,"ngay_ap_dung":"2026-09-27","vung":"II"}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
luong_co_sointeger
luong_toi_thieu_vunginteger
tran_bhxh_bhytinteger
tran_bhtninteger
can_cu_bhxh_bhytinteger
can_cu_bhtninteger
nldobject
nld.bhxhinteger
nld.bhytinteger
nld.bhtninteger
nld.tonginteger
dnobject
dn.huu_tri_tu_tuatinteger
dn.om_dau_thai_saninteger
dn.tnld_bnninteger
dn.bhxhinteger
dn.bhytinteger
dn.bhtninteger
dn.tonginteger
kpcdinteger
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/thue-tncn

Monthly personal income tax on employment income (resident progressive, non-resident 20%, casual 10%)

Thuế TNCN một tháng từ tiền lương, tiền công (cư trú luỹ tiến, không cư trú 20%, vãng lai 10%)

Request body (JSON)

FieldTypeDescription (VI)
thu_nhap_chiu_thue requiredintegerThu nhập chịu thuế tháng (đã trừ khoản miễn thuế); với vang_lai là số tiền trả một lần
bao_hiem_bat_buocinteger
default 0
BHXH
so_nguoi_phu_thuocinteger
default 0
giam_tru_khacinteger
default 0
Hưu trí tự nguyện (trong trần), từ thiện... trong tháng
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
ngay_ap_dungstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
curl -s https://api.maxmin.vn/v1/thue-tncn \
  -H 'content-type: application/json' \
  -d '{"thu_nhap_chiu_thue":40000000,"bao_hiem_bat_buoc":4200000,"so_nguoi_phu_thuoc":2,"ngay_ap_dung":"2026-09-27"}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
doi_tuong"cu_tru" | "khong_cu_tru" | "vang_lai"
default "cu_tru"
cu_tru: cá nhân cư trú có hợp đồng lao động từ 3 tháng, khấu trừ theo biểu luỹ tiến sau giảm trừ. khong_cu_tru: cá nhân không cư trú, 20% trên thu nhập chịu thuế, không giảm trừ. vang_lai: không ký hợp đồng lao động hoặc hợp đồng dưới 3 tháng; khấu trừ 10% nếu mỗi lần trả từ ngưỡng trở lên.
thu_nhap_chiu_thueinteger
tong_giam_truinteger
thu_nhap_tinh_thueinteger
thue_tncninteger
bacinteger
thue_suatnumberThuế suất toàn phần (không cư trú 20%
chi_tiet_bacmảng object
chi_tiet_bac[].bacinteger
chi_tiet_bac[].tuinteger
chi_tiet_bac[].deninteger | null
chi_tiet_bac[].phannumber
chi_tiet_bac[].thue_suatnumber
chi_tiet_bac[].thuenumber

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/quyet-toan

Annual PIT finalisation for a resident: authorise employer or self-file, tax payable or refundable

Quyết toán thuế TNCN năm từ tiền lương, tiền công của cá nhân cư trú (uỷ quyền hay tự quyết toán, nộp thêm/hoàn)

Request body (JSON)

FieldTypeDescription (VI)
nam requiredintegerNăm tính thuế
thang requiredmảng objectTháng 1..12 theo thứ tự; thiếu = 0
thang[].tnctintegerThu nhập chịu thuế tại nơi trả lương (đã trừ miễn thuế)
thang[].bhintegerBH bắt buộc người lao động đã đóng
thang[].thueintegerThuế đã khấu trừ
thang[].nptintegerSố người phụ thuộc tính giảm trừ trong tháng
hd_3_thangboolean
default true
dang_lam_viecboolean
default true
noi_khac_tnctinteger
default 0
noi_khac_bhinteger
default 0
noi_khac_thueinteger
default 0
vang_lai_tninteger
default 0
vang_lai_thueinteger
default 0
huu_triinteger
default 0
tu_thieninteger
default 0
y_teinteger
default 0
giao_ducinteger
default 0
so_thang_gtinteger
default 12
de_nghi_hoanboolean
default true
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
naminteger
cach"uy_quyen" | "tu_quyet_toan" | "khong_phai"
duoc_uy_quyenboolean
ly_do_khong_uy_quyenmảng string
bo_vang_laiboolean
ket_quaobject
ket_qua.tnctinteger
ket_qua.bhinteger
ket_qua.gt_ban_thaninteger
ket_qua.gt_nptinteger
ket_qua.huu_triinteger
ket_qua.tu_thieninteger
ket_qua.y_te_giao_ducinteger
ket_qua.tong_giam_truinteger
ket_qua.tnttinteger
ket_qua.thueinteger
ket_qua.da_khau_truinteger
ket_qua.chenhinteger> 0 nộp thêm, < 0 nộp thừa
toan_boobject
toan_bo.tnctinteger
toan_bo.bhinteger
toan_bo.gt_ban_thaninteger
toan_bo.gt_nptinteger
toan_bo.huu_triinteger
toan_bo.tu_thieninteger
toan_bo.y_te_giao_ducinteger
toan_bo.tong_giam_truinteger
toan_bo.tnttinteger
toan_bo.thueinteger
toan_bo.da_khau_truinteger
toan_bo.chenhinteger> 0 nộp thêm, < 0 nộp thừa
tai_don_viobject
tai_don_vi.tnctinteger
tai_don_vi.bhinteger
tai_don_vi.gt_ban_thaninteger
tai_don_vi.gt_nptinteger
tai_don_vi.huu_triinteger
tai_don_vi.tu_thieninteger
tai_don_vi.y_te_giao_ducinteger
tai_don_vi.tong_giam_truinteger
tai_don_vi.tnttinteger
tai_don_vi.thueinteger
tai_don_vi.da_khau_truinteger
tai_don_vi.chenhinteger> 0 nộp thêm, < 0 nộp thừa
han_nopobject
han_nop.ngaystring (date)
han_nop.ghistring
ghi_chumảng string

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/bhxh-mot-lan

Điều kiện và mức hưởng bảo hiểm xã hội một lần (Điều 70, Điều 74 Luật BHXH 41/2024/QH15)

Request body (JSON)

FieldTypeDescription (VI)
ngay_tham_gia_dau requiredstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
ngay_tinhstring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
thang_truoc_2014integer
default 0
Số tháng đóng BHXH trước 01/2014
thang_tu_2014integer
default 0
Số tháng đóng BHXH từ 01/2014 trở đi
muc_binh_quan requiredintegerMức bình quân tiền lương tháng đóng BHXH (đã áp hệ số trượt giá
du_tuoi_chua_du_15_namboolean
default false
ra_nuoc_ngoai_dinh_cuboolean
default false
benh_hiem_ngheoboolean
default false
suy_giam_tu_81_phan_tramboolean
default false
nghi_12_thang_chua_du_20_namboolean
default false
Chỉ áp dụng cho người tham gia BHXH TRƯỚC 01/07/2025 (điều khoản chuyển tiếp)
curl -s https://api.maxmin.vn/v1/bhxh-mot-lan \
  -H 'content-type: application/json' \
  -d '{"ngay_tham_gia_dau":"2018-01-01","thang_truoc_2014":0,"thang_tu_2014":60,"muc_binh_quan":8000000,"du_tuoi_chua_du_15_nam":true}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
nhom"truoc-2025-07-01" | "tu-2025-07-01"
du_dieu_kienboolean
ly_do_dieu_kienstring
du_mot_nambooleanfalse: chưa đủ 1 năm đóng, cần số tiền thực đóng để tính, công cụ không tự tính
nam_truoc_2014number
nam_tu_2014number
muc_huonginteger

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

POST /v1/tro-cap-that-nghiep

Điều kiện, mức hưởng và số tháng hưởng trợ cấp thất nghiệp (Điều 38, 39 Luật Việc làm 74/2025/QH15)

Request body (JSON)

FieldTypeDescription (VI)
luong_dong_bhtn requiredmảng numberLương tháng đóng BHTN tối đa 6 tháng liền kề gần nhất trước khi nghỉ việc, mới nhất trước
thang_dong requirednumberTổng số tháng đã đóng BHTN liên tục chưa hưởng
thang_dong_trong_kynumberSố tháng đã đóng trong 24 tháng trước khi chấm dứt hợp đồng, nếu khác thang_dong
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
nha_nuocboolean
default false
Hưởng lương do Nhà nước quy định (chỉ còn hiệu lực trước 01/01/2026)
ngay_nghistring (date)YYYY-MM-DD, giờ Việt Nam. Bỏ trống = hôm nay.
curl -s https://api.maxmin.vn/v1/tro-cap-that-nghiep \
  -H 'content-type: application/json' \
  -d '{"luong_dong_bhtn":[10000000,10000000,10000000,10000000,10000000,10000000],"thang_dong":48,"vung":"I","ngay_nghi":"2026-09-27"}'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
du_dieu_kienboolean
ly_dostring
binh_quaninteger
muc_chua_traninteger
traninteger
bi_tranboolean
muc_thanginteger
so_thangnumber
thang_bao_luunumber
tonginteger
han_nopstring (date)
ngay_bat_dauintegerNgày làm việc thứ mấy kể từ ngày nộp đủ hồ sơ

Status codes: 200 Kết quả · 400 Đầu vào sai · 401 Khoá API sai hoặc hết hạn · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

GET /v1/vung-theo-xa

Vùng lương tối thiểu theo tên xã/phường, chấp nhận cả tên TRƯỚC sáp nhập 01/07/2025 lẫn tên MỚI

Query parameters

FieldTypeDescription (VI)
tim requiredstringTên xã/phường, cũ hoặc mới (không dấu cũng được)
ngay_ap_dungstring (date)
curl -s 'https://api.maxmin.vn/v1/vung-theo-xa?tim=...&ngay_ap_dung=2026-09-27'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
timstring
so_ket_quainteger
ket_quamảng object
ket_qua[].ma_xastring
ket_qua[].ten_xastring
ket_qua[].tinhstring
ket_qua[].vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ket_qua[].luong_toi_thieu_thanginteger
ket_qua[].luong_toi_thieu_giointeger
ket_qua[].tran_dong_bhxh_bhytinteger
ket_qua[].tu_ten_custringCó mặt nếu tìm thấy qua tên xã CŨ (trước 01/07/2025)
ket_qua[].huyen_custring
ket_qua[].tinh_custring
ket_qua[].cach_sap_xep"toan-bo" | "mot-phan" | "giu-nguyen" | "doi-ten"
ket_qua[].can_cu_vungstringDanh mục địa bàn áp dụng tại ngày: Phụ lục Nghị định 74/2024 (quận/huyện cũ), Phụ lục I Nghị định 128/2025, Phụ lục Nghị định 293/2025, hoặc bảo lưu khoản 7 Điều 15 Nghị định 128/2025. Rỗng khi không xác định được một vùng (vung rỗng, mức 0, xem ghi_chu)
ket_qua[].ghi_chustring

Status codes: 200 Kết quả · 400 Đầu vào sai · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

GET /v1/luong-toi-thieu

Regional minimum wage (monthly, hourly) on a date; look up the region by commune code or name

Lương tối thiểu vùng (tháng, giờ) tại ngày; tra vùng theo mã hoặc tên xã/phường, cả tên xã cũ trước sáp nhập (xa=), kèm vùng trước/sau

Query parameters

FieldTypeDescription (VI)
ngay_ap_dungstring (date)
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ma_xastringMã xã MỚI 5 chữ số (Cục Thống kê): vùng theo Phụ lục I Nghị định 128/2025 (01/07/2025-31/12/2025) hoặc Phụ lục Nghị định 293/2025 (từ 01/01/2026); trước 01/07/2025 báo lỗi, dùng xa=
timstringTìm xã/phường theo tên (không dấu cũng được)
xastringTên xã CŨ (trước 01/07/2025) hoặc MỚI (không dấu cũng được, có thể kèm huyện/tỉnh), hoặc mã 5 chữ số (mới hoặc cũ). Trả tra_xa: xã mới kèm vung_nd128 (Phụ lục I Nghị định 128/2025, 01/07/2025-31/12/2025) và vung_sau (Nghị định 293/2025, từ 01/01/2026); xã cũ kèm vung_truoc (Nghị định 74/2024, 01/07/2024-30/06/2025, theo quận/huyện cũ, có giai_doan khi quận/huyện sắp xếp từ 01/01/2025). Khi khớp đúng một xã (hoặc một kết quả chính xác), vung lấy theo ngày: 01/07/2024-30/06/2025 vùng trước; 01/07/2025-31/12/2025 vùng theo Phụ lục I Nghị định 128/2025, biết xã cũ thì áp bảo lưu khoản 7 Điều 15 (vùng trước cao hơn thì giữ); từ 01/01/2026 vùng sau, kèm khoản 5 Điều 5 Nghị định 293/2025 tính cụ thể (mức tại 31/12/2025 cao hơn thì cảnh báo số tiền). Nguồn: bảng chuyển đổi của Cục Thống kê, 34 Nghị quyết 1654-1687/NQ-UBTVQH15, luat/xa-cu-2025.json, luat/vung-nd74-2024.json, luat/vung-nd128-2025.json.
curl -s 'https://api.maxmin.vn/v1/luong-toi-thieu?ngay_ap_dung=2026-09-27&vung=I'
Response fields (200)
FieldTypeDescription (VI)
ngay_ap_dung requiredstring (date)
phien_ban_luat requiredstring
giai_trinh requiredmảng object
giai_trinh[].buoc requiredstring
giai_trinh[].cong_thuc requiredstring
giai_trinh[].ket_qua requirednumber
giai_trinh[].can_cumảng objectLuôn là mảng (có thể rỗng)
canh_baomảng string
tham_so_can_ra_soatmảng string
thangobject
gioobject
vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
xaobject
xa.mastring
xa.tenstring
xa.loai"xa" | "phuong" | "dac-khu"
xa.ma_tinhstring
xa.ten_tinhstring
xa.vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
xa.can_cu"liet-ke" | "con-lai"liet-ke = có tên trong Phụ lục; con-lai = thuộc mệnh đề 'các xã, phường còn lại'
xa.trang_phu_lucinteger
xa.trang_thai"da_kiem" | "can_ra_soat"Chỉ có khi cần rà soát (vd Phụ lục I Nghị định 128 ghi tên khác danh mục)
xa.ly_dostring
xa.ten_phu_lucstringTên đúng như Phụ lục ghi khi khác tên chính thức
ket_qua_timmảng object
ket_qua_tim[].mastring
ket_qua_tim[].tenstring
ket_qua_tim[].loai"xa" | "phuong" | "dac-khu"
ket_qua_tim[].ma_tinhstring
ket_qua_tim[].ten_tinhstring
ket_qua_tim[].vung"I" | "II" | "III" | "IV"Vùng lương tối thiểu nơi người sử dụng lao động hoạt động
ket_qua_tim[].can_cu"liet-ke" | "con-lai"liet-ke = có tên trong Phụ lục; con-lai = thuộc mệnh đề 'các xã, phường còn lại'
ket_qua_tim[].trang_phu_lucinteger
ket_qua_tim[].trang_thai"da_kiem" | "can_ra_soat"Chỉ có khi cần rà soát (vd Phụ lục I Nghị định 128 ghi tên khác danh mục)
ket_qua_tim[].ly_dostring
ket_qua_tim[].ten_phu_lucstringTên đúng như Phụ lục ghi khi khác tên chính thức
tra_xaobject
tra_xa.dau_vaostring
tra_xa.so_khopinteger
tra_xa.khopmảng object

Status codes: 200 Kết quả · 400 Đầu vào sai · 404 Không tìm thấy · 429 Vượt tốc độ hoặc hạn mức; xem đầu Retry-After

GET /v1/tham-so

Every legal parameter in force on a date, with its legal basis

Toàn bộ tham số luật có hiệu lực tại một ngày, kèm căn cứ

Query parameters

FieldTypeDescription (VI)
ngaystring (date)
tenstringChỉ lấy một tham số
lich_subooleantrue = trả cả lịch sử mọi mức
curl -s 'https://api.maxmin.vn/v1/tham-so?ngay=2026-09-27&ten=...'
Response fields (200)
FieldTypeDescription (VI)
ngaystring (date)
phien_ban_luatstring
giay_phepstring
tham_somảng object

Status codes: 200 Kết quả · 400 Đầu vào sai · 404 Không tìm thấy

GET /v1/thay-doi-luat

Machine-readable change log of the rules by effective date

Nhật ký thay đổi luật theo ngày hiệu lực (máy đọc được)

Query parameters

FieldTypeDescription (VI)
tustring (date)
denstring (date)
curl -s 'https://api.maxmin.vn/v1/thay-doi-luat?tu=2026-09-27&den=2026-09-27'
Response fields (200)
FieldTypeDescription (VI)
phien_ban_luatstring
thay_doimảng object
thay_doi[].ngay_hieu_lucstring (date)
thay_doi[].tham_sostring
thay_doi[].nhanstring
thay_doi[].cu
thay_doi[].moi
thay_doi[].van_banmảng string
thay_doi[].trang_thaistring

Status codes: 200 Kết quả

GET /v1/ca-kiem

The public test suite (CC BY 4.0) to measure your payroll software

Bộ ca kiểm công khai (CC BY 4.0) để đo phần mềm lương của bạn

curl -s 'https://api.maxmin.vn/v1/ca-kiem'

Status codes: 200 Bộ ca kiểm

POST /mcp

MCP server (Model Context Protocol), Streamable HTTP, JSON-RPC 2.0

Máy chủ MCP (Model Context Protocol), Streamable HTTP, JSON-RPC 2.0

Công cụ: tinh_luong_gross_net, tinh_luong_net_gross, tinh_bhxh, tinh_thue_tncn, tra_luong_toi_thieu, quyet_toan_tncn, tinh_bhxh_mot_lan, tinh_tro_cap_that_nghiep, tra_vung_theo_xa, tra_xa_cu_moi, tra_tham_so, tra_thay_doi_luat. Không giữ phiên; GET trả 405 (không mở luồng SSE). Hướng dẫn cấu hình Claude, ChatGPT, Cursor: mcp/HUONG-DAN.md trong kho.

Status codes: 200 Trả lời JSON-RPC · 202 Đã nhận notification

Webhook for rule changes specification only, not built

Instead of polling GET /v1/thay-doi-luat or feed.xml, register a URL and MAXMIN will POST to it as soon as a new entry appears in the change log.

Not built yet: needs a background worker plus a place to store registered URLs, unlike the rest of MAXMIN (stateless, in-RAM only). This is new infrastructure, so this section is a specification only, pending a decision from ALODEV before building it.

No new infrastructure is needed for the read-only path: RSS and changelog.json already work today (rebuilt as static files whenever the rules change) and work with any RSS reader or a periodic job that fetches JSON, no webhook required.