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:

Key message

The wB determination is a process subject to documentation requirements - and therefore a GoBD case that belongs in the Git repo:

  1. 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.
  2. 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.
  3. 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.
  4. 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).
  5. 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

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'6B7280'}}}%% flowchart TD TRIGGER["Auslöser
(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 datetime field: Here too, the capture time is embedded in the uuidV7 (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

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.