Một hóa đơn điện tử thường đến cùng lúc ba dạng: tệp XML người bán gửi kèm, bản PDF để xem, và đôi khi một ảnh chụp màn hình khách chuyển qua Zalo. Nhiều người đưa cả ba cho AI đọc. Cách nhanh và chắc hơn là đọc XML bằng máy theo đúng thẻ dữ liệu, kiểm tổng bằng phép cộng, và chỉ cần AI khi trong tay chỉ có PDF hay ảnh. Bài này dùng bốn tệp XML giả lập để chỉ cách đọc bằng Power Query trong Excel, cách nhận ra một tệp tải hai lần, cách không gộp nhầm hai hóa đơn cùng số khác ký hiệu, và chỗ nào AI có ích.
Ba dạng, ba cách đọc
| Dạng | Bản chất | Cách đọc nên dùng | Rủi ro chính |
|---|---|---|---|
| XML | Dữ liệu có cấu trúc, mỗi số nằm trong một thẻ có tên | Công cụ đọc XML: Power Query, phần mềm kế toán, chức năng nhập hóa đơn của phần mềm | Đọc sai thẻ, gộp nhầm khi tên thẻ khác phiên bản |
| PDF có chữ | Bản trình bày để người xem; chữ chọn được | Trích bảng hoặc AI đọc, rồi đối chiếu với XML hoặc tra cứu | Dòng bị tách trang, số bị đọc lệch cột |
| Ảnh chụp, PDF scan | Chỉ là điểm ảnh | Nhận dạng chữ (OCR) hoặc AI đọc ảnh, người kiểm từng số | Nhầm 6 với 8, mất số 0, cắt mép |
Nguyên tắc: có XML thì đọc XML. PDF và ảnh chỉ để xem nhanh hoặc khi người bán không gửi XML. Bài đọc hóa đơn PDF bằng AI và bài ảnh hóa đơn thành bảng đi sâu hai trường hợp đó.
Đọc được dữ liệu không phải là xác nhận hóa đơn hợp lệ. Từ 01/07/2026, hóa đơn điện tử theo Luật Quản lý thuế số 108/2025/QH15, Nghị định 254/2026/NĐ-CP và Thông tư 91/2026/TT-BTC. Trạng thái hóa đơn tra trên cổng tra cứu hóa đơn điện tử của cơ quan thuế; việc hóa đơn có được dùng để khấu trừ hay tính chi phí hay không do kế toán trưởng hoặc người có chuyên môn quyết.
Bước 1: mở thử một tệp XML để biết mình đang đọc gì
Tải bốn tệp XML hóa đơn giả lập (ZIP)
Mở một tệp bằng trình soạn thảo văn bản. Bạn sẽ thấy các thẻ lồng nhau. Trong ví dụ rút gọn, thẻ đặt tên theo cách phổ biến trong tệp hóa đơn điện tử ở Việt Nam:
| Thẻ | Nghĩa |
|---|---|
| KHHDon | Ký hiệu hóa đơn |
| SHDon | Số hóa đơn |
| NLap | Ngày lập |
| NBan, NMua | Khối người bán, người mua; bên trong có thẻ tên và thẻ mã số thuế |
| HHDVu | Một dòng hàng hóa, dịch vụ (tên, đơn vị, số lượng, đơn giá, thành tiền, thuế suất) |
| TgTCThue | Tổng tiền chưa thuế |
| TgTThue | Tổng tiền thuế |
| TgTTTBSo | Tổng tiền thanh toán bằng số |
Tệp thật có nhiều thẻ hơn, có chữ ký số và có thể khác tên theo phiên bản định dạng. Trước khi dựng quy trình, mở một tệp thật của người bán quen để biết tên thẻ đúng.
Bước 2: đọc cả thư mục XML bằng Power Query
Power Query có sẵn trong Excel trên Windows và Mac bản gần đây. Tên menu có thể khác nhẹ theo phiên bản:
- Giải nén bốn tệp vào một thư mục riêng.
- Excel, thẻ Data (Dữ liệu), Get Data (Lấy dữ liệu), From File, From Folder, chọn thư mục.
- Chọn Combine & Transform. Power Query mở từng tệp XML thành bảng lồng nhau.
- Mở rộng lần lượt các cột cho tới khi thấy KHHDon, SHDon, NLap, mã số thuế người bán, TgTCThue, TgTThue, TgTTTBSo. Giữ cột Source.Name (tên tệp) để biết dòng đến từ tệp nào.
- Đặt kiểu dữ liệu: số tiền là số nguyên, ngày là ngày, mã số thuế, ký hiệu và số hóa đơn là văn bản để không mất số 0 ở đầu.
- Đóng và tải về một trang tính.
Bảng dòng hàng (HHDVu) mở rộng ra một truy vấn riêng nếu bạn cần kiểm từng dòng.
Bước 3: thêm ba cột kiểm bằng công thức

- Khóa nhận diện = mã số thuế người bán & ký hiệu & số. Ví dụ
=E2&"|"&B2&"|"&C2. Không dùng riêng số hóa đơn. - Trùng =
=IF(COUNTIF($J$2:J2,J2)>1,"Trùng","")trên cột khóa, đếm từ đầu tới dòng hiện tại để chỉ đánh dấu bản xuất hiện sau. - Lệch tổng =
=IF(F2+G2<>H2,"Lệch","")với F chưa thuế, G thuế, H tổng thanh toán. Nếu đã mở rộng bảng dòng hàng, thêm phép so tổng thành tiền các dòng với TgTCThue.
Đáp án của bốn tệp giả lập, đọc bằng trình phân tích XML, không dùng AI:
| Tệp | Ký hiệu, số | Mã số thuế người bán | Chưa thuế | Thuế | Thanh toán | Kết quả |
|---|---|---|---|---|---|---|
| HD-C26TAA-0000152.xml | C26TAA, 152 | 0300000002 | 4.730.000 | 473.000 | 5.203.000 | Đạt |
| HD-C26TBB-0000152.xml | C26TBB, 152 | 0300000003 | 1.700.000 | 170.000 | 1.870.000 | Đạt, không trùng dù cùng số 152 |
| tai-lai_HD-C26TAA-0000152.xml | C26TAA, 152 | 0300000002 | 4.730.000 | 473.000 | 5.203.000 | Trùng với tệp đầu |
| HD-C26TCC-0000087.xml | C26TCC, 87 | 0300000004 | 6.300.000 | 630.000 | 6.830.000 | Lệch 100.000 |
Hai bài học từ ví dụ:
- Cùng số, khác ký hiệu, khác người bán là hai hóa đơn. Nếu chỉ dò theo số 152, bạn sẽ xóa nhầm hóa đơn của nhà cung cấp Y.
- Tệp tải lại không phải hóa đơn mới. Tên tệp khác nhưng khóa giống, chỉ ghi sổ một lần.
Hóa đơn 87 lệch tổng là dấu hiệu tệp không phải bản gốc, bị sửa, hoặc bạn đọc nhầm thẻ. Đừng tự sửa số. Tải lại bản gốc từ người bán hoặc từ hệ thống, tra cứu trên cổng của cơ quan thuế và hỏi người bán.
Bước 4: thêm cột trạng thái tra cứu, do người điền
Với hóa đơn đầu vào cần ghi sổ, thêm cột Trạng thái tra cứu và Ngày tra. Người kiểm tra trên cổng tra cứu hóa đơn điện tử của cơ quan thuế (trang hoadondientu.gdt.gov.vn tại thời điểm viết) hoặc chức năng tương đương trong phần mềm đang dùng, rồi ghi kết quả. Đừng nhờ AI "kiểm hóa đơn có hợp lệ không": AI không truy cập hệ thống của cơ quan thuế, nên câu trả lời chỉ là đoán.
Bước 5: chỗ AI thật sự có ích
Sau khi bảng đã có số đọc bằng máy, AI giúp ở phần chữ:
Bạn hỗ trợ kế toán mua hàng. Dưới đây là bảng hóa đơn đầu vào tháng 09/2026 đã đọc từ XML bằng Power Query, có cột Trùng và Lệch tổng tính bằng công thức. Không tính lại số, không kết luận hóa đơn hợp lệ hay không. Việc cần làm: 1. Với mỗi dòng có Trùng hoặc Lệch, viết một câu giải thích cho người kiểm và một việc cần làm tiếp. 2. Nhóm tên hàng hóa, dịch vụ theo nhóm chi phí gợi ý (văn phòng phẩm, sửa chữa bảo trì, tài sản, khác). Ghi "Gợi ý, cần kế toán duyệt". 3. Soạn nháp tin nhắn ngắn gửi người bán của hóa đơn lệch tổng, xin gửi lại tệp XML gốc. Không nêu số tài khoản hay thông tin ngoài bảng. [Dán bảng: Tệp | Ký hiệu | Số | Mã số thuế người bán | Tên người bán | Tên hàng | Chưa thuế | Thuế | Thanh toán | Trùng | Lệch tổng]
Khi chỉ có PDF hoặc ảnh, dùng AI hoặc OCR để lấy số, rồi kiểm bằng cùng ba cột ở bước 3. Nếu được, xin người bán gửi XML để thay bản đọc từ ảnh.
Áp dụng vào dữ liệu của bạn
- Một thư mục cho một tháng. Mỗi tháng thả tệp XML mới vào, bấm Refresh trong Power Query; bảng và ba cột kiểm cập nhật theo.
- So với sổ: ghép khóa nhận diện với danh sách hóa đơn đã ghi sổ bằng XLOOKUP để biết hóa đơn nào chưa ghi, hóa đơn nào ghi sổ mà không có tệp.
- Đo: số hóa đơn mỗi tháng, phút từ lúc nhận tệp tới lúc có bảng kiểm, số dòng phải sửa tay. Nếu phần mềm kế toán đang dùng đã có chức năng nhập XML hóa đơn, so thời gian hai cách trước khi chọn.
Dữ liệu không đưa vào công cụ AI công khai
Hóa đơn có tên, mã số thuế, địa chỉ của bên mua và bên bán. Chỉ dùng công cụ AI đơn vị cho phép. Phần đọc số bằng Power Query chạy trên máy bạn, không cần gửi tệp đi đâu.
Kiểm trước khi ghi sổ
- Mã số thuế, ký hiệu, số hóa đơn để dạng văn bản, không mất số 0?
- Mọi tệp trùng khóa đã được loại, không xóa nhầm hóa đơn cùng số khác ký hiệu?
- Hóa đơn lệch tổng đã có bản gốc thay thế và đã tra cứu?
- Cột trạng thái tra cứu đã có người điền và ngày tra?
Nguồn & lưu ý
- Nghị định 254/2026/NĐ-CP và Thông tư 91/2026/TT-BTC về hóa đơn điện tử, chứng từ điện tử, ban hành 30/06/2026, hiệu lực 01/07/2026; bài điểm mới trên Cổng Xây dựng chính sách, 20/07/2026. Đối chiếu ngày 05/10/2026.
- Bốn tệp XML là giả lập, cấu trúc rút gọn; tên thẻ đặt theo cách phổ biến để học, không phải đặc tả định dạng chuẩn. Kiểm tên thẻ trên tệp thật và tài liệu định dạng hiện hành của cơ quan thuế.
- Các bước Power Query mô tả theo chức năng chung của Excel; tên menu có thể khác theo phiên bản. Câu lệnh AI chưa chạy trên công cụ nào.




