ED05 - Kiến thức cơ bản về GoBD: Tính có thể truy vết, Tính có thể kiểm tra, Tính bất biến
Vấn đề
Một doanh nhân bắt đầu ghi sổ kế toán - và đứng trước câu hỏi: GoBD yêu cầu cụ thể điều gì, và làm thế nào để tôi đáp ứng mà không cần phần mềm chuyên dụng đắt tiền?
Thực tế hiện nay trong lĩnh vực doanh nghiệp vừa và nhỏ (KMU):
- GoBD như một cuốn sách bảy ấn tín - GoBD (công văn của BMF, 146 trang) trừu tượng, được viết bằng ngôn ngữ pháp lý, người không chuyên khó tiếp cận
- "Việc đó do tư vấn thuế làm" - nhiều doanh nhân giao GoBD cho StB (tư vấn thuế), mà không tự hiểu yêu cầu là gì - và phải trả tiền cho việc đó
- Giải pháp riêng lẻ - phần mềm tiền lương, kế toán, lưu trữ chứng từ mỗi thứ riêng biệt, không có sự tuân thủ GoBD xuyên suốt
- PDF là "điện tử" - nhiều người tin rằng 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 một tài liệu quy trình (Verfahrensdoku), nhưng ai trong doanh nghiệp vừa và nhỏ có một tài liệu như vậy?
- Thay đổi sau đó - các bút toán bị "sửa", mà không có thay đổi có thể truy vết - GoBD Rz. 146 yêu cầu tính bất biến
Tuyên bố cốt lõi
GoBD yêu cầu ba nguyên tắc cốt lõi, mà Git by Design (theo thiết kế) đáp ứng:
- Tính có thể truy vết (GoBD Rz. 146) - mỗi mục phải có thể truy vết (Ai? Khi nào? Cái gì? Tại sao?)
- Tính có thể kiểm tra (GoBD Rz. 147) - việc ghi sổ phải có thể kiểm tra (khả năng theo dõi 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 đổi là các mục mới)
Git đáp ứng cả ba về mặt cấu trúc - không phải bằng các kiểm soát bổ sung sau đó, mà bằng 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 từ việc kiểm tra sau đó, mà từ việc lựa chọn phương tiện. Ai làm việc trong Git-Repo sẽ đáp ứng tính có thể truy vết, tính có thể kiểm tra và tính bất biến về mặt cấu trúc - không phải bằng các kiểm soát bổ sung.
GoBD - Nguồn gốc và hiệu lực
GoBD (Nguyên tắc quản lý 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ư truy cập dữ liệu) là một công văn của BMF ngày 28.11.2019 (BStBl I S. 1269), được sửa đổi lần cuối vào ngày 14.07.2025 (BStBl I S. 1502).
| Thuộc tính | Giá trị |
|---|---|
| Cơ quan phát 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 đối với cơ quan thuế) |
| Cơ sở | § 146 AO (quy định về trật tự), § 147 AO (lưu trữ), HGB (§§ 238–241) |
| Hiệu lực | Đối với tất cả doanh nhân ghi sổ điện tử (trên thực tế: tất cả) |
| Phạm vi | 146 số lề (Rz.) |
Quan trọng: GoBD không phải là "khuyến nghị" - chúng là chỉ thị hành chính mà theo đó cơ quan thuế kiểm tra. Ai không đáp ứng GoBD sẽ đối mặt với việc ước tính thuế (§ 162 AO), phụ phí nộp muộn (§ 152 AO) và trong trường hợp xấu nhất là thủ tục tố tụng hình sự về thuế (§ 370 AO).
Ba nguyên tắc cốt lõi của GoBD chi tiết
1. Tính có thể truy vết (GoBD Rz. 146)
GoBD Rz. 146: "Việc ghi sổ phải được thiết kế sao cho một bên thứ ba có chuyên môn có thể có được cái nhìn tổng quan về các giao dịch kinh doanh và tình hình của doanh nghiệp trong thời gian hợp lý."
Điều này có nghĩa là: Một kiểm toán viên (hoặc tư vấn thuế, hoặc viên chức thuế) phải có thể truy vết trong thời gian hợp lý những gì đã xảy ra.
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Ai đã ghi sổ? | git log --author hiển thị từng tác giả commit |
| Khi nào được ghi sổ? | uuidV7 chứa dấu thời gian 48-bit (RFC 9562 §5.7) |
| Cái gì đã được ghi sổ? | Commit-Diff hiển thị chính xác những gì đã được thêm/thay đổi |
| Tại sao được ghi sổ? | Commit-Message ghi lại lý do |
| Trong vai trò nào? | Trường role trong tạo tác 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. Tính có thể kiểm tra (GoBD Rz. 147)
GoBD Rz. 147: "Việc ghi sổ phải được thiết kế sao cho có thể kiểm tra được."
Điều này có nghĩa là: Việc ghi sổ phải có thể theo dõi ngược và xuôi (xem ED03):
- Ngược: từ bút toán → chứng từ → mục nhật ký → V7GUID
- Xuôi: từ chứng từ → bút toán → sổ nhật ký → bảng cân đối mở đầu
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Khả năng theo dõi ngược | source_sha256 trong mục nhật ký → chứng từ |
| Khả năng theo dõi xuôi | V7GUID trong chứng từ → mục nhật ký → sổ nhật ký |
| Khả năng đánh giá 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 rằng mỗi mục sổ nhật ký có source_sha256 |
3. Tính bất biến (GoBD Rz. 146)
GoBD Rz. 146: "Các mục không được thay đổi theo cách khiến nội dung ban đầu không còn có thể 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 đổi phải được thực hiện như các mục mới kèm lý do.
| Yêu cầu GoBD | Cách Git đáp ứng |
|---|---|
| Không thay đổi sau đó | Các commit Git là bất biến (băm SHA-256) |
| Sửa đổi là các mục mới | Các commit mới với obsolescence: superseded_by |
| Sửa đổi có thể truy vết | git log hiển thị bản gốc + sửa đổi + lý do |
| Protected Branches | Nhánh main được bảo vệ, không có force-push |
| Tags làm dấu phát hành | Các tag đánh dấu trạng thái đã phát hành (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 viết lại là phù hợp với GoBD. Pre-Commit-Hook kiểm tra rằng không có force-push lên
mainvà rằng các sửa đổi được thực hiện như các commit mới với đánh dấu lỗi thời (Obsoleszenz).
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 | Bút toán "riêng lẻ, đầy đủ, đúng đắn, kịp thời và có trật tự" | Rz. 146 (Tính có thể truy vết) |
| § 146 Abs. 4 AO | Không thay đổi làm cho 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 (Tính sẵn có) |
| § 147 Abs. 2 AO | "có thể được đánh giá bằng máy" | Rz. 147 (Tính có thể kiểm tra) |
| § 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 GoBD (Z1, Z2, Z3)
GoBD định nghĩa ba loại truy cập mà cơ quan quản lý tài chính có thể sử dụng trong một cuộc kiểm tra bê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 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 toán viên đưa ra yêu cầu, doanh nhân đánh giá | git log --since, git grep, xuất JSON |
| Z3 (bàn giao vật mang dữ liệu) | Doanh nhân bàn giao dữ liệu trên vật mang dữ liệu | git bundle như kho lưu trữ tự chứa |
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 tệp duy nhất - tự chứa, không cần tài khoản cloud, không cần giấy phép phần mềm. Kiểm toán 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 tất cả các thao tác Z1/Z2. Đó là xuất Z3 phù hợp với GoBD "by Design".
Phần mở rộng GitCover: Static-Web làm truy cập cho kiểm toán 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ể tạo ra một Static-Website có thể điều hướng bằng trình duyệt
từ Tenant Evidence Package trong khuôn khổ kết thúc kỳ. Website này chứa:
- 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à tài liệu dài hạn
- Đánh giá (sổ nhật ký, journal, BWA, bảng cân đối)
- Quy định quy trình (tài liệu quy trình, kế hoạch tài khoản)
- Sidecar (
.gc.mdvới V7GUID, SHA-256, phân loại) - 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 Filesystem-Based-Web 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 toán viên mở
index.htmltrong trình duyệt của mình - ngoại tuyến, 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, không phải bằng quyền truy cập. Đó là hình thức truy cập an toàn nhất cho kiểm toán viên, 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 cài đặt | Chỉ trình duyệt |
| Điều hướng | CLI (git log, git show) |
Trình duyệt (nhấp, tìm kiếm) |
| Đánh giá | Thủ công qua git grep |
Các trang chỉ mục được tạo trước |
| Tài liệu DMS | Trong repo (PDF, XML) | Được nhúng dưới dạng HTML/PDF |
| Tài liệu quy trình | Markdown trong repo | Được kết xuất dưới dạng HTML |
| Tính toàn vẹn | Git-SHA-256 | Manifest + SHA-256 cho mỗi tệp |
| 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) tạo kết thúc kỳ cho FY2026. Công cụ GitCover tạo một Tenant Evidence Package vớigit bundle(cho kiểm toán viên có kỹ năng kỹ thuật) và một Static-Website (cho kiểm toán viên chỉ muốn dùng trình duyệt). Cả hai được bàn giao trên một USB stick - tự chứa, ngoại tuyến, không cần IAM. Kiểm toán viên tự chọn mởgit clonehayindex.html.
Đòn bẩy rủi ro
| Hôm nay (rẻ) | Ngày mai (an toàn kiểm toán) | Rủi ro được giảm thiểu |
|---|---|---|
| Git-Repo làm phương tiện ghi sổ | GoBD Rz. 146/147 được đáp ứng by Design | Ước tính thuế § 162 AO |
git log làm bằng chứng |
Tính có thể truy vết trong thời gian hợp lý | Phủ nhận tính đúng quy định |
| V7GUID + SHA-256 cho mỗi mục | Khả năng theo dõi ngược/xuôi | Giảm giá trị chứng cứ |
| Tags + Protected Branches | Tính bất biến sau khi phát hành | Vi phạm GoBD do thay đổi sau đó |
git bundle làm xuất Z3 |
Bàn giao vật mang dữ liệu không cần tài khoản cloud | Vi phạm GoBD do hệ thống cũ không khả dụng |
| Đánh dấu lỗi thời | Sửa đổi có thể truy vết | Thay đổi bị che giấu |
| Static-Web làm Z3+ (kết thúc kỳ) | Truy cập cho kiểm toán viên không cần IAM, chỉ 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 toán viên ** |
Yêu cầu Harness (Xem trước)
Có thể suy ra từ ED05:
| ID | Yêu cầu | Ưu tiên |
|---|---|---|
| FA-6.1 | Tài liệu quy trình như tạo tác Git được quản lý phiên bản | MUST |
| FA-6.2 | Sổ nhật ký (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-Packages (Git-Bundles) | MUST |
| FA-6.6 | Tính bất biến sau khi phát hành (Tags, Protected Branches) | MUST |
| FA-6.7 | Trình tạo Static-Web cho kết thúc kỳ (Z3+): website có thể đ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 lỗi thời (không commit lên obsolete) |
SHOULD |
Danh sách yêu cầu đầy đủ 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, § 152 - phụ phí nộp muộn)
- HGB (§§ 238–241 - nghĩa vụ ghi sổ)
E1/agents/(ẩn danh) - khái niệm SSoT với việc sử dụng Git phù hợp GoBDGitCover.Ledger/docs/02-Tenant-Evidence-Package.md- khái niệm Tenant Evidence Package (kết thúc kỳ, vai trò repo, quy tắc đầ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à liên kết tham chiếu CDN
| Vai trò | Vị trí | Mục đích |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Kho lưu trữ chuẩn (ký GPG, được quản lý 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 loại nguồn, mirror và community hub này phản ánh tình trạng hiện tại và có thể thay đổi. Vui lòng kiểm tra nguồn chuẩn tương ứng trên gitcover.org để biết tình trạng hiện tại.