ED04 - Cơ sở GoBD: Truy vết, Kiểm toán được, Không thay đổi
Vấn đề
Một doanh nhân bắt đầu kế toán - và đối mặt với câu hỏi: GoBD yêu cầu chính xác gì, và tôi đáp ứng thế nào không cần phần mềm chuyên dụng đắt tiền?
Thực hành hiện nay trong lĩnh vực SME:
- GoBD như sách bảy ấn - GoBD (thư BMF, 146 trang) trừu tượng, diễn đạt pháp lý, hầu như không tiếp cận được với người ngoài
- "Kế toán thuế làm việc đó" - nhiều doanh nhân ủy quyền GoBD cho StB mà không tự hiểu cái gì được yêu cầu - và trả tiền cho điều đó
- Giải pháp đảo - phần mềm lương, kế toán, lưu trữ chứng từ mỗi thứ riêng, không đồng nhất GoBD đầu cuối
- PDF là "điện tử" - nhiều người tin một PDF trên ổ cứng đáp ứng GoBD - nhưng GoBD yêu cầu khả năng đánh giá bằng máy (§ 147 Abs. 6 AO), không chỉ lưu trữ
- Không có tài liệu quy trình - GoBD Rz. 64-91 yêu cầu tài liệu quy trình, nhưng ai trong SME có?
- Thay đổi sau đó - booking được "sửa" mà không truy vết được - GoBD Rz. 146 yêu cầu không thay đổi
Tuyên bố cốt lõi
GoBD yêu cầu ba nguyên lý cốt lõi mà Git đáp ứng by Design:
- Truy vết (GoBD Rz. 146) - mỗi mục phải truy vết được (Ai? Khi nào? Cái gì? Tại sao?)
- Kiểm toán được (GoBD Rz. 147) - kế toán phải kiểm toán được (truy vết retrograde/progressive)
- Không thay đổi (GoBD Rz. 146) - sau booking, dữ liệu không được thay đổi (sửa chữa là mục mới)
Git đáp ứng cả ba mang tính cấu trúc - không qua kiểm soát sau, mà qua 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: Sự tuân thủ GoBD không phát sinh qua kiểm toán sau, mà qua lựa chọn phương tiện. Bất kỳ ai làm việc trong Git repo đều đáp ứng truy vết, kiểm toán và không thay đổi mang tính cấu trúc - không qua kiểm soát bổ sung.
GoBD - Nguồn gốc và 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) là thư BMF ngày 28.11.2019 (BStBl I S. 1269), lần cuối sửa đổi 14.07.2025 (BStBl I S. 1502).
| Thuộc tính | Giá trị |
|---|---|
| Nhà xuất bản | Bundesministerium der Finanzen (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ơ quan thuế) |
| Cơ sở | § 146 AO (quy định trật tự), § 147 AO (lưu trữ), HGB (§§ 238-241) |
| Phạm vi | Mọi doanh nhân giữ sổ điện tử (thực tế: tất cả) |
| Quy mô | 146 số lề (Rz.) |
Quan trọng: GoBD không phải "khuyến nghị" - chúng là chỉ thị hành chính mà cơ quan thuế kiểm tra theo. Ai không đáp ứng GoBD có nguy cơ ước tính (§ 162 AO), phụ trễ (§ 152 AO) và trong trường hợp xấu nhất là thủ tục hình sự thuế (§ 370 AO).
Ba nguyên lý cốt lõi GoBD chi tiết
1. Truy vết (GoBD Rz. 146)
GoBD Rz. 146: "Kế toán phải sao cho một bên thứ ba có hiểu biết có thể có cái nhìn tổng quan về các giao dịch và tình hình doanh nghiệp trong thời gian hợp lý."
Nghĩa là: một kiểm toán viên (hoặc kế toán thuế, hoặc cán bộ thuế) phải có thể truy vết trong thời gian hợp lý điều gì đã xảy ra.
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Ai đã booking? | git log --author hiển thị mỗi tác giả commit |
| Khi nào booking? | uuidV7 chứa timestamp 48-bit (RFC 9562 §5.7) |
| Cái gì được booking? | Commit diff hiển thị chính xác cái gì thêm/đổi |
| Tại sao booking? | Commit message tài liệu hóa lý do |
| Trong role nào? | Trường role trong JSON artefact (GF, kế toán, R&D lead) |
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. Kiểm toán được (GoBD Rz. 147)
GoBD Rz. 147: "Kế toán phải sao cho có thể kiểm toán được."
Nghĩa là: kế toán phải truy vết retrograde và progressive (xem ED03):
- Retrograde: từ booking → chứng từ → mục nhật ký → V7GUID
- Progressive: từ chứng từ → booking → sổ cái → bảng cân đối đầu kỳ
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Truy vết retrograde | source_sha256 trong mục nhật ký → chứng từ |
| Truy vết progressive | V7GUID trong chứng từ → mục nhật ký → sổ cái |
| Đánh giá bằng máy (§ 147 Abs. 6 AO) | JSON-Schema-First - dữ liệu có cấu trúc, không PDF |
| Đầy đủ | Pre-Commit hook kiểm tra mỗi mục sổ cái có source_sha256 |
3. Không thay đổi (GoBD Rz. 146)
GoBD Rz. 146: "Các mục không được thay đổi theo cách mà nội dung gốc không còn xác định được."
Nghĩa là: sau booking, dữ liệu không được thay đổi. Sửa chữa phải là mục mới có lý do.
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Không thay đổi sau | Git commit không thay đổi (hash SHA-256) |
| Sửa chữa là mục mới | Commit mới với obsolescence: superseded_by |
| Sửa chữa truy vết | git log hiển thị gốc + sửa + lý do |
| Branch được bảo vệ | Branch main được bảo vệ, không force push |
| Tag làm dấu phát hành | Tag đánh dấu trạng thái phát hành (không đổi) |
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: Git về kỹ thuật cho phép
git rebasevàgit commit --amend- nhưng tuân thủ GoBD chỉ có lịch sử tuyến tính không viết lại. Pre-Commit hook kiểm tra không có force push lênmainvà sửa chữa là commit mới với đá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 | Tham chiếu GoBD |
|---|---|---|
| § 146 Abs. 1 AO | Booking "riêng lẻ, đầy đủ, đúng, đúng giờ và có trật tự" | Rz. 146 (truy vết) |
| § 146 Abs. 4 AO | Không thay đổi làm che nội dung gốc | Rz. 146 (không thay đổi) |
| § 146 Abs. 5 AO | "có sẵn bất cứ lúc nào và đọc được ngay" | Rz. 152 (khả dụng) |
| § 147 Abs. 2 AO | "có thể đánh giá bằng máy" | Rz. 147 (kiểm toán) |
| § 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 trong kiểm toán ngoài (Z1/Z2/Z3) | Rz. 147 (truy cập dữ liệu) |
Truy cập dữ liệu GoBD (Z1, Z2, Z3)
GoBD định nghĩa ba loại truy cập mà cơ quan thuế có thể dùng trong kiểm toán ngoài:
| Loại truy cập | Mô tả | Cách Git hỗ trợ |
|---|---|---|
| Z1 (truy cập trực tiếp) | Kiểm toán viên 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 toán viên đưa yêu cầu, doanh nhân đánh giá | git log --since, git grep, xuất JSON |
| Z3 (giao dữ liệu trên vật mang) | Doanh nhân giao dữ liệu trên vật mang | git bundle như archive self-contained |
Z3 là thế mạnh của Git: Một
git bundlechứa toàn bộ repo (lịch sử, commit, tag) trong một tệp duy nhất - self-contained, không tài khoản đám mây, không giấy phép phần mềm. Kiểm toán viên có thể tái tạo repo trên hệ thống của họ vớigit clonevà thực hiện mọi thao tác Z1/Z2. Đây là xuất Z3 tuân thủ GoBD "by Design".
Mở rộng GitCover: Static Web làm truy cập kiểm toán (Z3+)
Vượt git bundle, các GitCover tool (nếu cài đặt và sử dụng) có thể,
như một phần của đóng kỳ, tạo một trang web tĩnh có thể điều
hướng bằng trình duyệt từ Tenant Evidence Package. Trang web này
chứa:
- Tất cả tài liệu DMS (chứng từ, hóa đơn, hợp đồng) dạng HTML/PDF
- Hợp đồng xuyên kỳ và tài liệu dài hạn
- Đánh giá (sổ cái, journal, BWA, bảng cân đối)
- Quy định quy trình (tài liệu 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 với 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: Một web dựa trên filesystem không cần IAM, không hạ tầng server, không cơ sở dữ liệu, không kết nối mạng. Kiểm toán viên mở
index.htmltrong trình duyệt - offline, cục bộ, không xác thực. Toàn vẹn được đảm bảo qua manifest với checksum SHA-256, không qua quyền truy cập. Đây là hình thức truy cập kiểm toán an toàn nhất, vì không có bề mặt tấn công.
| Thuộc tính | git bundle (Z3) | Static Web (Z3+) |
|---|---|---|
| Kiểm toán viên cần | Git cài đặt | Chỉ trình duyệt |
| Điều hướng | CLI (git log, git show) |
Trình duyệt (click, tìm) |
| Đánh giá | Thủ công qua git grep |
Trang index tạo sẵn |
| Tài liệu DMS | Trong repo (PDF, XML) | Nhúng dạng HTML/PDF |
| Tài liệu quy trình | Markdown trong repo | Render HTML |
| Toàn vẹn | Git SHA-256 | Manifest + SHA-256 mỗi tệp |
| IAM cần | Không | Không |
| Mạng cần | 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) tạo đóng kỳ cho FY2026. GitCover tool tạo Tenant Evidence Package vớigit bundle(cho kiểm toán viên rành kỹ thuật) và trang web tĩnh (cho kiểm toán viên chỉ muốn dùng trình duyệt). Cả hai được giao trên USB - self-contained, offline, không IAM. Kiểm toán viên tự chọngit clonehay mởindex.html.
Đòn bẩy rủi ro
| Hôm nay (rẻ) | Ngày mai (kiểm toán được) | Rủi ro giảm |
|---|---|---|
| Git repo làm phương tiện kế toán | GoBD Rz. 146/147 by Design | Ước tính § 162 AO |
git log làm bằng chứng |
Truy vết trong thời gian hợp lý | Tranh chấp tính trật tự |
| V7GUID + SHA-256 mỗi mục | Truy vết retrograde/progressive | Hạ cấp giá trị chứng minh |
| Tag + Protected Branch | Không thay đổi sau phát hành | Vi phạm GoBD qua thay đổi sau |
git bundle làm xuất Z3 |
Giao vật mang không tài khoản đám mây | Vi phạm GoBD qua hệ thống cũ không khả dụng |
| Đánh dấu obsolescence | Sửa chữa truy vết | Thay đổi giấu |
| Static Web làm Z3+ (đóng kỳ) | Truy cập kiểm toán không IAM, chỉ trình duyệt | Vi phạm GoBD qua dữ liệu không tiếp cận/không thân thiện kiểm toán |
Yêu cầu Harness (Xem trước)
Dẫn xuất từ ED04:
| ID | Yêu cầu | Ưu tiên |
|---|---|---|
| FA-6.1 | Tài liệu quy trình là Git artefact có phiên bản | MUST |
| FA-6.2 | Sổ cái (journal) dạng JSON với V7GUID + SHA-256 mỗi mục | MUST |
| FA-6.5 | Lưu trữ 10 năm qua Evidence Package (Git bundle) | MUST |
| FA-6.6 | Không thay đổi sau phát hành (tag, protected branch) | MUST |
| FA-6.7 | Static-Web generator cho đóng kỳ (Z3+): trang web điều hướng được bằng trình duyệt từ Tenant Evidence Package, không IAM, dựa 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 trên obsolete) |
SHOULD |
Danh sách yêu cầu đầy đủ trong Harness-Anforderungen.md.
Nguồn
- GoBD (thư BMF ngày 28.11.2019, BStBl I S. 1269, lần cuối sửa 14.07.2025, BStBl I S. 1502)
- AO (§ 146 - quy định trật tự, § 147 - lưu trữ, § 162 - ước tính, § 152 - phụ trễ)
- HGB (§§ 238-241 - nghĩa vụ kế toán)
AFJD/agents/(ẩn danh) - khái niệm SSoT với sử dụng Git tuân thủ GoBDGitCover.Ledger/docs/02-Tenant-Evidence-Package.md- khái niệm Tenant Evidence Package (đóng kỳ, role repo, quy tắc đầy đủ)GitCover.Toolbox- Bộ công cụ GitCover (phân tích, V7GUID, thành phần UI)
Topo nguồn và liên kết tham chiếu CDN
| Role | Địa điểm | Mục đích |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Lưu trữ chính thức (ký GPG, có phiên bản) |
| Public OSS Mirror / CDN | codeberg.org/gitcover-commons | Mirror 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 ý: Phân công nguồn, mirror và community hub này phản ánh trạng thái hiện tại và có thể thay đổi. Vui lòng kiểm tra nguồn chính thức tương ứng trên gitcover.org cho trạng thái hiện tại.