Bạn có thể tự động xuất hóa đơn điện tử từ đơn hàng bằng cách nối phần mềm bán hàng (Haravan, Sapo, KiotViet hoặc hệ thống đơn của sàn TMĐT) với API của nhà cung cấp hóa đơn điện tử như MISA meInvoice, Viettel, VNPT, BKAV hay EasyInvoice. Phần làm tự động được: lấy dữ liệu đơn, ánh xạ mặt hàng và thuế suất, tạo và ký hóa đơn, nhận mã của cơ quan thuế, gửi hóa đơn cho khách. Phần vẫn cần kế toán: đơn có thông tin bất thường, khách doanh nghiệp sai mã số thuế, hóa đơn cần điều chỉnh hoặc thay thế. Tự động hoá giúp kế toán bớt gõ lại dữ liệu, không thay được trách nhiệm kiểm soát.

Tóm tắt: Thống nhất với kế toán về thời điểm lập hóa đơn trước khi viết dòng code nào. Dựng bảng ánh xạ mặt hàng sang tên hàng, đơn vị tính, thuế suất trên hóa đơn. Dùng chữ ký số từ xa thay cho USB token. Chống xuất trùng bằng mã đơn hàng và đối soát hằng ngày giữa số đơn đã giao với số hóa đơn đã cấp mã.

Lưu ý: bài viết mô tả cách tổ chức quy trình kỹ thuật, không phải tư vấn thuế. Quy định về hóa đơn được sửa đổi định kỳ; hãy xác nhận với kế toán hoặc đơn vị tư vấn thuế trước khi áp dụng.

Khung pháp lý cần nắm trước khi tự động hoá#

Hóa đơn điện tử hiện được quy định chủ yếu tại Nghị định 123/2020/NĐ-CP về hóa đơn, chứng từ, được sửa đổi, bổ sung bởi Nghị định 70/2025/NĐ-CP (hiệu lực từ 01/6/2025), cùng các thông tư hướng dẫn của Bộ Tài chính (Thông tư 78/2021/TT-BTC và các văn bản sửa đổi, thay thế). Ba điểm ảnh hưởng trực tiếp đến thiết kế workflow:

Thời điểm lập hóa đơn. Điều 9 Nghị định 123/2020 quy định với bán hàng hóa, thời điểm lập là thời điểm chuyển giao quyền sở hữu hoặc quyền sử dụng hàng hóa cho người mua, không phân biệt đã thu tiền hay chưa. Với cung cấp dịch vụ, là thời điểm hoàn thành việc cung cấp dịch vụ, hoặc thời điểm thu tiền nếu thu trước. Nghĩa là trigger của workflow nên gắn với trạng thái "đã giao" hoặc "hoàn tất", không phải lúc khách vừa bấm đặt hàng. Với đơn giao qua đơn vị vận chuyển và thu hộ (COD), kế toán cần chốt trạng thái nào được coi là đã chuyển giao.

Hóa đơn có mã của cơ quan thuế. Phần lớn doanh nghiệp dùng hóa đơn có mã: hóa đơn được ký số, gửi lên hệ thống của cơ quan thuế để cấp mã, rồi mới gửi cho người mua. Workflow phải chờ và lưu lại kết quả cấp mã, không coi hóa đơn là hoàn tất khi mới gửi đi.

Hóa đơn khởi tạo từ máy tính tiền. Nghị định 70/2025 mở rộng việc sử dụng loại hóa đơn này cho một số nhóm kinh doanh bán lẻ, ăn uống trực tiếp cho người tiêu dùng. Nếu doanh nghiệp bạn thuộc diện này, cách tích hợp có thể khác so với mô tả bên dưới. Hãy hỏi kế toán trước.

Đơn nào nên xuất tự động, đơn nào cần người duyệt?#

Không phải mọi đơn đều nên đi thẳng đến phát hành. Bảng gợi ý dưới đây giúp chia luồng:

Loại đơn Gợi ý xử lý Lý do
Khách cá nhân, hàng có sẵn, một thuế suất Tự động phát hành Dữ liệu đơn giản, ít rủi ro sai
Khách doanh nghiệp, mã số thuế hợp lệ, tên khớp Tự động phát hành Kiểm tra MST trước khi tạo hóa đơn
Khách doanh nghiệp, MST sai định dạng hoặc tên không khớp Tạo nháp, chờ kế toán Sai thông tin người mua phải xử lý điều chỉnh, tốn công hơn
Đơn có hàng tặng, hàng khuyến mãi, chiết khấu nhiều tầng Tạo nháp, chờ kế toán Cách thể hiện trên hóa đơn cần thống nhất với kế toán
Đơn từ sàn TMĐT có voucher của sàn và của shop Tự động sau khi đã chốt quy tắc với kế toán Giảm giá do sàn tài trợ và do shop tài trợ có thể được ghi nhận khác nhau
Đơn bị trả hàng, huỷ sau khi đã xuất hóa đơn Luôn chuyển kế toán Phải lập hóa đơn điều chỉnh hoặc thay thế theo quy định

Nguyên tắc chung: tự động phần lặp lại và rõ ràng, giữ người cho phần ngoại lệ. Hàng chờ ngoại lệ phải có nhãn lý do để kế toán xử lý nhanh.

Workflow 7 bước từ đơn hàng đến hóa đơn đã cấp mã#

Đơn chuyển trạng thái "Đã giao / Hoàn tất"
    ↓
[1] Nhận sự kiện: webhook (Haravan, Sapo) hoặc truy vấn API định kỳ
    ↓
[2] Kiểm tra đã có hóa đơn cho mã đơn này chưa → có thì dừng
    ↓
[3] Chuẩn hoá người mua: tên, địa chỉ, email, MST (nếu có)
    ↓
[4] Ánh xạ từng dòng hàng: mã hàng → tên trên hóa đơn, ĐVT, thuế suất
    ↓
[5] Kiểm tra quy tắc: tổng tiền khớp đơn, thuế suất hợp lệ, MST đúng định dạng
    ↓  (không đạt → hàng chờ kế toán + lý do)
[6] Gọi API nhà cung cấp HĐĐT: tạo → ký số → gửi cấp mã
    ↓
[7] Lưu số hóa đơn, mã tra cứu vào đơn hàng; gửi email cho khách; ghi log

Bước 1. Haravan và Sapo hỗ trợ webhook khi đơn thay đổi trạng thái. Với hệ thống không có webhook phù hợp, truy vấn API theo chu kỳ ngắn (ví dụ 10–15 phút) là đủ, vì hóa đơn không cần xuất tức thì trong vài giây.

Bước 2 là bước chống xuất trùng. Webhook có thể được gửi lại nhiều lần khi mạng chập chờn. Nếu không kiểm tra, một đơn có thể sinh hai hóa đơn và kế toán phải xử lý hủy, điều chỉnh. Dùng mã đơn hàng làm khoá duy nhất, lưu trong bảng log hoặc trường tham chiếu của API hóa đơn nếu nhà cung cấp hỗ trợ.

Bước 4 và 5 là nơi quyết định hóa đơn đúng hay sai, trình bày kỹ ở phần tiếp theo.

Bước 6. Các nhà cung cấp lớn đều có API cho phép tạo hóa đơn, ký và gửi cấp mã trong một hoặc vài lệnh gọi. Đọc kỹ tài liệu về môi trường thử nghiệm: luôn chạy thử trên môi trường test của nhà cung cấp trước khi kết nối với tài khoản thật.

Bước 7. Lưu số hóa đơn và mã tra cứu ngược vào đơn hàng giúp CSKH trả lời ngay khi khách hỏi. Nếu doanh nghiệp đang dùng MISA và CRM song song, xem thêm cách đồng bộ hóa đơn MISA vào CRM để sales thấy được tình trạng hóa đơn.

Bảng ánh xạ hàng hóa: phần quyết định đúng sai#

Tên sản phẩm trên website thường là tên bán hàng, ví dụ "Combo chăm da mùa hè, tặng túi xinh". Tên này không phù hợp để in trên hóa đơn. Cần một bảng ánh xạ do kế toán duyệt:

Mã hàng (SKU) Tên trên hóa đơn Đơn vị tính Thuế suất GTGT Ghi chú
SRM-150 Sữa rửa mặt 150ml Chai Theo danh mục kế toán duyệt
COMBO-HE Tách thành từng dòng hàng Combo nên tách dòng nếu các thành phần khác thuế suất
TUI-TANG Túi vải (hàng khuyến mãi) Cái Cách thể hiện hàng tặng do kế toán quyết định
SHIP Phí vận chuyển Lần Xác định có đưa vào hóa đơn hay không

Bảng trên là ví dụ minh hoạ cấu trúc, thuế suất cụ thể phụ thuộc mặt hàng và chính sách thuế từng giai đoạn.

Ba quy tắc khi vận hành bảng này:

  1. SKU mới chưa có trong bảng thì không được tự động phát hành. Đơn chứa SKU lạ chuyển vào hàng chờ, kế toán bổ sung ánh xạ rồi mới chạy lại.
  2. Thuế suất không đặt cứng trong code. Khi chính sách giảm thuế GTGT thay đổi, chỉ cần sửa bảng.
  3. Mọi thay đổi bảng đều ghi lại người sửa và thời điểm, để khi có câu hỏi từ cơ quan thuế vẫn truy được lý do.

Chữ ký số: vì sao USB token cản trở tự động hoá#

Nhiều doanh nghiệp nhỏ vẫn ký hóa đơn bằng USB token cắm vào máy kế toán. Với cách này, hệ thống tự động không thể ký khi máy tắt hoặc token không được cắm. Muốn workflow chạy cả ngoài giờ, cần chuyển sang chữ ký số từ xa (ký trên máy chủ HSM của nhà cung cấp), dịch vụ mà hầu hết nhà cung cấp chữ ký số và hóa đơn điện tử lớn đều có. Khi chuyển, cần quy định rõ ai được phép kích hoạt ký tự động và giới hạn quyền của tài khoản API.

Chọn hướng tích hợp: có sẵn, middleware hay tự viết?#

Hướng Phù hợp khi Ưu điểm Hạn chế
Kết nối có sẵn trong phần mềm bán hàng Phần mềm bán hàng đã hỗ trợ đúng nhà cung cấp HĐĐT bạn dùng Nhanh, ít bảo trì Ít tuỳ biến quy tắc ngoại lệ, ánh xạ hàng hóa
Middleware (n8n, Make) gọi API hai bên Có vài quy tắc riêng, lượng đơn vừa phải Linh hoạt, sửa quy tắc không cần lập trình nhiều Cần người hiểu luồng để xử lý khi lỗi
Tự viết dịch vụ tích hợp Nhiều kênh bán, lượng đơn lớn, quy tắc phức tạp Kiểm soát hoàn toàn, dễ mở rộng Chi phí phát triển và bảo trì cao nhất

Hãy kiểm tra hướng thứ nhất trước. Nhiều phần mềm bán hàng phổ biến đã có sẵn kết nối với một số nhà cung cấp hóa đơn điện tử, nhưng danh sách thay đổi theo thời gian, nên xem trang tích hợp hiện hành của nhà cung cấp phần mềm.

Góc nhìn từ DsAI#

Qua các dự án DsAI đã làm với doanh nghiệp bán hàng đa kênh, phần kỹ thuật gọi API hiếm khi là phần khó. Khó nhất là buổi ngồi cùng kế toán để chốt các quy tắc: trạng thái nào là đã giao, hàng tặng thể hiện thế nào, voucher của sàn tính ra sao. Doanh nghiệp nào chốt được bảng quy tắc này bằng văn bản thì triển khai nhanh và ít phải sửa.

Điều thứ hai: dữ liệu danh mục hàng hóa thường bẩn hơn chủ doanh nghiệp nghĩ. Cùng một sản phẩm có ba SKU trên ba kênh, combo không có SKU, sản phẩm ngừng bán vẫn còn trên sàn. Làm sạch danh mục trước khi tự động hoá hóa đơn cũng giúp ích cho đồng bộ tồn kho đa kênh và báo cáo doanh thu.

Lỗi thường gặp#

  1. Xuất hóa đơn ngay khi khách đặt hàng. Đơn huỷ, đơn giao không thành công sinh ra hàng loạt hóa đơn phải xử lý lại.
  2. Không chống xuất trùng. Webhook gửi lại, một đơn có hai hóa đơn.
  3. Dùng tên sản phẩm marketing trên hóa đơn. Tên chứa chữ "sale", "tặng kèm", biểu tượng cảm xúc không phù hợp với chứng từ.
  4. Không kiểm tra MST người mua. Sai thông tin người mua là loại sai sót phổ biến và tốn công xử lý.
  5. Không đối soát hằng ngày. Không ai phát hiện đơn nằm trong hàng chờ quá lâu, đến cuối tháng mới vỡ lở.
  6. Lưu khoá API trong Google Sheets dùng chung. Ai có quyền xem sheet cũng có thể phát hành hóa đơn thay doanh nghiệp.

Khi nào KHÔNG nên tự động xuất hóa đơn điện tử?#

  • Lượng đơn nhỏ. Vài chục hóa đơn mỗi tháng, kế toán lập trực tiếp trên phần mềm hóa đơn nhanh hơn việc xây và bảo trì tích hợp.
  • Phần lớn là đơn B2B theo hợp đồng với điều khoản thanh toán, nghiệm thu riêng. Mỗi hóa đơn cần đối chiếu hợp đồng, không phù hợp để chạy tự động.
  • Danh mục hàng hóa chưa chuẩn hoá. Tự động hoá trên danh mục bẩn chỉ làm sai nhanh hơn.
  • Nghiệp vụ đặc thù như xuất khẩu, hàng ký gửi, bán hàng qua đại lý hưởng hoa hồng. Những trường hợp này có cách lập hóa đơn riêng, nên làm thủ công đến khi quy tắc rõ ràng.
  • Chưa thống nhất với kế toán về thời điểm lập và cách xử lý ngoại lệ. Đây là điều kiện tiên quyết.

Câu hỏi thường gặp#

Phát hành hóa đơn điện tử tự động có hợp lệ không?#

Có. Quy định không bắt buộc hóa đơn phải được lập bằng tay. Hóa đơn vẫn phải đủ nội dung bắt buộc, đúng thời điểm lập, được ký số bởi người bán và cấp mã nếu là hóa đơn có mã. Doanh nghiệp vẫn chịu trách nhiệm về mọi hóa đơn mà hệ thống tự động phát hành.

Lỡ xuất sai hóa đơn tự động thì xử lý thế nào?#

Hóa đơn đã cấp mã không sửa trực tiếp được. Kế toán xử lý theo quy định về hóa đơn có sai sót, thường bằng hóa đơn điều chỉnh hoặc thay thế, và cần đối chiếu văn bản hiện hành vì quy trình này đã được sửa đổi. Workflow nên chuyển mọi trường hợp như vậy cho người xử lý.

Đang dùng MISA meInvoice có cần đổi nhà cung cấp không?#

Không cần. Các nhà cung cấp hóa đơn điện tử lớn đều có API để kết nối. Câu hỏi đúng là phần mềm bán hàng của bạn có kết nối sẵn với nhà cung cấp đang dùng hay không. Nếu không, có thể dùng middleware như n8n để gọi API của cả hai bên.

Khách lẻ không lấy hóa đơn thì có phải xuất không?#

Nghĩa vụ lập hóa đơn không phụ thuộc việc người mua có yêu cầu hay không, nhưng cách lập cho khách lẻ đã thay đổi qua các lần sửa đổi quy định và phụ thuộc loại hình kinh doanh. Hãy hỏi kế toán hoặc đơn vị tư vấn thuế, sau đó cấu hình workflow theo đúng cách họ hướng dẫn.


Kế toán của bạn đang gõ lại từng đơn hàng vào phần mềm hóa đơn điện tử? DsAI có thể cùng bạn và kế toán chốt bộ quy tắc, kiểm tra danh mục hàng hóa và chọn hướng tích hợp phù hợp với số kênh bán. Trao đổi với đội tư vấn DsAI để bắt đầu. Sau khi hóa đơn đã tự động, bước tiếp theo nhiều doanh nghiệp quan tâm là tự động hoá hạch toán cuối kỳ.