ED10 - Sphere Assignment of Business Transactions (from Business Registration, in the Case of Nonprofit Status)

Problem

A nonprofit organization registers a commercial operation - and from that moment, the sphere separation (§§ 51–68 AO) applies. But in practice:

Trigger A - Business Registration: This obligation arises without employees - it is part of the organization, not of its status as an employer. From the moment a nonprofit organization registers a commercial operation, every business transaction must be assigned to a sphere.

Core Statement

Sphere assignment in the Git repo means:

  1. Every business transaction has a sphere field - a required field, not optional (for nonprofit tenants)
  2. Four spheres - ideell, vermögensverwaltend, zweckbetrieblich, wirtschaftlich
  3. Pre-Commit-Hook checks completeness - no commit without a sphere tag for nonprofit tenants
  4. Sphere violation report - automatic warning for a commercial transaction in a charitable context
  5. Flat-rate allowances assigned - flat-rate allowances for volunteers/instructors (§ 3 Nr. 26/26a EStG) receive a sphere tag

Compliance by Design: Sphere separation is not achieved through after-the-fact sorting, but through structural required fields and Pre-Commit-Hooks that check every business transaction for sphere assignment.

The Four Spheres

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD GV["Geschäftsvorfall
ab Gewerbeanmeldung"] GV --> I["ideell
§ 52 AO
steuerfrei"] GV --> V["vermögensverwaltend
steuerfrei"] GV --> Z["zweckbetrieblich
§ 65 AO
steuerfrei"] GV --> W["wirtschaftlich
§ 64 AO
steuerpflichtig"] I --> IF["Beispiele:
Workshops, Bildungsangebote
Spenden, Mitgliedsbeiträge"] V --> VF["Beispiele:
Zinsen, Mieteinnahmen
Vermögensverwaltung"] Z --> ZF["Beispiele:
Aufnahmegebühren
zweckbezogene Leistungen"] W --> WF["Beispiele:
Merchandising, Werbung
fremdzweckige Leistungen"] I --> P["Pauschalen § 3 Nr. 26/26a
Ehrenamt/Übungsleiter"] Z --> P style GV fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style I fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style V fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style Z fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style W fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style IF fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style VF fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style ZF fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style WF fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style P fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33
Sphere Legal basis Tax status Examples
charitable § 52 AO tax-exempt workshops, educational programs, donations, membership dues
asset-management § 58 Nr. 1 AO tax-exempt interest, rental income, asset management
special-purpose operations § 65 AO tax-exempt (if all 4 criteria are met) admission fees, purpose-related services
commercial § 64 AO taxable merchandising, advertising, services unrelated to the organization's purposes

Risk if spheres are not separated: Asset commingling (§ 55 Abs. 1 Nr. 5 AO) is a ground for revocation of nonprofit status. A nonprofit organization that does not separate commercial and charitable transactions risks revocation of its nonprofit status - and thus retroactive taxation of reserves (for up to 15 years).

Sphere Assignment in the JSON Artifact

Every business transaction (journal entry, diary entry, document) includes the sphere field as a required field for nonprofit tenants:

{
  "$schema": "https://gitcover.org/schemas/diary-entry-1.0.schema.json",
  "V7GUID": "<V7GUID-Class-aus-Registry>",
  "docUid": "<uuidV7-Object-mit-vorgegebener-Zeitmarke>",
  "author": "E1",
  "role": "Buchhalter",
  "tenant": "ORG-1",
  "sphere": "ideell",
  "source": "E1",
  "source_sha256": "<SHA-256-...>",
  "tags": ["workshop", "bildungsangebot"]
}

Note: The uuidV7 is the entry's DocID. The composite key V7GUID:uuidV7 is used for storage organization and DB queries. The sphere field is mandatory for nonprofit tenants - the Pre-Commit-Hook checks its presence and validity.

Pre-Commit-Hook Checks Sphere Completeness

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD C["Commit mit Geschäftsvorfall"] C --> H["Pre-Commit-Hook"] H --> P1{"Tenant
gemeinnützig?"} P1 -->|nein| OK1["Commit akzeptiert
Sphäre nicht erforderlich"] P1 -->|ja| P2{"sphere-Feld
vorhanden?"} P2 -->|nein| R1["Commit abgelehnt
Sphäre fehlt"] P2 -->|ja| P3{"sphere-Wert
gültig?"} P3 -->|nein| R2["Commit abgelehnt
ungültige Sphäre"] P3 -->|ja| P4{"Sphären-Verletzung?
(wirtschaftlich im ideellen Kontext)"} P4 -->|ja| W["Warnung
+ Commit akzeptiert mit Vermerk"] P4 -->|nein| OK2["Commit akzeptiert"] style C fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style H fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style P1 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style P2 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style P3 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style P4 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style OK1 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style OK2 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style R1 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style R2 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style W fill:#FDBA74,stroke:#C2410C,color:#0F1B33
Check Fails if GoBD/AO reference
Nonprofit tenant? - § 52 AO (nonprofit status)
sphere field present Sphere missing for a nonprofit tenant § 55 Abs. 1 Nr. 5 AO (asset commingling)
sphere value valid Invalid sphere value § 52/64/65 AO (sphere definition)
Sphere violation Commercial activity in a charitable context § 55 AO (risk of revocation)

Important - Warning vs. Rejection: A sphere violation (commercial transaction in a charitable context) results in a warning, not a rejection - the transaction may be legitimate (e.g., a commercial business operation conducted by the legal entity). However, the warning requires the entrepreneur to deliberately confirm the classification and document it in the commit.

Sphere Report

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR R["Sphären-Report
(Post-Commit-Hook)"] R --> SI["ideell
Anzahl + Summe"] R --> SV["vermögensverwaltend
Anzahl + Summe"] R --> SZ["zweckbetrieblich
Anzahl + Summe"] R --> SW["wirtschaftlich
Anzahl + Summe"] SW --> PR["Prüfung:
wirtschaftlich unter Freigrenze?
§ 64 Abs. 3 AO (45.000 EUR)"] PR -->|ja| OK["keine KSt-Pflicht"] PR -->|nein| KST["KSt-Pflicht
+ USt-Pflicht prüfen"] style R fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style SI fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style SV fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style SZ fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style SW fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style PR fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style OK fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style KST fill:#FDBA74,stroke:#C2410C,color:#0F1B33

The Post-Commit-Hook generates a sphere report per fiscal year:

Sphere Evaluation Tax review
charitable Number + sum of transactions tax-exempt, no review
asset-management Number + sum tax-exempt, no review
special-purpose operations Number + sum tax-exempt under § 65 AO (4 criteria)
commercial Number + sum Threshold under § 64 Abs. 3 AO (EUR 45,000) - above it, corporate income tax/VAT obligations

Practical example: The entrepreneur (E1) books a merchandising sale (commercial, EUR 500) and a workshop (charitable, EUR 200). The Pre-Commit-Hook requires sphere: "wirtschaftlich" and sphere: "ideell", respectively. The Post-Commit-Hook generates a report: commercial EUR 500 (below the threshold), charitable EUR 200. If the threshold is exceeded, the report warns of corporate income tax liability.

Flat-Rate Allowances and Spheres

Flat-rate allowances for volunteers and instructors (§ 3 Nr. 26/26a EStG) must be assigned to the correct sphere:

Flat-rate allowance Sphere Annual exempt amount Legal basis
Volunteer flat-rate allowance charitable (as a rule) EUR 960/year § 3 Nr. 26a EStG
Instructor flat-rate allowance charitable or special-purpose operations EUR 3,300/year § 3 Nr. 26 EStG

Important: The flat-rate allowances are tax-exempt - but only if they are assigned to the correct sphere. A volunteer flat-rate allowance in a commercial business operation is not tax-exempt. The sphere field in the diary entry documents the assignment.

Articles of association § 6a: Payment of the flat-rate allowances requires an enabling clause in the articles of association (§ 6a). Until the amendment to the articles has been entered in the commercial register, payment must be deferred - the entitlement arises from the date of the amendment. See ED11 for details.

Risk Leverage

Today (cheap) Tomorrow (audit-proof) Risk mitigated
sphere field for each business transaction Sphere separation demonstrably complete Revocation of nonprofit status under § 55 AO (asset commingling)
Pre-Commit-Hook checks sphere No transaction without a sphere tag GoBD violation "not properly organized"
Sphere report per fiscal year Threshold under § 64 Abs. 3 AO monitored Back payment of corporate income tax/VAT
Flat-rate allowances with sphere tag Tax exemption under § 3 Nr. 26/26a EStG documented Tax liability of the flat-rate allowances
Warning in the event of a sphere violation Deliberate classification documented Hidden asset commingling

Harness Requirement (Preview)

Derivable from ED10:

ID Requirement Priority
FA-3.1 Sphere tags: ideell/vermögensverwaltend/zweckbetrieblich/wirtschaftlich MUST (nonprofit)
FA-3.2 Sphere tag mandatory for each land registry entry and diary entry MUST (nonprofit)
FA-3.3 Pre-Commit-Hook checks completeness of sphere tags MUST (nonprofit)
FA-3.4 Sphere violation report (commercial transaction in a charitable context) SHOULD (nonprofit)
FA-8.2 Tracking of flat-rate allowances under § 3 Nr. 26/26a EStG with sphere tag SHOULD (nonprofit)
FA-8.5 Sphere assignment for each business transaction (required field, checked by pre-commit) MUST (nonprofit)
TA-2.3 Pre-Commit-Hook: Sphere tag check (nonprofit only) MUST (nonprofit)

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