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:
- "Spheres? Never heard of them." - many nonprofit entrepreneurs do not know that they must assign every business transaction to one of four spheres
- Mixing of charitable and commercial activities - workshop income (charitable) and merchandising sales (commercial) end up in the same account, in the same folder, in the same repo
- No sphere label - journal entries have no field indicating the sphere - the auditor has to guess
- Asset commingling as a ground for revocation - § 55 Abs. 1 Nr. 5 AO poses a risk of revocation of nonprofit status in the event of asset commingling - retroactively for up to 15 years
- No automatic check - no one checks whether every business transaction has a sphere - "it'll work out somehow"
- Flat-rate allowances assigned incorrectly - flat-rate allowances for volunteers and instructors (§ 3 Nr. 26/26a EStG) are not assigned to the correct sphere
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:
- Every business transaction has a
spherefield - a required field, not optional (for nonprofit tenants) - Four spheres -
ideell,vermögensverwaltend,zweckbetrieblich,wirtschaftlich - Pre-Commit-Hook checks completeness - no commit without a sphere tag for nonprofit tenants
- Sphere violation report - automatic warning for a commercial transaction in a charitable context
- 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
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
uuidV7is the entry's DocID. The composite keyV7GUID:uuidV7is used for storage organization and DB queries. Thespherefield is mandatory for nonprofit tenants - the Pre-Commit-Hook checks its presence and validity.
Pre-Commit-Hook Checks Sphere Completeness
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
(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 requiressphere: "wirtschaftlich"andsphere: "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
spherefield 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
- AO (§ 52 - nonprofit status, § 55 Abs. 1 Nr. 5 - asset commingling, § 58 Nr. 1 - asset management, § 64 - commercial business operations, § 64 Abs. 3 - threshold of EUR 45,000, § 65 - special-purpose operations)
- EStG (§ 3 Nr. 26 - instructor flat-rate allowance, § 3 Nr. 26a - volunteer flat-rate allowance)
E1/agents/(anonymized) - SSoT concept with sphere separation, pre-commit hooks
Source Topology and CDN Reference Links
| 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.