Tài liệu API Hóa đơn điện tử Matbao-Invoice
Tài liệu cung cấp đầy đủ thông tin kỹ thuật kết nối trực tiếp cổng phát hành Hóa đơn điện tử theo chuẩn Tổng Cục Thuế (Thông tư 78/NĐ 123).
Môi trường Hệ thống (Base URL)
Hệ thống cung cấp hai môi trường hoạt động biệt lập phục vụ kiểm thử và phát hành thực tế.
| Môi trường | Cấu hình URL | Thông tin Tài khoản Demo Hệ thống |
|---|---|---|
| Thông tin Demo (Sandbox) | https://demo-api-hddt.matbao.in:11443 |
MST: 0302712571-999 TDNhap: admin MKhau: Gtybf@12sd Trang quản lý: demo.matbao.in (User: demo / Pass: demo@123!) |
| Thông tin Production | https://api-hddt.matbao.in:11443 | Xem trực tiếp trên mục cấu hình API trang quản lý hóa đơn Production để lấy MST, TDNhap, MKhau. |
1. Đăng nhập hệ thống (api/auth/login)
Tham số dữ liệu Request Body
| Tên trường | Định nghĩa ý nghĩa | Độ dài tối đa | Kiểu dữ liệu | Ràng buộc |
|---|---|---|---|---|
| MST | Mã số thuế đăng nhập doanh nghiệp | 20 | Chuỗi ký tự | Bắt buộc |
| TDNhap | Tên đăng nhập hệ thống | 50 | Chuỗi ký tự | Bắt buộc |
| MKhau | Mật khẩu đăng nhập bảo mật | 50 | Chuỗi ký tự | Bắt buộc |
{
// Request Body
"MST": "string",
"TDNhap": "string",
"MKhau": "string"
}
// Response Body
{
"Success": true,
"Data": "<Dữ liệu api trả về / Chuỗi AccessToken>",
"ErrorCode": "<Trống hoặc Mã lỗi>",
"Message": "<Thông báo thành công hoặc thất bại>"
}
2.a. Danh sách mẫu hóa đơn (api/invoice/templates)
Thông tin trường dữ liệu
| Tên trường | Định nghĩa | Độ dài tối đa | Kiểu dữ liệu | Ràng buộc |
|---|---|---|---|---|
| year | Năm lấy mẫu hóa đơn (Query Parameter) | 4 | Số | Bắt buộc |
| KHMSHDon | Mẫu số ký hiệu hóa đơn | 6 | Chuỗi ký tự | - |
| KHHDon | Ký hiệu hóa đơn | 6 | Chuỗi ký tự | - |
| SLuong | Tổng số lượng hóa đơn | 21 | Số | - |
| CLai | Số lượng hóa đơn còn lại | 21 | Số | - |
2.b. Tạo mới hóa đơn (api/invoice/create-invoice)
Bảng định nghĩa dữ liệu chi tiết khối Header
| Tên trường | Định nghĩa ý nghĩa & Logic quy định của Thuế | Độ dài tối đa | Kiểu dữ liệu | Ràng buộc |
|---|---|---|---|---|
| LoaiHDon | Loại hóa đơn thiết lập: 0 - Hóa đơn nháp | 1 - Tạo và ký phát hành ngay | 10 | Số | - |
| TCHDon | Tính chất hóa đơn: 0: Hóa đơn mới, 1: Thay thế, 2: Điều chỉnh tăng, 3: Điều chỉnh giảm, 4: Điều chỉnh thông tin, 5: Điều chỉnh tăng và giảm | 5 | Số | Bắt buộc |
| KTraMTChieuTrung | Kiểm tra MTChieu trùng: 0-Không ktra | 1-Trùng không import | 2-Trùng xóa bản chưa phát hành | 1 | Số | - |
| DVTTe | Đơn vị tiền tệ chính (704: VND, 840: USD, 124: CAD) | 3 | Số | Bắt buộc |
| TGia | Tỷ giá quy đổi dòng tiền thanh toán | 7,2 | Số | Bắt buộc |
| KHMSHDon | Mẫu số ký hiệu hóa đơn chuẩn Tổng Cục Thuế | 6 | Chuỗi ký tự | - |
| KHHDon | Ký hiệu chuỗi series quản lý hành chính | 6 | Chuỗi ký tự | - |
| NMua_Ten | Tên khách hàng hoặc tên đơn vị doanh nghiệp mua hàng | 400 | Chuỗi ký tự | - |
| NMua_MST | Mã số thuế của cá nhân/doanh nghiệp mua hàng | 14 | Chuỗi ký tự | - |
| NMua_DChi | Địa chỉ nơi đăng ký kinh doanh người mua | 400 | Chuỗi ký tự | - |
| TgThTien / TgTThue | Tổng số tiền trước thuế / Tổng số tiền thuế GTGT toàn đơn | 21,6 | Số | Bắt buộc |
| TgTTTBSo / TgTTTBChu | Tổng tiền thanh toán cuối cùng viết bằng Số / bằng Chữ | - | Số / Chuỗi | Bắt buộc |
Thông tin Hàng hóa Dịch vụ lồng nhau (DSHHDVu)
| Tên trường trường con | Định nghĩa cấu trúc logic | Kiểu dữ liệu | Ràng buộc |
|---|---|---|---|
| DSHHDVu/TChat | 1: Hàng hóa/dịch vụ | 2: Khuyến mãi | 3: Chiết khấu | 4: Ghi chú | 5: Đặc trưng | Số | Bắt buộc |
| DSHHDVu/THHDVu | Tên chi tiết danh mục hàng hóa dịch vụ cung cấp | Chuỗi ký tự | Bắt buộc |
| DSHHDVu/SLuong / DGia | Số lượng / Đơn giá gốc (Định dạng số thập phân 21,6) | Số | Bắt buộc |
| DSHHDVu/TSuat | Mã thuế suất: -2: KKKNT | -1: KCT | 0: 0% | 5: 5% | 8: 8% | 10: 10% | Số | Bắt buộc |
2.c. Xóa bỏ hóa đơn (api/invoice/cancel-invoice)
MaSoHDon: Mã số hóa đơn (INVID mã hóa), độ dài 50 ký tự, Bắt buộc.
2.d. Tạo thông báo hóa đơn sai sót mẫu 04 (api/invoice/create-template-04)
Sử dụng khi cần khai báo thông tin giải trình mẫu 04 gửi Tổng cục thuế đối với danh sách hóa đơn lỗi hệ thống nội bộ.
2.e. Tải file XML và PDF của hóa đơn (api/invoice/download-invoice)
Yêu cầu bắt buộc các tham số: MaTraCuu (Chuỗi 100) và MaSoHDon (Chuỗi 50).
2.f. Lấy danh sách chi tiết hóa đơn (api/invoice/invoice-detail)
Tra cứu dải danh sách dựa theo khoảng thời gian TNLap và DNLap (Định dạng bắt buộc: yyyy-MM-dd).
2.g. Ký hóa đơn nháp (api/invoice/sign-invoice)
URL: POST <BaseUrl>/api/invoice/sign-invoice
Tham số đầu vào: MaSoHDon (Chuỗi 50, Bắt buộc).
2.h. Lấy XML hóa đơn chưa ký (api/invoice/get-xml-not-sign)
URL: GET <BaseUrl>/api/invoice/get-xml-not-sign?MaSoHDon=<MaSoHDon>
Trả về cấu trúc chuỗi XML thô mã hóa dưới định dạng Base64 phục vụ ký số bên thứ ba.
2.i. Ký XML (api/invoice/sign-xml)
URL: POST <BaseUrl>/api/invoice/sign-xml
Tham số cấu thành yêu cầu: XmlMaHoa64, MaVungKy, và đường dẫn chứng thư số DuongDanChuKy.
2.k. Xóa hóa đơn nháp (api/invoice/delete-invoice)
URL: POST <BaseUrl>/api/invoice/delete-invoice
Truyền khóa định danh MaSoHDon để gỡ bỏ hoàn toàn hóa đơn nháp chưa ký số khỏi database.
2.j. JSON hóa đơn trả về từ Webhook (Callback cấu hình)
Cấu trúc phản hồi thời gian thực từ cổng core Mắt Bão về webhook callback endpoint đối tác.
{
"InvID": "QVh5dWZsYksyS0pyY...", // Mã số hóa đơn mã hóa INVID
"No": 36245, // Số hóa đơn chính thức
"Pattern": "1", // Mẫu số hóa đơn
"Serial": "C25TAT", // Ký hiệu series dải hóa đơn
"SO": "BH250024422", // Mã tham chiếu nội bộ hệ thống đối tác
"Fkey": "7B164DE80848001", // Mã tra cứu hóa đơn trực tuyến
"ArisingDate": "2025-05-16T00:00:00",
"MCCQT": "007865BA205F284530AA353E42B75820B9", // Mã xác thực Cơ quan Thuế cấp
"MaTTHDon": 4, // 1: Nháp | 2: Lỗi ký | 3: Chưa gửi CQT | 4: Đã cấp mã / tiếp nhận thành công
"TenTTHDon": "Đã cấp mã / tiếp nhận"
}
3.a. Lấy danh sách tờ khai 01 (api/tokhai01/get-tokhai01)
URL: GET <BaseUrl>/api/tokhai01/get-tokhai01
Tham số lọc: TrangThai (0: Chưa ký, 1: Đã ký, 2: Đã gửi, 3: CQT đã duyệt).
3.b. Tạo mới tờ khai 01 (api/tokhai01/create-tokhai01)
URL: POST <BaseUrl>/api/tokhai01/create-tokhai01
Khởi tạo luồng thông tin đăng ký mới sử dụng hình thức hóa đơn điện tử hoặc chứng từ khấu trừ thuế TNCN lên hệ thống Tổng cục.
Phụ lục 1: Định nghĩa danh mục bảng Mã lỗi Hệ thống
| Mã lỗi | Mô tả chi tiết nguyên nhân gốc | Gợi ý hướng dẫn khắc phục xử lý nhanh cho lập trình viên |
|---|---|---|
| 200 | Thành công | Yêu cầu hoàn tất tốt đẹp. |
| 10 | Tham số INPUT không được để trống | Lỗi cú pháp: Hãy kiểm tra các trường đánh dấu bắt buộc trong Request body. |
| 201 | Không tìm thấy dữ liệu | Kiểm tra lại định danh khóa tra cứu hoặc khoảng thời gian truyền. |
| 304 | Trùng mã tra cứu | Trường MaTraCuu bị lặp lại trong DB hệ thống. Cần sinh chuỗi mã ngẫu nhiên độc lập mới. |
| 305 | Trùng mã tham chiếu | Trường MTChieu (Số hiệu đơn hàng nội bộ) đã bị trùng. Cần tăng số index định danh đơn hàng. |
| 327 | Mẫu hóa đơn đã hết số | Dải hóa đơn đăng ký dải số đã dùng hết. Cần tạo tờ khai đăng ký dải số mới. |
| 401 | Xác thực tài khoản không hợp lệ | Mã Access Token bị hết hạn hoặc sai thông tin xác thực đăng nhập API ban đầu. |
| 500 | Lỗi hệ thống | Sự cố từ core xử lý backend. Ghi nhận log message chi tiết gửi cho đội kỹ thuật. |
Phụ lục 2: Danh mục ký hiệu mẫu số hóa đơn, chứng từ
| Mẫu số | Định nghĩa loại cấu thành tương ứng |
|---|---|
| 1 | Hóa đơn điện tử giá trị gia tăng (GTGT) thông thường |
| 2 | Hóa đơn điện tử bán hàng thương mại đại chúng |
| 5 | Tem điện tử, vé điện tử, thẻ điện tử, phiếu thu chi điện tử |
| 6 | Phiếu xuất kho kiêm vận chuyển nội bộ / Hàng gửi bán đại lý điện tử |
| 03/TNCN | Chứng từ khấu trừ thuế Thu nhập cá nhân (TNCN) điện tử chính thức |
Phụ lục 3: Quy tắc thiết lập cấu trúc Ký hiệu dải series Hóa đơn
Cấu trúc chuỗi series bao gồm tổ hợp chuẩn quy định gồm 6 ký tự viết liền không dấu:
- Ký tự 1:
C(Có mã của Cơ quan Thuế) hoặcK(Không có mã). - Ký tự 2-3: Hai số cuối của năm dương lịch lập hóa đơn (Ví dụ lập năm 2026 ghi là
26). - Ký tự 4: Phân loại hóa đơn sử dụng (
T: Doanh nghiệp đăng ký;M: Khởi tạo từ máy tính tiền;N: Phiếu xuất kho kiêm vận chuyển nội bộ;B: Phiếu gửi đại lý...). - Ký tự 5-6: Do người bán tự xác định quản lý dải mẫu nội bộ (Mặc định nếu không phân loại dùng
YY).