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

Problem

After incorporation and business registration, 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:

Key Message

Tax office obligations in the Git repo mean:

  1. Tax numbers as registry entries - central storage in registry/ with sidecar, one number per tax type
  2. Wage tax return as a 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 auto-warning
  5. § 60a AO notice as a document with sidecar - notice of exemption with validity tracking

Compliance by Design: FA obligations are not managed retroactively, but 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, LSt certificate registry/finanzamt/ + sidecar
W-IdNr BZSt notification Economic 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 Non-profit status recognition 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 non-profit status) is also stored there, with validity tracking.

§ 60a AO Notice - Non-Profit 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 non-profit status (§§ 51-68 AO)
Effect KSt exemption, PV exemption, partial USt exemption, VBG exemption possible
Validity Until revocation or until withdrawal
Storage registry/finanzamt/ with sidecar (SHA-256 + V7GUID:uuidV7)

Important: The § 60a AO notice is the basis for all non-profit privileges (KSt, USt, VBG, flat-rate allowances). 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 statement Gross-net calculated (see ED23) monthly JSON artefact in the repo
LStA calculated LSt, Soli, KiSt from the statement - 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 + auto-warning

LStA as a 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 is used 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 - this is a nil return (see ED23).

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 data carrier).

See ED15: The practical use of the ELSTER certificate (authority interface practice, DE-Mail, brokering by GitCover) is covered in ED15.

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 + auto-warning
VAT advance return 10th of the following month monthly/quarterly FRISTEN_CHECK.md + auto-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 auto-warning (see ED08) 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 Denial of the tax number
§ 60a AO notice with sidecar Non-profit status evidenced Withdrawal due to missing evidence
LStA as JSON artefact + ELSTER receipt Wage tax return traceable Late-filing surcharge § 152 AO
ELSTER certificate with sidecar Electronic filings evidenced Failure to file § 370 AO
Deadline check for all FA filings Missed deadlines avoided Late-filing surcharges § 152 AO

Harness Requirement (Preview)

Derivable from ED13:

ID Requirement Priority
FA-12.1 ELSTER brokering: LStA, UStA, LSt 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 (non-profit)
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 Auto-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 on 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.