Bỏ qua tới nội dung

Tài liệu API MAXMIN

OpenAPI 3.1.0 · phiên bản 1.0.0 · sinh ngày 27/09/2026

MAXMIN trả về con số lương, thuế thu nhập cá nhân, bảo hiểm bắt buộc đúng luật Việt Nam tại đúng ngày áp dụng, kèm giai_trinh: từng bước tính và văn bản căn cứ (số hiệu, điều khoản, ngày hiệu lực).

- Mọi phép tính nhận ngay_ap_dung (YYYY-MM-DD, giờ Việt Nam). Bỏ trống = hôm nay theo giờ Việt Nam. - API không nhận dữ liệu định danh (tên, CCCD, MST): chỉ nhận con số. - Tiền là số nguyên đồng; mỗi khoản làm tròn tới đồng (nửa đồng làm tròn lên), tổng = cộng các khoản đã làm tròn. - Tham số chưa đối chiếu được nguyên văn văn bản gốc có trang_thai: can_ra_soat; kết quả dùng tham số đó liệt kê nó trong tham_so_can_ra_soat. - Bảng tham số luật và bộ ca kiểm: giấy phép CC BY 4.0. Mã nguồn: xem kho.

Khoá API: gửi Authorization: Bearer <khoa> hoặc X-API-Key: <khoa>. Không có khoá vẫn gọi được ở bậc ẩn danh (hạn mức theo IP). Đầu trả lời luôn có X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Địa chỉ gốc https://api.maxmin.vn (hoặc https://maxmin.vn/v1/...). Tài liệu máy đọc: OpenAPI 3.1; bản đọc tương tác: /docs.

GET /healthz

curl
curl -s 'https://api.maxmin.vn/healthz'
Các trường trả về (200)
TrườngKiểuMô tả
trang_thai bắt buộcstring
phien_ban bắt buộcstring
commitstring
phien_ban_luat bắt buộcstring

Mã trả về: 200 Sống

POST /v1/luong/gross-net

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

Thân yêu cầu (JSON)

TrườngKiểuMô tả
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
mặc định 0
dong_bhboolean
mặc định true
false = không đóng bảo hiểm bắt buộc
dong_bhtnboolean
mặc định true
kpcdboolean
mặc định 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"
mặc định "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"
mặc định "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 bắt buộcinteger
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}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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"
mặc định "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

Mã trả về: 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

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

Thân yêu cầu (JSON)

TrườngKiểuMô tả
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
mặc định 0
dong_bhboolean
mặc định true
false = không đóng bảo hiểm bắt buộc
dong_bhtnboolean
mặc định true
kpcdboolean
mặc định 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"
mặc định "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"
mặc định "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 bắt buộcinteger
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"}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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"
mặc định "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

Mã trả về: 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

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

Thân yêu cầu (JSON)

TrườngKiểuMô tả
luong_dong_bh bắt buộcinteger
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
mặc định true
kpcdboolean
mặc định true
quoc_tich"viet_nam" | "nuoc_ngoai"
mặc định "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"}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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

Mã trả về: 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

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%)

Thân yêu cầu (JSON)

TrườngKiểuMô tả
thu_nhap_chiu_thue bắt buộcintegerThu 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
mặc định 0
BHXH
so_nguoi_phu_thuocinteger
mặc định 0
giam_tru_khacinteger
mặc định 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"
mặc định "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"}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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"
mặc định "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

Mã trả về: 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

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)

Thân yêu cầu (JSON)

TrườngKiểuMô tả
nam bắt buộcintegerNăm tính thuế
thang bắt buộcmả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
mặc định true
dang_lam_viecboolean
mặc định true
noi_khac_tnctinteger
mặc định 0
noi_khac_bhinteger
mặc định 0
noi_khac_thueinteger
mặc định 0
vang_lai_tninteger
mặc định 0
vang_lai_thueinteger
mặc định 0
huu_triinteger
mặc định 0
tu_thieninteger
mặc định 0
y_teinteger
mặc định 0
giao_ducinteger
mặc định 0
so_thang_gtinteger
mặc định 12
de_nghi_hoanboolean
mặc định true
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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

Mã trả về: 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)

Thân yêu cầu (JSON)

TrườngKiểuMô tả
ngay_tham_gia_dau bắt buộcstring (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
mặc định 0
Số tháng đóng BHXH trước 01/2014
thang_tu_2014integer
mặc định 0
Số tháng đóng BHXH từ 01/2014 trở đi
muc_binh_quan bắt buộcintegerMứ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
mặc định false
ra_nuoc_ngoai_dinh_cuboolean
mặc định false
benh_hiem_ngheoboolean
mặc định false
suy_giam_tu_81_phan_tramboolean
mặc định false
nghi_12_thang_chua_du_20_namboolean
mặc định 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}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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

Mã trả về: 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)

Thân yêu cầu (JSON)

TrườngKiểuMô tả
luong_dong_bhtn bắt buộcmả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 bắt buộcnumberTổ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
mặc định 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"}'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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ơ

Mã trả về: 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

Tham số truy vấn

TrườngKiểuMô tả
tim bắt buộcstringTê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'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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

Mã trả về: 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

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

Tham số truy vấn

TrườngKiểuMô tả
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'
Các trường trả về (200)
TrườngKiểuMô tả
ngay_ap_dung bắt buộcstring (date)
phien_ban_luat bắt buộcstring
giai_trinh bắt buộcmảng object
giai_trinh[].buoc bắt buộcstring
giai_trinh[].cong_thuc bắt buộcstring
giai_trinh[].ket_qua bắt buộcnumber
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

Mã trả về: 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

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

Tham số truy vấn

TrườngKiểuMô tả
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=...'
Các trường trả về (200)
TrườngKiểuMô tả
ngaystring (date)
phien_ban_luatstring
giay_phepstring
tham_somảng object

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

GET /v1/thay-doi-luat

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

Tham số truy vấn

TrườngKiểuMô tả
tustring (date)
denstring (date)
curl -s 'https://api.maxmin.vn/v1/thay-doi-luat?tu=2026-09-27&den=2026-09-27'
Các trường trả về (200)
TrườngKiểuMô tả
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

Mã trả về: 200 Kết quả

GET /v1/ca-kiem

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'

Mã trả về: 200 Bộ ca kiểm

POST /mcp

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.

Mã trả về: 200 Trả lời JSON-RPC · 202 Đã nhận notification

Webhook báo luật đổi đặc tả, chưa triển khai

Thay vì tự gọi lại GET /v1/thay-doi-luat hay theo dõi feed.xml định kỳ, đăng ký một URL để MAXMIN tự POST tới đó ngay khi có một mục mới xuất hiện trong nhật ký thay đổi luật (tệp nguồn luat/thay-doi-luat.json, sinh bởi maxmin xuat-nhat-ky).

Chưa triển khai: cần một tiến trình chạy nền để theo dõi thay đổi và một nơi lưu danh sách URL đã đăng ký (khác với phần còn lại của MAXMIN, vốn không cần DB, không giữ trạng thái quá một lần chạy). Đây là việc hạ tầng mới, nên phần này CHỈ LÀ ĐẶC TẢ, chờ CEO quyết định trước khi dựng.

Đăng ký

POST /v1/webhooks
{
  "url": "https://vi-du.cong-ty.vn/hook/maxmin",
  "bi_mat": "chuoi-bi-mat-de-ky-HMAC (tuy chon nhung nen co)",
  "nhom": ["luong", "bao-hiem", "thue-tncn"],   // rong = tat ca nhom
  "email_lien_he": "[email protected]"              // de bao khi webhook loi lien tuc
}
-> 201 {"id": "wh_...", "url": "...", "trang_thai": "cho_xac_nhan"}

Xác nhận sở hữu URL trước khi kích hoạt (chống SSRF/spam): MAXMIN gọi thử POST url với {"loai":"xac_nhan","ma":"..."}, endpoint phải trả lại đúng ma trong 10 giây thì mới chuyển trang_thai sang hoat_dong.

Gửi khi có thay đổi

POST <url đã đăng ký>
Headers: Content-Type: application/json
         X-Maxmin-Signature: sha256=<HMAC-SHA256(body, bi_mat) dạng hex>
         X-Maxmin-Delivery: <id lần gửi, để chống xử lý trùng>
Body:    { "phien_ban_luat": "...", "thay_doi": [ { ...một mục của /v1/thay-doi-luat... } ] }

Thử lại theo hàm mũ (1 phút, 5 phút, 30 phút, 2 giờ, 12 giờ) tối đa 5 lần nếu endpoint không trả 2xx trong 10 giây; sau 5 lần liên tiếp thất bại thì tạm khoá webhook và báo email_lien_he. Có GET /v1/webhooks/{id} (xem lịch sử gửi) và DELETE /v1/webhooks/{id} (huỷ đăng ký).

Không cần backend mới cho phần chỉ đọc: RSS và changelog.json đã chạy được ngay (build tĩnh lại mỗi khi luật đổi), dùng được với mọi trình đọc RSS hoặc job định kỳ tự tải JSON, không cần chờ webhook.