Đọ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.

POSThttps://apibox.io.vn/v1/vn-einvoice

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ênVị tríKiểuBắt buộcMặc định
filebodyfilekhôngFile XML hóa đơn (multipart, body thô application/xml hoặc file_base64).
xmlbodystringkhôngNội dung XML dạng chuỗi thay cho file.
formatquery|bodystringkhôngjsonjson 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>'

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

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →