ED11 - Tax Office: Tax Number, § 60a AO, Payroll Tax Registration

Problem

After formation and business registration, the tax office (Finanzamt, 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 tax type
  2. § 60a AO notice as evidence with sidecar - exemption notice with validity tracking
  3. Payroll tax registration as JSON artefact - LStA with source_sha256 on the ELSTER receipt
  4. ELSTER certificate documented - .pfx file with sidecar (not the certificate itself in the repo, but the evidence)
  5. Deadline check for all FA registrations - LStA, UStA, ESt/KSt with automatic warning

Compliance by Design: FA obligations are not managed after the fact, but captured structurally 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 Corporation tax return registry/finanzamt/ + sidecar
USt tax number FA notification VAT pre-registration, annual return registry/finanzamt/ + sidecar
LSt tax number FA notification Payroll tax registration, 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
§ 60a AO notice FA notice Non-profit recognition registry/finanzamt/ + sidecar
ELSTER certificate ELSTER registration Electronic registrations registry/elster/ + 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 evidence 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 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, lump sums). Without this notice, tax exemptions do not apply. The notice must be stored in the repo with sidecar so that evidence can be produced during an audit.

Payroll tax registration (§ 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-to-net calculated (see ED14) monthly JSON artefact in repo
LStA calculated LSt, Soli, KiSt from payroll - tags: ["lsta", "§41a-estg"]
ELSTER submission Electronically via ELSTER 10th of following month (+5 days) ELSTER receipt as evidence
Receipt archived ELSTER receipt with sidecar - source_sha256 in LStA entry
Deadline check Next LStA deadline monthly FRISTEN_CHECK.md + auto 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 storage organisation and DB queries. The lsta object documents the payroll tax registration with all components. For an active pension (§ 3 Nr. 21 EStG) the LSt = 0.00 - this is a zero 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 (AFJD)"] 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 repo
Personal certificate (E1) active (since 260522) sidecar in registry/elster/ (not the .pfx itself)
Organisational certificate (ORG-1) open (deadline 200826) planned: sidecar after activation

Important - no .pfx in 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 safely outside the repo (e.g. on encrypted storage).

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

Deadline monitoring for FA registrations

Registration Deadline Frequency GitCover monitoring
Payroll tax registration 10th of following month (+5 days electronic) monthly FRISTEN_CHECK.md + auto warning
VAT pre-registration 10th of following month monthly/quarterly FRISTEN_CHECK.md + auto warning
ESt/KSt return 31.07. (extended via tax advisor) annually FRISTEN_CHECK.md
USt annual return 31.07. (extended) annually FRISTEN_CHECK.md
LSt certificate 28.02. of the following year annually FRISTEN_CHECK.md

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

Risk leverage

Today (cheap) Tomorrow (audit-proof) Risk mitigated
Tax numbers in registry/ with sidecar All identifiers centrally evidenced Dispute of the tax number
§ 60a AO notice with sidecar Non-profit status verifiable Withdrawal for missing evidence
LStA as JSON artefact + ELSTER receipt Payroll tax registration traceable Late payment surcharge § 152 AO
ELSTER certificate with sidecar Electronic registrations evidenced Non-submission § 370 AO
Deadline check for all FA registrations Missed deadlines avoided Late payment surcharges § 152 AO

Harness requirement (preview)

Derivable from ED11:

ID Requirement Priority
FA-12.1 ELSTER mediation: LStA, UStA, LSt certificate; receipt as evidence with sidecar MUST
FA-12.8 Authority identifiers 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, evidence reference MUST
FA-4.3 Auto warning for deadlines under 14 days SHOULD

The full requirement 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 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.