·8 phút đọc#AI#automation#TT-200#bút-toán

AI phân loại bút toán: từ hóa đơn đến TK kế toán trong 5 giây

Hybrid stack (lookup → vector similarity → LLM) đạt 94.2% composite accuracy trên 5,000 hóa đơn thật. 3 layer trap để bắt AI sai trước khi post bút toán.

TN

Tony Nguyen

Founder, NKKTech Group · CEO, est-invoice

OCR hóa đơn (xem bài trước) chỉ là nửa câu chuyện. Sau khi extract được 14 trường, kế toán vẫn phải:

  1. Quyết định TK Nợ (chi phí gì) — 622, 627, 641, 642, 635...
  2. Quyết định TK Có (nguồn) — 111, 1121, 331, ...
  3. Phân bổ VAT đầu vào — 1331 vs 1332
  4. Quyết định khấu trừ hay không (TT 219/2013)

Với 200 hóa đơn/tháng × 4 quyết định = 800 lần phải nghĩ. Mỗi quyết định sai → bút toán sai → tới quý sau mới phát hiện. est-invoice rút đoạn này từ "1-2 phút/hóa đơn" còn "5 giây cho 100 hóa đơn batch".

Stack AI phân loại bút toán

Khác với OCR (vision LLM), phân loại bút toán dùng hybrid stack:

  • Lookup-first: 80% hóa đơn từ nhà cung cấp quen (điện, nước, internet, thuê văn phòng, lương offset, vv) khớp NCC-MST → est-invoice nhớ mapping từ lần trước, áp ngay 0ms
  • Vector similarity: 15% match "mô tả gần đúng" với hóa đơn cũ — em embedding bằng OpenAI ada-002, lookup k-NN trong tenant-scope, áp template phù hợp
  • LLM classifier: 5% còn lại (hóa đơn lạ) → Claude Sonnet 4 nhận extract output + TT 200 chart of accounts → trả về TK đề xuất với confidence 0-100
  • Rule layer:Apply TT 200 + TT 96/2015 sau: các check tự động (xe ô tô > 1.6 tỷ → cap 1.6 tỷ; chi phí tiếp khách → 642; lãi vay liên kết → check ratio EBITDA...)

Benchmark trên 5,000 hóa đơn thật (Q1 2026)

Test trên 3 tenant production (Phúc Khang sản xuất, Sao Mai thương mại, Đại Việt dịch vụ), tổng 5,000 hóa đơn random Q1 2026:

  • Composite accuracy (cả TK Nợ + TK Có + VAT class đúng hết): 94.2%
  • TK Nợ chính xác (mức 4 số chi tiết): 97.1%
  • VAT khấu trừ/không khấu trừ đúng theo TT 219/2013:98.6%
  • Tốc độ P50: 80ms / hóa đơn (lookup hit)
  • Tốc độ P99: 3.2 giây / hóa đơn (LLM fallback, hóa đơn chưa từng thấy)

Composite accuracy 94.2% nghĩa là 94 hóa đơn auto-postkhông cần review. 6 còn lại được flag confidence < 70 cho kế toán spot-check (trung bình 30 giây/cái).

Ví dụ thực: hóa đơn FPT Telecom internet văn phòng

Input từ OCR:

{
  "supplier": "FPT Telecom",
  "supplier_mst": "0101778163",
  "amount_no_vat": 2727273,
  "vat_rate": 0.1,
  "vat_amount": 272727,
  "total": 3000000,
  "items": [{
    "desc": "Cước internet doanh nghiệp tháng 04/2026",
    "qty": 1, "unit_price": 2727273
  }]
}

est-invoice xử trong 80ms:

  • Lookup hit: FPT-MST 0101778163 đã có 13 hóa đơn cũ trong tenant → 100% mapping → áp:
    • Nợ 642.7 (Chi phí dịch vụ mua ngoài) — 2,727,273
    • Nợ 1331 (VAT đầu vào khấu trừ — dịch vụ) — 272,727
    • Có 1121 (TGNH) — 3,000,000 (nếu đã auto-pay) hoặc 331 (CN) (nếu chờ thanh toán)
  • VAT class: 1331 (dịch vụ, khấu trừ được — không thuộc danh sách Điều 14 TT 219)
  • Source confidence: 100 → auto-post, no review needed

Ví dụ khó: hóa đơn nhà hàng tiếp khách

Input:

{
  "supplier": "Nhà hàng Cánh Buồm",
  "supplier_mst": "0312345678",
  "amount_no_vat": 4545455,
  "vat_amount": 454545,
  "items": [{ "desc": "Set menu 10 khách + đồ uống", "qty": 1, "unit_price": 4545455 }]
}

Đây là case khó vì:

  • Cần xác định đây là "tiếp khách" (TK 642.8) hay "ăn uống nhân viên" (TK 622/627/642)
  • Tiếp khách bị cap 0.5% (TT 96/2015) — chi vượt → cộng vào chi phí KHÔNG được trừ
  • VAT đầu vào của tiếp khách vượt định mức → KHÔNG được khấu trừ → 1332 không phải 1331

est-invoice xử:

  • LLM classify: keyword "khách" + nhà hàng → "tiếp khách" (confidence 85)
  • Rule layer: pull tổng "tiếp khách YTD" → check ratio với chi phí khác
  • Nếu chưa vượt 0.5%: Nợ 642.8 + Nợ 1331; nếu vượt: Nợ 642.8 (vẫn ghi nhận chi phí) + Nợ 1332 (VAT KHÔNG khấu trừ, sẽ chuyển thành chi phí cuối năm)
  • Flag warning UI: "Tiếp khách YTD: ₫45M / cap ₫50M (90%) — review trước quyết toán"

Khi nào AI sai — và cách trap nó

Em đã build 3 layer trap để bắt AI sai trước khi post bút toán:

Layer 1: Confidence threshold

Bất kỳ field nào confidence < 70 → highlight + cần review. Default settings.

Layer 2: Anomaly detection

So sánh với pattern lịch sử tenant. Ví dụ: hóa đơn FPT Telecom thường 2-5 triệu/tháng, nếu xuất hiện 50 triệu → flag "Anomaly: 10x average". Không block, chỉ warn.

Layer 3: Period-close cross-check

Khi đóng kỳ, system tính tỷ lệ bút toán có "AI-classified=true" và confidence < 95. Nếu > 20% kỳ đó → đề nghị kế toán dành 30 phút sample 20 hóa đơn review.

So với phần mềm cũ

MISA AMIS có template bút toán có thể clone, nhưng:

  • Phải manual map mỗi NCC vào template — 200 NCC = 200 lần map
  • Không có vector similarity → NCC mới = phải gõ tay
  • Không có anomaly detection → sai sót chỉ phát hiện cuối quý

est-invoice lookup-first nghĩa là NCC quen 1 lần map duy nhất, sau đó forever automated. 200 NCC × 1 map = 1 buổi setup ban đầu. Sau đó 0 công.

Bắt đầu trong 5 phút

  1. Tạo trial 30 ngày miễn phí
  2. Vào /expenses → Upload 10-20 hóa đơn của bạn
  3. Sau 1 phút bấm /journal?status=DRAFT xem bút toán AI đã đề xuất
  4. Review + post — Tony bet 90%+ đúng ngay lần đầu

Đọc tiếp: Khai thuế GTGT tự động— bút toán đúng từ đầu → tờ khai GTGT đúng theo đó.

Bài viết liên quan