Financial pillar · v0.8.1
financial-model FinancialModel
Period financial data with concept names aligned to XBRL US-GAAP taxonomy.
$id · https://corpospec.com/schemas/v0.8.1/financial-model.schema.json
Fields
| Field | Type | Required | Description |
|---|---|---|---|
| currency | IsoCurrency | yes | ISO 4217 currency code. |
| entity | PathRef | yes | Path-based cross-reference relative to .corpospec/ root. Pattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$` |
| id | PathRef | yes | Path-based cross-reference relative to .corpospec/ root. Pattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$` |
| period | Period | yes | A time period with start and end dates. |
| balance_sheet | BalanceSheet? | — | |
| cash_flow | CashFlow? | — | |
| custom | FinancialModelCustom? | — | |
| income_statement | IncomeStatement? | — |
Definitions
Shared types referenced within this schema.
Assets
Balance sheet assets.
Monetary values are in the model's declared `currency` and non-negative.
type: object
BalanceSheet
Balance sheet.
Invariant (not enforced by JSON Schema): `assets.total_assets ==
liabilities.total_liabilities + equity.total_equity`. Consumers should
validate this equality at load time.
type: object
CashFlow
Cash flow statement.
Components may be positive or negative (inflows vs outflows).
Invariant (not enforced by JSON Schema): `net_change ≈ operating +
investing + financing`. Consumers should verify consistency at load time.
type: object
Equity
Balance sheet equity.
`total_equity` may be negative if accumulated losses exceed paid-in
capital; therefore no non-negativity constraint is imposed.
type: object
FinancialAssumption
A financial model assumption.
type: object
FinancialModelCustom
Typed custom extension data for `FinancialModel`.
Bundles UNSTARTER-specific concerns (German GmbH formation costs,
Wandeldarlehen scenarios, German payroll burden, per-employee tool
stack). Flagged for future decomposition into separate jurisdiction- or
concern-scoped extensions; kept as a single struct in the current schema
for pragmatic reasons.
type: object
FounderContribution
Founder equity contribution details.
type: object
FounderContributionType
Type of founder contribution at formation.
Distinct from `AccountType` (bank account category). `FounderContributionType`
describes *how* a founder capitalizes an entity; `AccountType` describes
*what kind* of bank account holds funds.
enum: "equity", "debt", "loan", "convertible", "in-kind", "cash", "ip-assignment", "other"
FxReference
Foreign exchange reference rates.
type: object
GermanPayrollBurden
German employer payroll burden (Sozialversicherung).
type: object
IncomeStatement
Income statement.
A "complete" income statement carries `revenue`, `cost_of_revenue`,
`operating_expenses`, and `net_income`. `gross_profit` and
`operating_income` are derived aggregates and kept optional so
stripped-down snapshots (e.g. pre-revenue) can still be expressed.
`revenue`, `cost_of_revenue`, and operating expense sub-totals are
non-negative. `gross_profit`, `operating_income`, and `net_income` may be
negative (losses) and therefore carry no range bound.
type: object
InsuranceCosts
Insurance cost details.
type: object
IsoCurrency
ISO 4217 currency code.
pattern: ^[A-Z]{3}$
IsoDate
ISO 8601 date (YYYY-MM-DD).
type: string
Liabilities
Balance sheet liabilities.
Monetary values are in the model's declared `currency` and non-negative.
type: object
MonthlyRecurringExpensesPostGmbh
Monthly recurring expenses after GmbH formation.
Each field is a monthly amount in the model's declared `currency`.
Fields suffixed `_per_user` or `_per_employee` are unit costs, not
totals. Fields suffixed `_amortized` represent annual costs expressed
as a monthly equivalent (annual / 12).
type: object
MonthlyRecurringExpensesPreFormation
Monthly recurring expenses before GmbH formation.
Each field is a monthly amount in the model's declared `currency`.
Fields suffixed `_amortized` represent annual costs expressed as a
monthly equivalent (annual cost / 12) so they can be summed alongside
true monthly recurring line items.
type: object
OneTimeExpenses
One-time formation and setup expenses.
All amounts are paid once, at or around company formation (notarization,
Handelsregister filing, Stammkapital deposit, developer-platform
registration). These are distinct from `MonthlyRecurringExpensesPost*`
(ongoing operational stack) and from product-side costs (COGS, hosting,
API tokens), which live on the `IncomeStatement` tree.
type: object
OperatingExpenses
Operating expenses breakdown.
Monetary amounts are in the model's declared `currency`. Sub-totals are
non-negative; net values that can be negative belong on `IncomeStatement`.
type: object
PathRef
Path-based cross-reference relative to .corpospec/ root.
Pattern: `^[a-z0-9_-]+(/[a-z0-9_.-]+)+$`
pattern: ^[a-z0-9_-]+(/[a-z0-9_.-]+)+$
PerEmployeeMonthlyCosts
Per-employee monthly tool costs.
Each field is a per-employee monthly amount in the model's declared
`currency`. `total_per_employee` is an input (stated figure), not a
derived computation — consumers may cross-check against the sum of
siblings but the field is canonical as recorded.
type: object
Period
A time period with start and end dates.
type: object
PeriodType
Period type discriminator.
enum: "instant", "duration"
ValuationCapRange
Valuation cap range for a Wandeldarlehen / convertible.
Both bounds are monetary amounts in the enclosing
`WandeldarlehenScenarios.currency`. `min <= max` is expected but not
enforced by JSON Schema.
type: object
WandeldarlehenScenario
A single Wandeldarlehen dilution scenario.
`dilution_pct` and `founder_post_conversion_pct` are **percentages**
in `[0.0, 100.0]` (e.g. `11.8` means 11.8%), not ratios in `[0, 1]`.
This differs from `WandeldarlehenScenarios.discount` and
`WandeldarlehenScenarios.interest_rate`, which are ratios.
type: object
WandeldarlehenScenarios
Pre-seed Wandeldarlehen (convertible loan) scenario modelling.
type: object
Reference in your YAML
# yaml-language-server: $schema=https://corpospec.com/schemas/v0.8.1/financial-model.schema.json