ED12 - GoBD and the Transparency Register: documenting the wB determination
Problem
The report to the Transparency Register (ED17) is only the tip of the iceberg. Beneath it lies a cluster of obligations that is decisive in audits and discrepancy procedures (§ 23a GwG) - and that cannot be fulfilled without documentation:
- "We have reported" - but the determination underlying the report is not traceable: Which sources were checked? Which shareholders were interviewed? When?
- Duty to investigate misjudged: If the company does not receive information from its shareholders, it must request information "to an appropriate extent" - and document these information requests and the information obtained (§ 20 Abs. 3a GwG). Without documentation, the duty is not fulfilled - the auditor sees only a result, not a process.
- Shareholders' information obligation unproven: Shareholders who are wB or who are directly controlled by a wB must provide the company with the necessary information and notify any change without delay (§ 20 Abs. 3 GwG). Whether and when they did so is disputed - if the receipt is not documented.
- Fiction unjustified: Reporting fictitious wB (ED04) without a documented justification is incomplete - the justification belongs to the report.
- Change history with gaps: The Transparency Register requires that the entire period since 01.10.2017 (or since incorporation) be covered without gaps. Anyone who documents only the current state can no longer substantiate earlier constellations.
Key message
The wB determination is a process subject to documentation requirements - and therefore a GoBD case that belongs in the Git repo:
- Four obligations per association (§ 20 Abs. 1 GwG): obtain information on the beneficial owners, retain it, keep it up to date, and notify it to the register-keeping authority without delay. Three of the four are purely documentation obligations.
- Duty to investigate (§ 20 Abs. 3a GwG): Without information from the shareholders, the company must direct information requests to them - to an appropriate extent - and document the requests and the information received. The document is the proof of compliance with the duty.
- Information obligation (§ 20 Abs. 3 GwG): The wB and the shareholders directly controlled by them must provide information and notify changes without delay. The company documents the receipt as an artifact (sender, content, time of receipt) - in the event of a dispute, this is the evidence that the information obligation was fulfilled or that the company had to follow up.
- Retention: The information on wB must be retained - GoBD compliance here means: versioned, immutably traceable, with references to supporting documents. Git with SHA-256 references provides this structurally (ED08, ED09).
- History: Every determination is a new artifact - nothing is overwritten. Obsolescence tracking (
superseded_by) connects the generations: determination 2026-09 (chain A) → determination 2027-03 (chain B, after a share deal) → each with a complete source reference.
Compliance by Design: The determination artifact is created before the report (Schema-First) and referenced by the report - not the other way around. This means the report can be traced back to its basis at any time: report case number →
wb_ermittlung.json→ articles of association/list of shareholders (SHA-256). Retrograde traceability (ED03) applied to the GwG.
The determination process as a chain
(Gründung, Share Deal,
Kapitalerhöhung, GF-Wechsel)"] TRIGGER --> COLLECT["Angaben einholen
(§ 20 Abs. 3 GwG)
von Anteilseignern"] COLLECT -->|Angaben fehlen| ASK["Auskunftsersuchen
(§ 20 Abs. 3a GwG)
dokumentieren"] COLLECT -->|Angaben liegen vor| ANALYSE ASK -->|Antwort| ANALYSE["Kaskaden-Analyse
Kette prüfen, > 25 % / > 50 %
Schwellen bewerten"] ASK -->|keine Antwort| FIKTION["Fiktion prüfen
(§ 3 Abs. 2 S. 5 GwG)
Begründung dokumentieren"] ANALYSE --> FIKTION ANALYSE --> ERGEBNIS["Ergebnis:
wb_ermittlung.json
+ Sidecars"] FIKTION --> ERGEBNIS ERGEBNIS --> MELDUNG["Meldung vorbereiten
(→ ED17)
Gültigkeitsdatum ab Konstellation"] ERGEBNIS --> AUFBEWAHRUNG["Aufbewahrung +
Aktualhaltung
(Obsoleszenz-Tracking)"] style TRIGGER fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style COLLECT fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style ASK fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style ANALYSE fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style FIKTION fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style ERGEBNIS fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style MELDUNG fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style AUFBEWAHRUNG fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
The determination artifact (Schema-First)
{
"$schema": "https://gitcover.org/schemas/wb-ermittlung-1.0.schema.json",
"V7GUID": "WB_ERMITTLUNG",
"uuidV7": "01a065f3-dbbd-7000-8000-000000000001",
"tenant": "ORG-1",
"ermittelt_von": { "person": "E1", "role": "GF" },
"anlass": {
"typ": "gruendung",
"datum": "260901",
"belege": [
{ "art": "gesellschaftsvertrag", "sha256": "…" },
{ "art": "gesellschafterliste", "sha256": "…" }
]
},
"kette": [
{ "stufe": 1, "inhaber": "ORG-5", "art": "kapital", "anteil_prozent": 100,
"typ": "koerperschaft", "beholderrschung_ab": "100 %" }
],
"ergebnis": [
{ "person": "E1", "typ": "mittelbar", "art_interesse": "mittelbare Kontrolle über ORG-5",
"umfang": "100 % an ORG-5", "gueltig_ab": "260901" }
],
"fiktion": null,
"angabepflicht_eingaenge": [
{ "person": "E1", "art": "angaben_wb", "eingang": "260902",
"sha256": "…", "dokument": "angaben_e1_org1.json" }
],
"auskunftsersuchen": [],
"obsolescence": { "status": "active", "superseded_by": null, "superseded_at": null }
}
No
datetimefield: Here too, the capture time is embedded in theuuidV7(ED03). Dates in the content (gueltig_ab,eingang) are domain data of the determination (validity of the constellation, date of receipt of a submission) - not the capture time of the artifact.
What happens when changes occur
| Trigger | Follow-up work in the repo | Report |
|---|---|---|
| Share deal / transfer of shares | New wb_ermittlung.json, the old one receives superseded_by |
Amendment report as a follow-up order (not a correction!) |
| Capital increase (threshold touched) | New determination (thresholds re-evaluated) | Follow-up order |
| Change of managing director for a fictitious wB | Document the new fiction | Follow-up order (new representative) |
| Relocation / name change of a wB | Document the information-obligation receipt | Follow-up order (changed personal data) |
| Voting agreement / pool agreement | New determination (check "comparable control") | Follow-up order |
Pitfall "correction": Changes are submitted to the Transparency Register as a follow-up order - a correction order would overwrite the current entry instead of supplementing it chronologically. This is precisely why the history in the repo is so important: the register shows a chronological sequence, the repo the corresponding determination generations.
Retrograde/progressive traceability (GwG manifestation)
| Direction | Start | Resolution via | Target |
|---|---|---|---|
| Retrograde | Report case number | Journal entry → wb_ermittlung.json → SHA-256 |
Articles of association, list of shareholders |
| Progressive | Commercial register extract (new constellation) | New determination → amendment report | Updated register entry |
GoBD reference: Traceability (Rz. 146) and auditability (Rz. 147) of the GwG process. An auditor - whether supervisory authority or discrepancy procedure (ED18) - can work through the chain report → determination → supporting document without any follow-up questions.
Risk leverage
| Today (cheap) | Tomorrow (audit-proof) | Risk mitigated |
|---|---|---|
| Determination as JSON with supporting-document SHA-256 | Determination traceable without gaps | Fine "not determined / not documented" |
| Information requests as artifacts | Duty to investigate demonstrably fulfilled | Fine "failure to investigate" |
| Information-obligation receipts with sidecar | Dispute over the information rebutted | Burden-of-proof issue |
| Obsolescence generations instead of overwriting | Gapless history since 10/2017 or incorporation | Follow-up demand for earlier constellations |
| Report references determination | Report traceable back at any time | Discrepancy resolution without effort |
Harness requirement (preview)
| ID | Requirement | Priority |
|---|---|---|
| FA-12.1 | Schema wb-ermittlung-1.0 (determination, chain, result, fiction) |
MUST |
| FA-12.2 | Information requests (§ 20 Abs. 3a GwG) as documented artifacts | MUST |
| FA-12.3 | Information-obligation receipts with SHA-256 reference | MUST |
| FA-12.4 | Obsolescence tracking per determination generation | MUST |
| FA-12.5 | Trigger rule: trigger → determination → report (pre-receive hook checks the chain) | SHOULD |
The complete list of requirements in Harness-Anforderungen.md.
Sources
- Money Laundering Act (GwG): § 20 Abs. 1 (cluster of obligations), § 20 Abs. 3 (information obligation), § 20 Abs. 3a (duty to investigate), § 19 (report content), § 3 (wB definition, fiction)
- Federal Office of Administration: Information sheet on the notification obligation (follow-up orders vs. corrections; gapless coverage since 10/2017)
- GoBD (BMF letter): Rz. 146 (traceability), Rz. 147 (auditability)
- AO § 146 (bookkeeping obligations, retention in the domestic territory or by expedient procedure), § 147 (retention periods)
Source topology and CDN reference links
| Role | Location | Purpose |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Canonical storage (GPG-signed, versioned) |
| Public OSS Mirror / CDN | codeberg.org/gitcover-commons | Read-only mirror; FLOSS discovery |
| Community Hub | github.com/gitcover-commons | Issues & Discussions; source code reference to Codeberg |
Note: This assignment of sources, mirror and community hub reflects the current state and may change. Please check the respective canonical source on gitcover.org for the current state.