Đọc XML hóa đơn điện tử API
Chuyển XML hóa đơn điện tử (QĐ 1450/QĐ-TCT) thành JSON hoặc CSV: người bán, người mua, dòng hàng, thuế suất, tổng tiền, kèm kiểm tra số liệu và ký hiệu.
Gửi file XML của hóa đơn điện tử (định dạng QĐ 1450/QĐ-TCT mà mọi nhà cung cấp như MISA, Viettel, VNPT, BKAV, FPT… đều dùng). API đọc cấu trúc HDon / DLHDon, kể cả khi nằm trong thông điệp TDiep hoặc có tiền tố namespace, và trả về JSON gọn: mẫu số, ký hiệu, số và ngày hóa đơn, loại tiền, người bán và người mua (tên, MST, địa chỉ, tài khoản ngân hàng), từng dòng hàng (mã, tên, đơn vị tính, số lượng, đơn giá, chiết khấu, thành tiền, thuế suất), các nhóm thuế suất, phí và tổng tiền, mã của cơ quan thuế (MCCQT) và các chữ ký có trong file (chủ thể chứng thư, thời điểm ký). format=csv trả các dòng hàng dạng CSV để mở bằng Excel.
Mỗi hóa đơn được kiểm tra lại: số lượng × đơn giá − chiết khấu từng dòng, tổng các dòng theo từng thuế suất, tiền thuế = thành tiền × thuế suất, các dòng tổng cộng, và số tiền bằng chữ (TgTTTBChu) được đọc ngược thành số để so. Ký hiệu như 1C26TAA được giải nghĩa từng phần (hóa đơn GTGT, có mã của CQT, năm 2026, doanh nghiệp đăng ký sử dụng…) và đối chiếu với năm lập, theo TT 91/2026/TT-BTC (giữ cấu trúc của TT 32/2025 và TT 78/2021, thêm chữ F). MST được kiểm tra số kiểm tra.
Chữ ký số chỉ được liệt kê, không xác thực mật mã, và hóa đơn không được tra trên cổng của cơ quan thuế. File xử lý trong bộ nhớ (tối đa 5 MB) và không lưu lại.
Tham số
| Tên | Vị trí | Kiểu | Bắt buộc | Mặc định | |
|---|---|---|---|---|---|
file | body | file | không | File XML hóa đơn (multipart, body thô application/xml hoặc file_base64). | |
xml | body | string | không | Nội dung XML dạng chuỗi thay cho file. | |
format | query|body | string | không | json | json hoặc csv (các dòng hàng, UTF-8 có BOM). |
Ví dụ
curl -X POST "https://apibox.io.vn/v1/vn-einvoice" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/xml" \
--data-binary '<HDon><DLHDon Id="data"><TTChung><PBan>2.1.0</PBan><THDon>HÓA ĐƠN GIÁ TRỊ GIA TĂNG</THDon><KHMSHDon>1</KHMSHDon><KHHDon>C26TAA</KHHDon><SHDon>123</SHDon><NLap>2026-11-10</NLap><DVTTe>VND</DVTTe><HTTToan>TM/CK</HTTToan></TTChung>
<NDHDon><NBan><Ten>CÔNG TY TNHH THƯƠNG MẠI ABC</Ten><MST>0312345673</MST><DChi>12 Nguyễn Huệ, Phường Sài Gòn, TP. Hồ Chí Minh</DChi></NBan>
<NMua><Ten>CÔNG TY CỔ PHẦN XYZ</Ten><MST>0100109106</MST><DChi>1 Tràng Tiền, Phường Hoàn Kiếm, Hà Nội</DChi></NMua>
<DSHHDVu><HHDVu><TChat>1</TChat><STT>1</STT><THHDVu>Máy tính xách tay</THHDVu><DVTinh>Chiếc</DVTinh><SLuong>2</SLuong><DGia>15000000</DGia><ThTien>30000000</ThTien><TSuat>10%</TSuat></HHDVu>
<HHDVu><TChat>1</TChat><STT>2</STT><THHDVu>Dịch vụ cài đặt</THHDVu><DVTinh>Gói</DVTinh><SLuong>1</SLuong><DGia>1500000</DGia><STCKhau>150000</STCKhau><ThTien>1350000</ThTien><TSuat>8%</TSuat></HHDVu></DSHHDVu>
<TToan><THTTLTSuat><LTSuat><TSuat>10%</TSuat><ThTien>30000000</ThTien><TThue>3000000</TThue></LTSuat><LTSuat><TSuat>8%</TSuat><ThTien>1350000</ThTien><TThue>108000</TThue></LTSuat></THTTLTSuat>
<TgTCThue>31350000</TgTCThue><TgTThue>3108000</TgTThue><TgTTTBSo>34458000</TgTTTBSo><TgTTTBChu>Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng</TgTTTBChu></TToan></NDHDon></DLHDon></HDon>'const res = await fetch('https://apibox.io.vn/v1/vn-einvoice', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/xml',
},
body: "<HDon><DLHDon Id=\"data\"><TTChung><PBan>2.1.0</PBan><THDon>HÓA ĐƠN GIÁ TRỊ GIA TĂNG</THDon><KHMSHDon>1</KHMSHDon><KHHDon>C26TAA</KHHDon><SHDon>123</SHDon><NLap>2026-11-10</NLap><DVTTe>VND</DVTTe><HTTToan>TM/CK</HTTToan></TTChung>\n<NDHDon><NBan><Ten>CÔNG TY TNHH THƯƠNG MẠI ABC</Ten><MST>0312345673</MST><DChi>12 Nguyễn Huệ, Phường Sài Gòn, TP. Hồ Chí Minh</DChi></NBan>\n<NMua><Ten>CÔNG TY CỔ PHẦN XYZ</Ten><MST>0100109106</MST><DChi>1 Tràng Tiền, Phường Hoàn Kiếm, Hà Nội</DChi></NMua>\n<DSHHDVu><HHDVu><TChat>1</TChat><STT>1</STT><THHDVu>Máy tính xách tay</THHDVu><DVTinh>Chiếc</DVTinh><SLuong>2</SLuong><DGia>15000000</DGia><ThTien>30000000</ThTien><TSuat>10%</TSuat></HHDVu>\n<HHDVu><TChat>1</TChat><STT>2</STT><THHDVu>Dịch vụ cài đặt</THHDVu><DVTinh>Gói</DVTinh><SLuong>1</SLuong><DGia>1500000</DGia><STCKhau>150000</STCKhau><ThTien>1350000</ThTien><TSuat>8%</TSuat></HHDVu></DSHHDVu>\n<TToan><THTTLTSuat><LTSuat><TSuat>10%</TSuat><ThTien>30000000</ThTien><TThue>3000000</TThue></LTSuat><LTSuat><TSuat>8%</TSuat><ThTien>1350000</ThTien><TThue>108000</TThue></LTSuat></THTTLTSuat>\n<TgTCThue>31350000</TgTCThue><TgTThue>3108000</TgTThue><TgTTTBSo>34458000</TgTTTBSo><TgTTTBChu>Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng</TgTTTBChu></TToan></NDHDon></DLHDon></HDon>",
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://apibox.io.vn/v1/vn-einvoice",
headers={"Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/xml"},
data="<HDon><DLHDon Id=\"data\"><TTChung><PBan>2.1.0</PBan><THDon>HÓA ĐƠN GIÁ TRỊ GIA TĂNG</THDon><KHMSHDon>1</KHMSHDon><KHHDon>C26TAA</KHHDon><SHDon>123</SHDon><NLap>2026-11-10</NLap><DVTTe>VND</DVTTe><HTTToan>TM/CK</HTTToan></TTChung>\n<NDHDon><NBan><Ten>CÔNG TY TNHH THƯƠNG MẠI ABC</Ten><MST>0312345673</MST><DChi>12 Nguyễn Huệ, Phường Sài Gòn, TP. Hồ Chí Minh</DChi></NBan>\n<NMua><Ten>CÔNG TY CỔ PHẦN XYZ</Ten><MST>0100109106</MST><DChi>1 Tràng Tiền, Phường Hoàn Kiếm, Hà Nội</DChi></NMua>\n<DSHHDVu><HHDVu><TChat>1</TChat><STT>1</STT><THHDVu>Máy tính xách tay</THHDVu><DVTinh>Chiếc</DVTinh><SLuong>2</SLuong><DGia>15000000</DGia><ThTien>30000000</ThTien><TSuat>10%</TSuat></HHDVu>\n<HHDVu><TChat>1</TChat><STT>2</STT><THHDVu>Dịch vụ cài đặt</THHDVu><DVTinh>Gói</DVTinh><SLuong>1</SLuong><DGia>1500000</DGia><STCKhau>150000</STCKhau><ThTien>1350000</ThTien><TSuat>8%</TSuat></HHDVu></DSHHDVu>\n<TToan><THTTLTSuat><LTSuat><TSuat>10%</TSuat><ThTien>30000000</ThTien><TThue>3000000</TThue></LTSuat><LTSuat><TSuat>8%</TSuat><ThTien>1350000</ThTien><TThue>108000</TThue></LTSuat></THTTLTSuat>\n<TgTCThue>31350000</TgTCThue><TgTThue>3108000</TgTThue><TgTTTBSo>34458000</TgTTTBSo><TgTTTBChu>Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng</TgTTTBChu></TToan></NDHDon></DLHDon></HDon>".encode(),
timeout=30,
)
print(res.json())<?php
$ch = curl_init('https://apibox.io.vn/v1/vn-einvoice');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => ['Authorization: Bearer YOUR_API_KEY', 'Content-Type: application/xml'],
CURLOPT_POSTFIELDS => '<HDon><DLHDon Id="data"><TTChung><PBan>2.1.0</PBan><THDon>HÓA ĐƠN GIÁ TRỊ GIA TĂNG</THDon><KHMSHDon>1</KHMSHDon><KHHDon>C26TAA</KHHDon><SHDon>123</SHDon><NLap>2026-11-10</NLap><DVTTe>VND</DVTTe><HTTToan>TM/CK</HTTToan></TTChung>
<NDHDon><NBan><Ten>CÔNG TY TNHH THƯƠNG MẠI ABC</Ten><MST>0312345673</MST><DChi>12 Nguyễn Huệ, Phường Sài Gòn, TP. Hồ Chí Minh</DChi></NBan>
<NMua><Ten>CÔNG TY CỔ PHẦN XYZ</Ten><MST>0100109106</MST><DChi>1 Tràng Tiền, Phường Hoàn Kiếm, Hà Nội</DChi></NMua>
<DSHHDVu><HHDVu><TChat>1</TChat><STT>1</STT><THHDVu>Máy tính xách tay</THHDVu><DVTinh>Chiếc</DVTinh><SLuong>2</SLuong><DGia>15000000</DGia><ThTien>30000000</ThTien><TSuat>10%</TSuat></HHDVu>
<HHDVu><TChat>1</TChat><STT>2</STT><THHDVu>Dịch vụ cài đặt</THHDVu><DVTinh>Gói</DVTinh><SLuong>1</SLuong><DGia>1500000</DGia><STCKhau>150000</STCKhau><ThTien>1350000</ThTien><TSuat>8%</TSuat></HHDVu></DSHHDVu>
<TToan><THTTLTSuat><LTSuat><TSuat>10%</TSuat><ThTien>30000000</ThTien><TThue>3000000</TThue></LTSuat><LTSuat><TSuat>8%</TSuat><ThTien>1350000</ThTien><TThue>108000</TThue></LTSuat></THTTLTSuat>
<TgTCThue>31350000</TgTCThue><TgTThue>3108000</TgTThue><TgTTTBSo>34458000</TgTTTBSo><TgTTTBChu>Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng</TgTTTBChu></TToan></NDHDon></DLHDon></HDon>',
]);
$response = curl_exec($ch);
print_r(json_decode($response, true));Kết quả trả về
{
"invoice": {
"name": "HÓA ĐƠN GIÁ TRỊ GIA TĂNG",
"version": "2.1.0",
"template": "1",
"symbol": "C26TAA",
"number": "123",
"issue_date": "2026-11-10",
"currency": "VND",
"exchange_rate": null,
"payment_method": "TM/CK",
"tax_authority_code": null,
"provider_tax_code": null,
"id": "data",
"related_invoice": null
},
"symbol_info": {
"template": "1",
"symbol": "C26TAA",
"full": "1C26TAA",
"valid": true,
"errors": [],
"parts": {
"template": {
"value": "1",
"vi": "Hóa đơn giá trị gia tăng",
"en": "VAT invoice"
},
"authority_code": {
"value": "C",
"vi": "Hóa đơn có mã của cơ quan thuế",
"en": "With a tax authority code"
},
"year": {
"value": "26",
"year": 2026
},
"type": {
"value": "T",
"vi": "Hóa đơn do doanh nghiệp, tổ chức, hộ, cá nhân kinh doanh đăng ký sử dụng với cơ quan thuế",
"en": "Invoice registered with the tax authority by the seller"
},
"seller_code": {
"value": "AA",
"note": "Chosen by the seller to manage its invoice series"
}
}
},
"seller": {
"name": "CÔNG TY TNHH THƯƠNG MẠI ABC",
"tax_code": "0312345673",
"tax_code_check": {
"valid": true,
"kind": "organisation"
},
"address": "12 Nguyễn Huệ, Phường Sài Gòn, TP. Hồ Chí Minh"
},
"buyer": {
"name": "CÔNG TY CỔ PHẦN XYZ",
"tax_code": "0100109106",
"tax_code_check": {
"valid": true,
"kind": "organisation"
},
"address": "1 Tràng Tiền, Phường Hoàn Kiếm, Hà Nội"
},
"lines": [
{
"no": 1,
"kind": "1",
"kind_name": "goods/service",
"code": null,
"name": "Máy tính xách tay",
"unit": "Chiếc",
"quantity": 2,
"unit_price": 15000000,
"discount_rate": null,
"discount_amount": null,
"amount": 30000000,
"vat_rate": "10%",
"vat_amount": null
},
{
"no": 2,
"kind": "1",
"kind_name": "goods/service",
"code": null,
"name": "Dịch vụ cài đặt",
"unit": "Gói",
"quantity": 1,
"unit_price": 1500000,
"discount_rate": null,
"discount_amount": 150000,
"amount": 1350000,
"vat_rate": "8%",
"vat_amount": null
}
],
"vat_groups": [
{
"vat_rate": "10%",
"taxable_amount": 30000000,
"vat_amount": 3000000
},
{
"vat_rate": "8%",
"taxable_amount": 1350000,
"vat_amount": 108000
}
],
"fees": [],
"totals": {
"before_vat": 31350000,
"vat": 3108000,
"fees": null,
"trade_discount": null,
"total": 34458000,
"total_in_words": "Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng"
},
"signatures": {
"seller": null,
"buyer": null,
"tax_authority": null,
"note": "Signatures are listed, not verified cryptographically."
},
"valid": false,
"failed_checks": 1,
"checks": [
{
"check": "line 1: quantity × unit price − discount = amount",
"ok": true,
"expected": 30000000,
"actual": 30000000
},
{
"check": "VAT 8%: amount × rate = VAT",
"ok": true,
"expected": 108000,
"actual": 108000
},
{
"check": "total = before VAT + VAT + fees",
"ok": true,
"expected": 34458000,
"actual": 34458000
},
{
"check": "amount in words matches the total",
"ok": true,
"expected": "Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng",
"actual": "Ba mươi tư triệu bốn trăm năm mươi tám nghìn đồng",
"message": "words read as 34458000"
},
{
"check": "invoice symbol (ký hiệu) is well formed",
"ok": true,
"actual": "1C26TAA"
},
{
"check": "invoice with tax authority code carries <MCCQT>",
"ok": false,
"message": "No MCCQT element (the file may be the seller copy before the tax authority code was granted)"
}
],
"legal_basis": "Thông tư 91/2026/TT-BTC (from 01/07/2026; same symbol structure as TT 32/2025 and TT 78/2021) and NĐ 254/2026/NĐ-CP; XML: QĐ 1450/QĐ-TCT (amended by QĐ 1510/QĐ-TCT)",
"reviewed": "2026-11-11"
}
Ứng dụng
- Nhập hóa đơn đầu vào vào phần mềm kế toán
- Kiểm tra hóa đơn nhà cung cấp trước khi hạch toán
- Xuất dòng hàng ra Excel để đối chiếu
- Lập chỉ mục kho hóa đơn theo người bán, ngày, số tiền
Hỏi đáp
Hỗ trợ hóa đơn của nhà cung cấp nào?
Mọi nhà cung cấp theo QĐ 1450/QĐ-TCT (định dạng của cơ quan thuế). Trường riêng của từng hãng trong TTKhac được trả về dạng cặp khóa / giá trị.
Có xác thực chữ ký số không?
Không. API liệt kê chữ ký có trong file (chủ thể, thời điểm, thuật toán) nhưng không kiểm tra chuỗi chứng thư hay giá trị băm của XML.
Kiểm tra không đạt nghĩa là gì?
Có số tổng không khớp quá sai số làm tròn (1 đồng mỗi dòng), năm trong ký hiệu khác năm lập, MST sai số kiểm tra hoặc số tiền bằng chữ không khớp số tiền.
API liên quan
Metadata ảnh & EXIF
Đọc kích thước, định dạng, thông tin EXIF máy ảnh, thông số chụp và vị trí GPS của ảnh JPEG, PNG, WebP, HEIC, AVIF, GIF… – upload file hoặc qua URL.
PDFMetadata PDF
Đọc metadata file PDF: số trang, tiêu đề, tác giả, phần mềm tạo, ngày tạo, phiên bản PDF, mã hoá, số trường form và khổ giấy từng trang (A4, Letter…).
PDF₫Tạo PDF báo giá, phiếu thu
Tạo PDF báo giá, phiếu thu, đơn đặt hàng, hoá đơn bán hàng gọn đẹp từ JSON: tiếng Việt chuẩn, thuế GTGT, số tiền bằng chữ và mã VietQR để thanh toán.