ED09 - Sphere Classification of Business Transactions (from trade registration, in case of non-profit status)
Problem
A non-profit organization registers a trade - and from that moment the sphere separation (§§ 51-68 AO) applies. But in practice:
- "Spheres? Never heard of them." - many non-profit entrepreneurs do not know that they must assign every business transaction to one of four spheres
- Mixing of ideal and commercial - workshop income (ideal) and merchandising sales (commercial) land on the same account, in the same folder, in the same repo
- No sphere marking - booking entries have no field that indicates the sphere - the auditor must guess
- Asset mixing as a reason for denial - § 55 Abs. 1 Nr. 5 AO threatens denial of non-profit status on asset mixing - up to 15 years retroactively
- No automatic check - no one checks whether every business transaction has a sphere - it will "somehow be right"
- Lump sums wrongly assigned - honorary and exercise leader lump sums (§ 3 Nr. 26/26a EStG) are not assigned to the correct sphere
Trigger A - trade registration: This obligation arises without employees - it is part of the organization, not of being an employer. From the moment a non-profit organization registers a trade, every business transaction must be assigned to a sphere.
Core Statement
Sphere classification in the Git repo means:
- Every business transaction has a
spherefield - mandatory field, not optional (for non-profit tenants) - Four spheres -
ideell,vermögensverwaltend,zweckbetrieblich,wirtschaftlich - Pre-commit hook checks completeness - no commit without sphere tag for non-profit tenants
- Sphere violation report - automatic warning on commercial transaction in ideal context
- Lump sums assigned - honorary/exercise leader lump sums (§ 3 Nr. 26/26a EStG) receive sphere tag
Compliance by Design: Sphere separation does not arise through retroactive sorting, but through structural mandatory 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 |
|---|---|---|---|
| ideell | § 52 AO | tax-free | Workshops, educational offers, donations, membership fees |
| vermögensverwaltend | § 58 Nr. 1 AO | tax-free | Interest, rental income, asset management |
| zweckbetrieblich | § 65 AO | tax-free (with 4 criteria) | Admission fees, purpose-related services |
| wirtschaftlich | § 64 AO | taxable | Merchandising, advertising, third-party-purpose services |
Risk of missing sphere separation: Asset mixing (§ 55 Abs. 1 Nr. 5 AO) is a reason for denial of non-profit status. A non-profit organization that does not separate commercial and ideal transactions risks the denial of non-profit status - and thus re-taxation of reserves (up to 15 years retroactively).
Sphere classification in the JSON artifact
Every business transaction (booking entry, diary entry, voucher) contains
the sphere field as a mandatory field for non-profit tenants:
{
"$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": "Buchhalter",
"tenant": "ORG-1",
"sphere": "ideell",
"source": "E1",
"source_sha256": "<SHA-256-...>",
"tags": ["workshop", "bildungsangebot"]
}
Note: The
uuidV7is the DocID of the entry. The composite keyV7GUID:uuidV7serves the storage organization and DB query. Thespherefield is a mandatory field for non-profit 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 | Error on | GoBD/AO reference |
|---|---|---|
| Tenant non-profit? | - | § 52 AO (non-profit status) |
sphere field present |
Missing sphere for non-profit tenant | § 55 Abs. 1 Nr. 5 AO (asset mixing) |
sphere value valid |
Invalid sphere value | § 52/64/65 AO (sphere definition) |
| Sphere violation | Commercial in ideal context | § 55 AO (denial risk) |
Important - warning vs. rejection: A sphere violation (commercial transaction in ideal context) leads to a warning, not a rejection - the transaction can be legitimate (e.g. commercial business operation that belongs to the corporation). But the warning forces the entrepreneur to consciously 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 check |
|---|---|---|
| ideell | Count + sum of transactions | tax-free, no check |
| vermögensverwaltend | Count + sum | tax-free, no check |
| zweckbetrieblich | Count + sum | tax-free under § 65 AO (4 criteria) |
| wirtschaftlich | Count + sum | Exemption limit § 64 Abs. 3 AO (45,000 EUR) - above KSt/USt liability |
Practical example: The entrepreneur (
E1) books a merchandising sale (commercial, 500 EUR) and a workshop (ideal, 200 EUR). The pre-commit hook requiressphere: "wirtschaftlich"orsphere: "ideell". The post-commit hook generates a report: commercial 500 EUR (below exemption limit), ideal 200 EUR. On exceeding the exemption limit, the report warns of KSt liability.
Lump sums and spheres
Honorary and exercise leader lump sums (§ 3 Nr. 26/26a EStG) must be assigned to the correct sphere:
| Lump sum | Sphere | Annual allowance | Legal basis |
|---|---|---|---|
| Honorary lump sum | ideell (regularly) | 960 EUR/year | § 3 Nr. 26a EStG |
| Exercise leader lump sum | ideell or zweckbetrieblich | 3,300 EUR/year | § 3 Nr. 26 EStG |
Important: The lump sums are tax-free - but only if they are assigned to the correct sphere. An honorary lump sum in the commercial business operation is not tax-free. The
spherefield in the diary entry documents the assignment.
Articles § 6a: The payment of the lump sums requires an opening clause in the articles (§ 6a). Until the HR registration of the articles amendment, the payment must be deferred - the claim arises from the date of the articles amendment. See ED10 for details.
Risk-Leverage
| Today (cheap) | Tomorrow (audit-proof) | Risk mitigated |
|---|---|---|
sphere field per business transaction |
Sphere separation completely verifiable | Denial § 55 AO (asset mixing) |
| Pre-commit hook checks sphere | No transaction without sphere tag | GoBD violation "not ordered" |
| Sphere report per fiscal year | Exemption limit § 64 Abs. 3 AO monitored | KSt/USt back payment |
| Lump sums with sphere tag | Tax exemption § 3 Nr. 26/26a EStG evidenced | Tax liability of lump sums |
| Warning on sphere violation | Conscious classification documented | Hidden asset mixing |
Harness requirement (preview)
Derivable from ED09:
| ID | Requirement | Priority |
|---|---|---|
| FA-3.1 | Sphere tags: ideell/vermögensverwaltend/zweckbetrieblich/wirtschaftlich |
MUST (non-profit) |
| FA-3.2 | Sphere tag mandatory per general ledger entry and diary entry | MUST (non-profit) |
| FA-3.3 | Pre-commit hook checks sphere tag completeness | MUST (non-profit) |
| FA-3.4 | Sphere violation report (commercial in ideal context) | SHOULD (non-profit) |
| FA-8.2 | Lump sums § 3 Nr. 26/26a EStG tracking with sphere tag | SHOULD (non-profit) |
| FA-8.5 | Sphere classification per business transaction (mandatory field, pre-commit checked) | MUST (non-profit) |
| TA-2.3 | Pre-commit hook: sphere tag check (non-profit only) | MUST (non-profit) |
The complete requirement list in Harness-Anforderungen.md.
Sources
- AO (§ 52 - non-profit status, § 55 Abs. 1 Nr. 5 - asset mixing, § 58 Nr. 1 - asset management, § 64 - commercial business operation, § 64 Abs. 3 - exemption limit 45,000 EUR, § 65 - purpose operation)
- EStG (§ 3 Nr. 26 - exercise leader lump sum, § 3 Nr. 26a - honorary lump sum)
AFJD/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 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.