ED04 - Nền tảng GoBD: Khả năng truy vết, khả năng kiểm chứng, tính bất biến
Vấn đề
Một doanh nhân bắt đầu ghi sổ kế toán - và đối mặt với câu hỏi: GoBD yêu cầu cụ thể điều gì, và làm thế nào để đáp ứng mà không cần phần mềm chuyên dụng đắt tiền?
Thực tiễn hiện nay trong khu vực doanh nghiệp vừa và nhỏ (SME):
- GoBD như cuốn sách bảy dấu ấn - GoBD (công văn BMF, 146 trang) trừu tượng, viết theo văn phong pháp lý, gần như không thể tiếp cận với người ngoài ngành
- "Để tư vấn thuế lo" - nhiều doanh nhân giao GoBD cho tư vấn thuế (StB) mà bản thân không hiểu những gì được yêu cầu - và phải trả tiền cho việc đó
- Giải pháp rời rạc - phần mềm lương, kế toán, kho lưu trữ chứng từ mỗi thứ một nơi, thiếu tính tuân thủ GoBD xuyên suốt
- PDF coi như "điện tử" - nhiều người tin rằng một file PDF trên ổ cứng là đủ đáp ứng GoBD - nhưng GoBD yêu cầu khả năng xử lý bằng máy (§ 147 Abs. 6 AO), chứ không chỉ lưu trữ
- Thiếu tài liệu hóa quy trình - GoBD Rz. 64–91 yêu cầu tài liệu quy trình, nhưng doanh nghiệp SME nào có?
- Sửa đổi sau sự kiện - các bút toán bị "sửa" mà thay đổi không thể truy vết - GoBD Rz. 146 yêu cầu tính bất biến
Thông điệp chính
GoBD yêu cầu ba nguyên tắc cốt lõi, mà Git đáp ứng by Design:
- Khả năng truy vết (GoBD Rz. 146) - mỗi mục ghi chép phải truy vết được (Ai? Khi nào? Cái gì? Tại sao?)
- Khả năng kiểm chứng (GoBD Rz. 147) - sổ sách kế toán phải kiểm chứng được (truy vết ngược/xuôi)
- Tính bất biến (GoBD Rz. 146) - sau khi ghi sổ, dữ liệu không được thay đổi (sửa chữa bằng mục ghi mới)
Git đáp ứng cả ba một cách cấu trúc - không nhờ các bước kiểm tra bổ sung sau sự kiện, mà nhờ chính kiến trúc:
Rz. 146"] G --> P["Nachprüfbarkeit
Rz. 147"] G --> U["Unveränderbarkeit
Rz. 146"] N --> GN["Git: Commit-Autor
+ Zeitstempel
+ Commit-Message"] P --> GP["Git: V7GUID + SHA-256
retrograd/progressiv
auflösbar"] U --> GU["Git: Tags + Protected Branches
+ Obsoleszenz-Markierung
Korrekturen als neue Commits"] style G fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style N fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style P fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style U fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GN fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style GP fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style GU fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Compliance by Design: Tính tuân thủ GoBD không đến từ việc kiểm tra sau sự kiện, mà từ việc lựa chọn phương tiện. Ai làm việc trong Git repo thì đáp ứng khả năng truy vết, khả năng kiểm chứng và tính bất biến một cách cấu trúc - không cần thêm các biện pháp kiểm soát.
GoBD - Nguồn gốc và phạm vi hiệu lực
GoBD (Grundsätze zur ordnungsmäßigen Führung und Aufbewahrung von Büchern, Aufzeichnungen und Unterlagen in elektronischer Form sowie zum Datenzugriff - Các nguyên tắc về việc lập và lưu trữ đúng quy định sổ sách, ghi chép và tài liệu dưới dạng điện tử cũng như về truy cập dữ liệu) là một công văn BMF ngày 28.11.2019 (BStBl I S. 1269), được sửa đổi lần cuối ngày 14.07.2025 (BStBl I S. 1502).
| Thuộc tính | Giá trị |
|---|---|
| Cơ quan ban hành | Bộ Tài chính Liên bang (BMF) |
| Tính chất pháp lý | Chỉ thị hành chính (không phải luật, nhưng ràng buộc các cơ quan thuế) |
| Cơ sở | § 146 AO (quy định về trật tự), § 147 AO (lưu trữ), HGB (§§ 238–241) |
| Phạm vi áp dụng | Cho mọi doanh nhân ghi sổ điện tử (trên thực tế: tất cả) |
| Khối lượng | 146 số đoạn (Rz.) |
Quan trọng: GoBD không phải là "khuyến nghị" - chúng là chỉ thị hành chính mà các cơ quan thuế dựa vào để kiểm tra. Ai không đáp ứng GoBD sẽ đối mặt nguy cơ bị ước tính thuế (§ 162 AO), phụ phí chậm nộp (§ 152 AO) và trong trường hợp xấu nhất là thủ tục hình sự về thuế (§ 370 AO).
Ba nguyên tắc cốt lõi của GoBD trong chi tiết
1. Khả năng truy vết (GoBD Rz. 146)
GoBD Rz. 146: "Sổ sách kế toán phải được tổ chức sao cho một bên thứ ba có chuyên môn có thể trong thời gian hợp lý nắm được tổng quan về các nghiệp vụ kinh doanh và tình hình của doanh nghiệp."
Điều này có nghĩa là: Kiểm tra viên (hoặc tư vấn thuế, hoặc công chức thuế) phải có thể truy vết được điều gì đã xảy ra trong thời gian hợp lý.
| Yêu cầu GoBD | Git đáp ứng như thế nào |
|---|---|
| Ai đã ghi sổ? | git log --author hiển thị tác giả của từng commit |
| Ghi sổ khi nào? | uuidV7 chứa dấu thời gian 48-bit (RFC 9562 §5.7) |
| Ghi sổ cái gì? | Commit-diff hiển thị chính xác những gì đã được thêm/thay đổi |
| Tại sao ghi sổ? | Commit message ghi lại lý do |
| Với vai trò nào? | Trường role trong artefact JSON (GF, kế toán, trưởng R&D) |
Wer? Wann? Was?"] P --> SH["git show
Commit-Details"] P --> DF["git diff
Was hat sich geändert?"] P --> V7["uuidV7 decode
Exakte Erfassungszeit"] GL --> R["Nachvollziehbarkeit
in angemessener Zeit"] SH --> R DF --> R V7 --> R style P fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style GL fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SH fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style DF fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style V7 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
2. Khả năng kiểm chứng (GoBD Rz. 147)
GoBD Rz. 147: "Sổ sách kế toán phải được tổ chức sao cho có thể kiểm chứng được."
Điều này có nghĩa là: Sổ sách kế toán phải truy vết được cả ngược lẫn xuôi (xem ED03):
- Ngược (retrograd): từ bút toán → chứng từ → mục nhật ký → V7GUID
- Xuôi (progressiv): từ chứng từ → bút toán → sổ cái → bảng cân đối mở đầu
| Yêu cầu GoBD | Git đáp ứng như thế nào |
|---|---|
| Truy vết ngược | source_sha256 trong mục nhật ký → chứng từ |
| Truy vết xuôi | V7GUID trong chứng từ → mục nhật ký → sổ cái |
| Khả năng xử lý bằng máy (§ 147 Abs. 6 AO) | JSON-Schema-First - dữ liệu có cấu trúc, không phải PDF |
| Tính đầy đủ | Pre-commit hook kiểm tra mọi mục sổ cái đều có source_sha256 |
3. Tính bất biến (GoBD Rz. 146)
GoBD Rz. 146: "Các ghi chép không được thay đổi theo cách khiến nội dung ban đầu không còn xác định được."
Điều này có nghĩa là: Sau khi ghi sổ, dữ liệu không được thay đổi. Việc sửa chữa phải được thực hiện dưới dạng mục ghi mới kèm lý do.
| Yêu cầu GoBD | Git đáp ứng như thế nào |
|---|---|
| Không sửa đổi sau sự kiện | Các commit Git là bất biến (hash SHA-256) |
| Sửa chữa bằng mục ghi mới | Commit mới với obsolescence: superseded_by |
| Sửa chữa truy vết được | git log hiển thị bản gốc + bản sửa + lý do |
| Protected branches | Nhánh main được bảo vệ, không force-push |
| Tag làm dấu phê duyệt | Tag đánh dấu các trạng thái đã phê duyệt (bất biến) |
Commit 1"] B --> TAG["Tag v1.0
freigegeben"] K["Korrektur nötig"] K --> C["Korrektur-Buchung
Commit 2"] C --> OBS["obsolescence:
status: superseded
superseded_by: Commit 2"] B --> OBS style B fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style TAG fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style K fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style C fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style OBS fill:#E5E7EB,stroke:#6B7280,color:#0F1B33
Quan trọng: Về mặt kỹ thuật, Git cho phép
git rebasevàgit commit --amend- nhưng chỉ lịch sử tuyến tính không bị viết lại mới tuân thủ GoBD. Pre-commit hook kiểm tra rằng không có force-push nào lênmainvà các sửa chữa được thực hiện dưới dạng commit mới kèm đánh dấu obsolescence.
GoBD và AO - cơ sở pháp lý
Ordnungsvorschriften
für Buchführung"] AO --> S147["§ 147 AO
Aufbewahrung
von Unterlagen"] S146 --> GoBD["GoBD
(BMF-Schreiben)
Konkretisierung
für elektronische Systeme"] S147 --> GoBD GoBD --> R146["Rz. 146
Nachvollziehbarkeit
Unveränderbarkeit"] GoBD --> R147["Rz. 147
Nachprüfbarkeit"] GoBD --> R64["Rz. 64–91
Verfahrensdokumentation"] GoBD --> R152["Rz. 152
Aufbewahrungsfristen"] style AO fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style S146 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style S147 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style GoBD fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style R146 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R147 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R64 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R152 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
| Nguồn pháp lý | Nội dung | Liên hệ GoBD |
|---|---|---|
| § 146 Abs. 1 AO | Các bút toán "riêng biệt, đầy đủ, đúng đắn, kịp thời và có trật tự" | Rz. 146 (khả năng truy vết) |
| § 146 Abs. 4 AO | Không thay đổi theo cách làm nội dung ban đầu không thể nhận biết | Rz. 146 (tính bất biến) |
| § 146 Abs. 5 AO | "luôn sẵn có và có thể đọc ngay lập tức" | Rz. 152 (khả năng truy cập) |
| § 147 Abs. 2 AO | "có thể được xử lý bằng máy" | Rz. 147 (khả năng kiểm chứng) |
| § 147 Abs. 3 AO | Thời hạn lưu trữ (10/8/6 năm) | Rz. 152 (lưu trữ) |
| § 147 Abs. 6 AO | Truy cập dữ liệu khi kiểm tra bên ngoài (Z1/Z2/Z3) | Rz. 147 (truy cập dữ liệu) |
Truy cập dữ liệu theo GoBD (Z1, Z2, Z3)
GoBD định nghĩa ba hình thức truy cập mà cơ quan quản lý thuế có thể sử dụng khi kiểm tra bên ngoài:
| Hình thức truy cập | Mô tả | Git hỗ trợ như thế nào |
|---|---|---|
| Z1 (truy cập trực tiếp) | Kiểm tra viên sử dụng hệ thống của doanh nhân | git log, git show, git grep trực tiếp trong repo |
| Z2 (truy cập gián tiếp) | Kiểm tra viên đưa ra yêu cầu, doanh nhân thực hiện xử lý | git log --since, git grep, xuất JSON |
| Z3 (chuyển giao phương tiện lưu trữ) | Doanh nhân giao dữ liệu trên phương tiện lưu trữ | git bundle làm kho lưu trữ self-contained |
Z3 là điểm mạnh của Git: Một
git bundlechứa toàn bộ repo (lịch sử, commit, tag) trong một file duy nhất - self-contained, không cần tài khoản cloud, không cần giấy phép phần mềm. Kiểm tra viên có thể dùnggit cloneđể tái tạo repo trên hệ thống của mình và thực hiện mọi thao tác Z1/Z2. Đó là xuất Z3 tuân thủ GoBD "by Design".
Mở rộng GitCover: Static-Web làm kênh truy cập cho kiểm tra viên (Z3+)
Ngoài git bundle, các công cụ GitCover (nếu được cài đặt
và sử dụng) có thể trong khuôn khổ một kết thúc kỳ kế toán tạo ra
một static website điều hướng được bằng trình duyệt từ Tenant
Evidence Package. Website này bao gồm:
- Tất cả tài liệu DMS (chứng từ, hóa đơn, hợp đồng) dưới dạng HTML/PDF
- Hợp đồng xuyên kỳ và các tài liệu có thời hạn dài
- Báo cáo phân tích (sổ cái, nhật ký, BWA, bảng cân đối kế toán)
- Quy định quy trình (tài liệu hóa quy trình, hệ thống tài khoản)
- Sidecar (
.v7g.mdvới V7GUID, SHA-256, taxonomy) - Bằng chứng toàn vẹn (manifest kèm checksum)
(Periodenabschluss)"] EP --> GB["git bundle
(Z3-Basis)"] EP --> SW["Static-Web-Generator
(GitCover Tool)"] GB --> CL["git clone
(Prüfer rekonstruiert Repo)"] SW --> FS["Filesystem-Based-Web
(HTML + PDF + JSON)"] FS --> BR["Browser
(Prüfer navigiert)"] FS --> IDX["Index-Seiten
(nach Datum, Belegart, V7GUID)"] FS --> NAV["Navigation
(retrograd/progressiv)"] FS --> SRH["Suche
(Volltext, SHA-256, V7GUID)"] style EP fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style GB fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SW fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style CL fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style FS fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style BR fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style IDX fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style NAV fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style SRH fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Phương pháp an toàn nhất từ trước đến nay: Một web dựa trên filesystem không cần hệ thống IAM, không cần hạ tầng máy chủ, không cần cơ sở dữ liệu, không cần kết nối mạng. Kiểm tra viên mở
index.htmltrong trình duyệt của mình - offline, cục bộ, không cần xác thực. Tính toàn vẹn được đảm bảo bằng manifest với checksum SHA-256, chứ không phải bằng quyền truy cập. Đây là hình thức truy cập an toàn nhất cho kiểm tra viên, vì không tồn tại bề mặt tấn công nào.
| Thuộc tính | git bundle (Z3) | Static-Web (Z3+) |
|---|---|---|
| Kiểm tra viên cần | Git đã cài đặt | Chỉ cần trình duyệt |
| Điều hướng | CLI (git log, git show) |
Trình duyệt (nhấp chuột, tìm kiếm) |
| Phân tích | Thủ công qua git grep |
Các trang index được tạo sẵn |
| Tài liệu DMS | Trong repo (PDF, XML) | Nhúng dưới dạng HTML/PDF |
| Tài liệu quy trình | Markdown trong repo | Được render thành HTML |
| Tính toàn vẹn | Git SHA-256 | Manifest + SHA-256 cho từng file |
| Cần IAM | Không | Không |
| Cần mạng | Không | Không |
| Bề mặt tấn công | Tối thiểu | Tối thiểu (chỉ filesystem) |
Ví dụ thực tế: Doanh nhân (
E1) lập kết thúc kỳ kế toán cho FY2026. Công cụ GitCover tạo ra một Tenant Evidence Package vớigit bundle(dành cho kiểm tra viên am hiểu kỹ thuật) và một static website (dành cho kiểm tra viên chỉ muốn dùng trình duyệt). Cả hai được chuyển giao trên một USB - self-contained, offline, không cần IAM. Kiểm tra viên tự chọn mởgit clonehayindex.html.
Đòn bẩy rủi ro
| Hôm nay (chi phí thấp) | Ngày mai (an toàn trước sửa đổi) | Rủi ro được giảm thiểu |
|---|---|---|
| Git repo làm phương tiện ghi sổ kế toán | GoBD Rz. 146/147 được đáp ứng by Design | Bị ước tính thuế § 162 AO |
git log làm bằng chứng |
Khả năng truy vết trong thời gian hợp lý | Bị phủ nhận tính tuân thủ quy định |
| V7GUID + SHA-256 cho mỗi mục | Truy vết ngược/xuôi | Bị hạ giá trị chứng cứ |
| Tag + protected branches | Tính bất biến sau phê duyệt | Vi phạm GoBD do sửa đổi sau sự kiện |
git bundle làm xuất Z3 |
Chuyển giao phương tiện lưu trữ không cần tài khoản cloud | Vi phạm GoBD do hệ thống cũ không truy cập được |
| Đánh dấu obsolescence | Sửa chữa truy vết được | Các thay đổi bị che giấu |
| Static-Web với vai trò Z3+ (kết thúc kỳ kế toán) | Truy cập của kiểm tra viên không cần IAM, chỉ cần trình duyệt | **Vi phạm GoBD do dữ liệu không thể truy cập/không thân thiện với kiểm tra viên ** |
Yêu cầu Harness (xem trước)
Có thể suy ra từ ED04:
| ID | Yêu cầu | Mức ưu tiên |
|---|---|---|
| FA-6.1 | Tài liệu hóa quy trình dưới dạng artefact Git có phiên bản | MUST |
| FA-6.2 | Sổ cái (journal) dưới dạng JSON với V7GUID + SHA-256 cho mỗi mục | MUST |
| FA-6.5 | Lưu trữ 10 năm qua Evidence Package (git bundle) | MUST |
| FA-6.6 | Tính bất biến sau phê duyệt (tag, protected branches) | MUST |
| FA-6.7 | Trình tạo Static-Web cho kết thúc kỳ kế toán (Z3+): website điều hướng bằng trình duyệt từ Tenant Evidence Package, không cần IAM, dựa trên filesystem | SHOULD |
| TA-2.1 | Pre-commit: xác thực JSON Schema | MUST |
| TA-2.4 | Pre-commit: kiểm tra trạng thái obsolescence (không commit lên obsolete) |
SHOULD |
Danh sách yêu cầu đầy đủ nằm trong Harness-Anforderungen.md.
Nguồn
- GoBD (công văn BMF ngày 28.11.2019, BStBl I S. 1269, sửa đổi lần cuối 14.07.2025, BStBl I S. 1502)
- AO (§ 146 - quy định về trật tự, § 147 - lưu trữ, § 162 - ước tính thuế, § 152 - phụ phí chậm nộp)
- HGB (§§ 238–241 - nghĩa vụ ghi sổ kế toán)
AFJD/agents/(đã ẩn danh hóa) - khái niệm SSoT với cách dùng Git tuân thủ GoBDGitCover.Ledger/docs/02-Tenant-Evidence-Package.md- khái niệm Tenant Evidence Package (kết thúc kỳ kế toán, vai trò trong repo, quy tắc tính đầy đủ)GitCover.Toolbox- bộ công cụ GitCover (phân tích, V7GUID, thành phần UI)
Cấu trúc nguồn và các liên kết tham chiếu CDN
| Vai trò | Địa điểm | Mục đích |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Kho lưu trữ chính tắc (ký GPG, có phiên bản) |
| Public OSS Mirror / CDN | codeberg.org/gitcover-commons | Bản sao chỉ đọc; khám phá FLOSS |
| Community Hub | github.com/gitcover-commons | Issues & Discussions; tham chiếu mã nguồn trên Codeberg |
Lưu ý: Việc phân bổ giữa nguồn, mirror và community hub này phản ánh hiện trạng và có thể thay đổi. Vui lòng kiểm tra nguồn chính tắc tương ứng trên gitcover.org để biết trạng thái hiện tại.