ED11 - Tax Office: Tax Number, § 60a AO, Wage Tax Return

Problem

After the company is founded and the trade registered, the tax office (FA) gets in touch - but in the SME sector it is unclear which obligations arise from this and how they are evidenced in the repo:

Core message

Tax office obligations in the Git repo mean:

  1. Tax numbers as registry entries - central storage in registry/ with sidecar, one number per type of tax
  2. Wage tax return as JSON artefact - LStA with source_sha256 referencing the ELSTER receipt
  3. ELSTER certificate documented - .pfx file with sidecar (not the certificate itself into the repo, but the evidence)
  4. Deadline check for all FA filings - LStA, UStA, ESt/KSt with automatic warning
  5. § 60a AO notice as document with sidecar - exemption notice with validity tracking

Compliance by Design: FA obligations are not managed retroactively; instead, they are structurally captured through registry entries with sidecars, deadline checks and JSON artefacts.

Tax numbers in the registry directory

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR R["registry/"] R --> KST["KSt-Steuernummer"] R --> UST["USt-Steuernummer"] R --> LST["LSt-Steuernummer"] R --> WID["W-IdNr"] R --> UID["USt-IdNr"] R --> A60["§ 60a AO Bescheid"] R --> EL["ELSTER-Zertifikat"] style R fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style KST fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style UST fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style LST fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style WID fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style UID fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style A60 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style EL fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Identifier Source Use Storage
KSt tax number FA notification Corporate income tax return registry/finanzamt/ + sidecar
USt tax number FA notification VAT advance return, annual return registry/finanzamt/ + sidecar
LSt tax number FA notification Wage tax return, wage tax certificate registry/finanzamt/ + sidecar
W-IdNr BZSt notification Business identification number registry/bzst/ + sidecar
USt-IdNr BZSt notification VAT identification number (EU) registry/bzst/ + sidecar
ELSTER certificate ELSTER registration Electronic filings registry/elster/ + sidecar
§ 60a AO notice FA notice Recognition of charitable status registry/finanzamt/ + sidecar

Practical example: The KMU has KSt tax number <STNR>, USt tax number <STNR>, LSt tax number <STNR>, W-IdNr <WID>, USt-IdNr DE<UID>. Each number is stored as a document with sidecar in registry/. The § 60a AO notice (recognition of charitable status) is also stored there, with validity tracking.

§ 60a AO notice - charitable status

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD A["Antrag auf Gemeinnützigkeit"] A --> F["FA prüft Satzung + Zweck"] F --> B["§ 60a AO Bescheid"] B --> G["Gemeinnützigkeit anerkannt"] G --> F1["KSt/PV befreit"] G --> F2["USt teilweise befreit"] G --> F3["VBG-Freistellung möglich"] style A fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style F fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style B fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style G fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style F1 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style F2 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style F3 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Property Value
Legal basis § 60a Abs. 1 AO
Content Recognition of charitable status (§§ 51-68 AO)
Effect KSt exemption, PV exemption, partial USt exemption, VBG exemption possible
Validity Until revocation or withdrawal
Storage registry/finanzamt/ with sidecar (SHA-256 + V7GUID:uuidV7)

Important: The § 60a AO notice is the basis for all charitable privileges (KSt, USt, VBG, flat rates). Without this notice, tax exemptions are out of reach. The notice must be stored in the repo with a sidecar so that evidence can be provided during an audit.

Wage tax return (§ 41a EStG)

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD L["Lohnabrechnung erstellt"] L --> LA["LStA berechnet"] LA --> EL["ELSTER-Übermittlung"] EL --> Q["ELSTER-Quittung"] Q --> R["Quittung als Beleg mit Sidecar"] R --> D["LStA als JSON-Artefakt im Repo"] D --> F["Fristen-Check: nächste LStA"] style L fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style LA fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style EL fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style Q fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style D fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style F fill:#FDBA74,stroke:#C2410C,color:#0F1B33
Step Action Deadline GitCover implementation
Payroll Gross-net calculated (see ED14) monthly JSON artefact in the repo
LStA calculated LSt, Soli, KiSt from the payroll - tags: ["lsta", "§41a-estg"]
ELSTER transmission Electronically via ELSTER 10th of the following month (+5 days) ELSTER receipt as document
Receipt archived ELSTER receipt with sidecar - source_sha256 in the LStA entry
Deadline check Next LStA deadline monthly FRISTEN_CHECK.md + automatic warning

LStA as JSON artefact

{
  "$schema": "https://gitcover.org/schemas/diary-entry-1.0.schema.json",
  "V7GUID": "<V7GUID-Class-aus-Registry>",
  "uuidV7": "<uuidV7-Object-mit-vorgegebener-Zeitmarke>",
  "author": "E1",
  "role": "Lohnverantwortlicher",
  "tenant": "ORG-1",
  "sphere": "ideell",
  "source": "FA",
  "source_sha256": "<SHA-256-der-ELSTER-Quittung>",
  "tags": ["lsta", "§41a-estg", "nullmeldung", "aktivrente"],
  "lsta": {
    "monat": "09/2026",
    "brutto": 2000.00,
    "lst": 0.00,
    "soli": 0.00,
    "kist": 0.00,
    "freibetrag_aktivrente": 2000.00,
    "art": "nullmeldung"
  }
}

Note: The uuidV7 is the DocID of the entry. The composite key V7GUID:uuidV7 serves for storage organisation and DB queries. The lsta object documents the wage tax return with all components. For Aktivrente (§ 3 Nr. 21 EStG), the LSt = 0.00 - it is a nil return (see ED14).

Documenting the ELSTER certificate

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD E["ELSTER-Zertifikat"] E --> P["Persönliches Zertifikat (E1)"] E --> O["Organisations-Zertifikat (ORG-1)"] P --> PI[".pfx-Datei installiert"] O --> OI[".pfx-Datei installiert (geplant)"] PI --> D["Sidecar im Repo
(nicht die .pfx selbst)"] OI --> D D --> N["Nachweis: Zertifikat aktiv
+ ELSTER-Test-Übermittlung"] style E fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style P fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style O fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style PI fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style OI fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style D fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style N fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Certificate type Status Storage in the repo
Personal certificate (E1) active (since 260522) Sidecar in registry/elster/ (not the .pfx itself)
Organisation certificate (ORG-1) open (deadline 200826) planned: sidecar after activation

Important - .pfx not into the repo: The .pfx file (certificate + private key) is not added to the Git repo - it contains cryptographic secrets. Instead, a sidecar is stored that documents the existence and activation of the certificate (date, status, ELSTER test receipt). The .pfx file is kept securely outside the repo (e.g. on an encrypted drive).

See ED12: The practical use of the ELSTER certificate (authority interface practice, DE-Mail, facilitation via GitCover) is covered in ED12.

Deadline monitoring for FA filings

Filing Deadline Frequency GitCover monitoring
Wage tax return 10th of the following month (+5 days electronically) monthly FRISTEN_CHECK.md + automatic warning
VAT advance return 10th of the following month monthly/quarterly FRISTEN_CHECK.md + automatic warning
ESt/KSt return 31 July (extended by tax advisor) annually FRISTEN_CHECK.md
VAT annual return 31 July (extended) annually FRISTEN_CHECK.md
Wage tax certificate 28 February of the following year annually FRISTEN_CHECK.md

Practical tip: The deadline check is maintained as a Git artefact and updated with every commit. The automatic warning (see ED07) warns 14 days before an FA deadline expires. This way, no missed deadline is overlooked any more - and § 152 AO (late-filing surcharge of up to EUR 25,000) is avoided.

Risk leverage

Today (cheap) Tomorrow (audit-proof) Risk mitigated
Tax numbers in registry/ with sidecar All identifiers centrally evidenced Dispute over the tax number
§ 60a AO notice with sidecar Charitable status evidenced Withdrawal if evidence is missing
LStA as JSON artefact + ELSTER receipt Wage tax return traceable Late-filing surcharge § 152 AO
ELSTER certificate with sidecar Electronic filings evidenced Non-submission § 370 AO
Deadline check for all FA filings Missed deadlines avoided Late-filing surcharges § 152 AO

Harness requirement (preview)

Derivable from ED11:

ID Requirement Priority
FA-12.1 ELSTER facilitation: LStA, UStA, wage tax certificate; receipt as document with sidecar MUST
FA-12.8 Authority identifier registry (StNr, W-IdNr, USt-IdNr, SV-BetrNr, VBG-Mitgliedsnr, IK) MUST
FA-8.1 § 60a AO notice storage and validity tracking MUST (charitable)
FA-4.1 Deadline check file (checks/FRISTEN_CHECK.md) MUST
FA-4.2 Deadline entries with date, type, tenant, document reference MUST
FA-4.3 Automatic warning for deadlines under 14 days SHOULD

The complete requirements list 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 mapping 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.