← planning API
PlanningTemplates
Singular: PlanningTemplate — Base-URL: https://planning-api.ayoune.app — Zugriff: CRUD — Maschinenlesbare Beschreibung (JSON · YAML)
Jetzt ausprobieren
beta
Response (live)
Requests werden über den consumer-app Proxy an *.ayoune.app weitergeleitet. Tokens bleiben im Browser und werden pro Call mitgesendet.
Beispiel-Response (aufgezeichnet) Beispiel
Eine echte, zuvor aufgezeichnete GET /:id-Antwort dieses Endpunkts — nicht der Live-Call oben. Sensible Felder sind maskiert.
{
"payload": {
"_id": "6a56c2f282b264668afcaea4",
"kind": "3statement",
"active": true,
"createdAt": "2026-07-14T23:14:58.540Z",
"definition": {
"key": "3statement-saas",
"name": "3-Statement Businessplan (SaaS)",
"description": "GuV + Planbilanz + Cashflow verbunden (Bank-Pflicht-Bausteine): Investitions-/AfA-Spiegel, Darlehen (Aufnahme/Zins/Tilgung/Restschuld/DSCR), vereinfachte Ertragsteuer, Cash als Bilanz-Residual mit Aktiva=Passiva-Prüf-Line. Reproduziert das daypaio-Referenzmodell.",
"horizon": {
"startKey": "2026",
"endKey": "2030",
"granularity": "year"
},
"checkLineItem": "bilanzCheck",
"blocks": [
{
"key": "treiber",
"label": "Treiber & Annahmen",
"lineItems": [
{
"key": "tenantsEoY",
"label": "Zahlende Tenants (EoY)",
"isInput": true
},
{
"key": "resellers",
"label": "Aktive Reseller",
"isInput": true
},
{
"key": "resellerEndCust",
"label": "Ø Endkunden je Reseller",
"isInput": true
},
{
"key": "hwUnits",
"label": "Verkaufte Geräte",
"isInput": true
},
{
"key": "onboarding",
"label": "Onboarding/Projekte",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "fteAvg",
"label": "Ø FTE",
"isInput": true
},
{
"key": "costPerFte",
"label": "Vollkosten je FTE",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "rndExternal",
"label": "F&E-Fremdleistungen",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "infra",
"label": "Infrastruktur/Cloud/LLM",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "marketing",
"label": "Marketing & Vertrieb",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "other",
"label": "Sonstige Kosten",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "fzBackpay",
"label": "Forschungszulage rückwirkend",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "capex",
"label": "Investitionen (Capex)",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "equityIn",
"label": "Eigenkapital-Einlage",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "dl2026",
"label": "Bestandsumsatz Startjahr",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "dlGrowth",
"label": "Bestandsumsatz-Wachstum",
"isInput": true
},
{
"key": "acvBase",
"label": "ACV Startwert",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "acvGrowth",
"label": "ACV-Wachstum",
"isInput": true
},
{
"key": "resellerShare",
"label": "tolinax-Anteil Reseller-ACV",
"isInput": true
},
{
"key": "hwPrice",
"label": "Ø Geräte-Verkaufspreis",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "hwCogsRate",
"label": "Hardware-COGS-Quote",
"isInput": true
},
{
"key": "hwSubMonthly",
"label": "Device-Subscription/Monat",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "fzEligibleShare",
"label": "F&E-Anteil Personal (FZul)",
"isInput": true
},
{
"key": "forschungszulageRate",
"label": "Forschungszulage-Satz",
"isInput": true
},
{
"key": "loanAmount",
"label": "Darlehensbetrag",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "loanRate",
"label": "Darlehenszins",
"isInput": true
},
{
"key": "loanStartPeriod",
"label": "Darlehen Startperiode (Index)",
"isInput": true
},
{
"key": "repayStartPeriod",
"label": "Tilgung Startperiode (Index)",
"isInput": true
},
{
"key": "repayYears",
"label": "Tilgungsjahre",
"isInput": true
},
{
"key": "cashStart",
"label": "Kassenanfangsbestand",
"isInput": true,
"format": "currency-eur-tsd"
},
{
"key": "taxRate",
"label": "Ertragsteuer-Satz (GewSt+KSt+Soli)",
"isInput": true
},
{
"key": "ekStart",
"label": "Eigenkapital-Eröffnungsbilanz",
"isInput": true,
"format": "currency-eur-tsd"
}
]
},
{
"key": "guv",
"label": "GuV (Gewinn- und Verlustrechnung)",
"lineItems": [
{
"key": "acv",
"label": "ACV",
"formula": "IF(PERIODINDEX() == 0, 0, IF(PERIODINDEX() == 1, [acvBase], PREV([acv]) * (1 + [acvGrowth])))",
"format": "currency-eur-tsd"
},
{
"key": "dl",
"label": "Bestandsumsatz/Research",
"formula": "IF(PERIODINDEX() == 0, [dl2026], PREV([dl]) * (1 + [dlGrowth]))",
"format": "currency-eur-tsd"
},
{
"key": "saas",
"label": "SaaS-Subscriptions",
"formula": "((PREV([tenantsEoY]) + [tenantsEoY]) / 2) * [acv]",
"format": "currency-eur-tsd"
},
{
"key": "reseller",
"label": "Reseller-/White-Label",
"formula": "[resellers] * [resellerEndCust] * [acv] * [resellerShare]",
"format": "currency-eur-tsd"
},
{
"key": "hwSale",
"label": "Hardware-Verkauf",
"formula": "[hwUnits] * [hwPrice]",
"format": "currency-eur-tsd"
},
{
"key": "hwSub",
"label": "Device-Subscriptions",
"formula": "(CUM([hwUnits]) - [hwUnits] / 2) * [hwSubMonthly] * 12",
"format": "currency-eur-tsd"
},
{
"key": "totalRevenue",
"label": "Gesamtumsatz",
"formula": "[dl] + [saas] + [reseller] + [hwSale] + [hwSub] + [onboarding]",
"format": "currency-eur-tsd",
"kpiPublish": {
"sensitivity": "medium"
}
},
{
"key": "personal",
"label": "Personal (Vollkosten)",
"formula": "[fteAvg] * [costPerFte]",
"format": "currency-eur-tsd"
},
{
"key": "hwCogs",
"label": "Hardware-COGS",
"formula": "[hwSale] * [hwCogsRate]",
"format": "currency-eur-tsd"
},
{
"key": "totalCost",
"label": "Gesamtkosten",
"formula": "[personal] + [rndExternal] + [infra] + [hwCogs] + [marketing] + [other]",
"format": "currency-eur-tsd"
},
{
"key": "fz",
"label": "Forschungszulage (Ertrag)",
"formula": "[personal] * [fzEligibleShare] * [forschungszulageRate] + [fzBackpay]",
"format": "currency-eur-tsd"
},
{
"key": "ebitda",
"label": "EBITDA (inkl. FZ)",
"formula": "[totalRevenue] + [fz] - [totalCost]",
"format": "currency-eur-tsd",
"kpiPublish": {
"sensitivity": "medium"
}
},
{
"key": "ebitdaPreFz",
"label": "EBITDA (vor FZ)",
"formula": "[ebitda] - [fz]",
"format": "currency-eur-tsd"
},
{
"key": "depreciation",
"label": "Abschreibung (AfA)",
"formula": "[capex] * 0.6",
"format": "currency-eur-tsd"
},
{
"key": "interest",
"label": "Zinsaufwand",
"formula": "[debtStart] * [loanRate]",
"format": "currency-eur-tsd"
},
{
"key": "ebt",
"label": "Ergebnis vor Steuern (EBT)",
"formula": "[ebitda] - [interest] - [depreciation]",
"format": "currency-eur-tsd"
},
{
"key": "tax",
"label": "Ertragsteuer (vereinfacht)",
"formula": "IF([ebt] > 0, [ebt] * [taxRate], 0)",
"format": "currency-eur-tsd"
},
{
"key": "netIncome",
"label": "Jahresergebnis",
"formula": "[ebt] - [tax]",
"format": "currency-eur-tsd"
}
]
},
{
"key": "bilanz",
"label": "Planbilanz",
"lineItems": [
{
"key": "anlagevermoegen",
"label": "Anlagevermögen (Netto)",
"formula": "CUM([capex]) - CUM([depreciation])",
"format": "currency-eur-tsd"
},
{
"key": "forderungFz",
"label": "Forderung Forschungszulage",
"formula": "[fz]",
"format": "currency-eur-tsd"
},
{
"key": "cashAktiva",
"label": "Kasse/Bank",
"formula": "[cash]",
"format": "currency-eur-tsd"
},
{
"key": "summeAktiva",
"label": "Summe Aktiva",
"formula": "[anlagevermoegen] + [forderungFz] + [cashAktiva]",
"format": "currency-eur-tsd"
},
{
"key": "eigenkapital",
"label": "Eigenkapital",
"formula": "IF(PERIODINDEX() == 0, [ekStart], PREV([eigenkapital])) + [netIncome] + [equityIn]",
"format": "currency-eur-tsd"
},
{
"key": "darlehen",
"label": "Darlehen (Restschuld)",
"formula": "[debtEnd]",
"format": "currency-eur-tsd"
},
{
"key": "summePassiva",
"label": "Summe Passiva",
"formula": "[eigenkapital] + [darlehen]",
"format": "currency-eur-tsd"
},
{
"key": "bilanzCheck",
"label": "Bilanz-Prüfung (Aktiva−Passiva)",
"formula": "[summeAktiva] - [summePassiva]",
"format": "currency-eur-tsd",
"kpiPublish": {
"sensitivity": "high"
}
}
]
},
{
"key": "cashflow",
"label": "Cashflow & Kapitaldienst",
"lineItems": [
{
"key": "debtStart",
"label": "Darlehen Anfangsstand",
"formula": "IF(PERIODINDEX() == [loanStartPeriod], [loanAmount], PREV([debtEnd]))",
"format": "currency-eur-tsd"
},
{
"key": "principal",
"label": "Tilgung",
"formula": "IF(PERIODINDEX() >= [repayStartPeriod] && [debtStart] > 0, MIN([loanAmount] / [repayYears], [debtStart]), 0)",
"format": "currency-eur-tsd"
},
{
"key": "debtEnd",
"label": "Darlehen Endstand",
"formula": "[debtStart] - [principal]",
"format": "currency-eur-tsd"
},
{
"key": "fzCash",
"label": "FZ-Zufluss (Vorjahr)",
"formula": "IF(PERIODINDEX() > 0, PREV([fz]), 0)",
"format": "currency-eur-tsd"
},
{
"key": "loanIn",
"label": "Darlehensaufnahme",
"formula": "IF(PERIODINDEX() == [loanStartPeriod], [loanAmount], 0)",
"format": "currency-eur-tsd"
},
{
"key": "cash",
"label": "Kassenendbestand",
"formula": "IF(PERIODINDEX() == 0, [cashStart], PREV([cash])) + [ebitdaPreFz] + [fzCash] + [equityIn] + [loanIn] - [capex] - [interest] - [principal] - [tax]",
"format": "currency-eur-tsd",
"kpiPublish": {
"sensitivity": "high"
}
},
{
"key": "kapdienst",
"label": "Kapitaldienst (Zins+Tilgung)",
"formula": "[interest] + [principal]",
"format": "currency-eur-tsd"
},
{
"key": "dscr",
"label": "DSCR",
"formula": "IF([kapdienst] > 0, [ebitda] / [kapdienst], 0)"
}
]
}
],
"defaultInputs": {
"tenantsEoY": [
2,
10,
40,
100,
200
],
"resellers": [
0,
0,
3,
6,
10
],
"resellerEndCust": [
0,
0,
4,
6,
8
],
"hwUnits": [
0,
150,
400,
650,
1000
],
"onboarding": [
0,
30,
80,
150,
220
],
"fteAvg": [
1.3,
8,
13.5,
17.5,
21
],
"costPerFte": [
75,
78,
80,
82,
84
],
"rndExternal": [
75,
0,
0,
0,
0
],
"infra": [
120,
165,
225,
320,
450
],
"marketing": [
25,
200,
300,
380,
450
],
"other": [
60,
130,
170,
210,
250
],
"fzBackpay": [
0,
150,
0,
0,
0
],
"capex": [
0,
60,
60,
50,
50
],
"equityIn": [
0,
1000,
0,
0,
0
]
},
"defaultConsts": {
"dl2026": 380,
"dlGrowth": 0.08,
"acvBase": 7.2,
"acvGrowth": 0.1,
"resellerShare": 0.5,
"hwPrice": 0.89,
"hwCogsRate": 0.65,
"hwSubMonthly": 0.024,
"fzEligibleShare": 0.55,
"forschungszulageRate": 0.3,
"loanAmount": 1500,
"loanRate": 0.045,
"loanStartPeriod": 1,
"repayStartPeriod": 3,
"repayYears": 8,
"cashStart": 25,
"taxRate": 0,
"ekStart": 25
}
},
"description": "GuV + Planbilanz + Cashflow verbunden (Bank-Pflicht-Bausteine): Investitions-/AfA-Spiegel, Darlehen (Aufnahme/Zins/Tilgung/Restschuld/DSCR), vereinfachte Ertragsteuer, Cash als Bilanz-Residual mit Aktiva=Passiva-Prüf-Line. Reproduziert das daypaio-Referenzmodell.",
"name": "3-Statement Businessplan (SaaS)",
"updatedAt": "2026-07-14T23:20:01.464Z",
"version": 1,
"shares": []
},
"meta": {
"links": [
{
"rel": "self",
"href": "https://planning-api.ayoune.app/planningtemplates/6a56c2f282b264668afcaea4",
"method": "get",
"title": "GET",
"types": [
"application/json",
"application/yaml",
"text/csv"
]
}
],
"relations": [],
"debugId": "6aa385c93db101c6c164a227",
"errors": [],
"actions": [
{
"rel": "self",
"action": "COPY",
"title": "MODEL_PLANNINGTEMPLATE",
"href": "https://api.ayoune.app/planning/planningtemplates/6a56c2f282b264668afcaea4/copy",
"method": "post",
"types": [
"application/json",
"application/yaml",
"text/csv"
]
},
{
"rel": "self",
"action": "DELETE",
"title": "MODEL_PLANNINGTEMPLATE",
"href": "https://api.ayoune.app/planning/planningtemplates/6a56c2f282b264668afcaea4",
"method": "delete",
"types": [
"application/json",
"application/yaml",
"text/csv"
]
}
],
"version": {
"host": "2026.20.0",
"core": "2026.328.0"
},
"rateLimit": {
"limit": "2500",
"remaining": "2412",
"reset": "1789104997",
"resetDate": "Fri Sep 11 2026"
},
"responseTime": 85.732368,
"code": 200,
"status": "success",
"error": false
}
}
Endpunkte
| Methode | Path | Beschreibung | Right |
|---|---|---|---|
| GET | /planningtemplates |
Liste mit Filtern/Paginierung | planning.planningtemplates.view |
| GET | /planningtemplates/:id |
Einzelner Datensatz | planning.planningtemplates.view |
| POST | /planningtemplates |
Neuen Datensatz erstellen | planning.planningtemplates.new |
| PUT | /planningtemplates |
Datensatz aktualisieren | planning.planningtemplates.edit |
| DELETE | /planningtemplates/:id |
Datensatz löschen | planning.planningtemplates.delete |
SDK
import { aYOUne } from '@tolinax/ayoune';
const ay = new aYOUne('pat_your_token');
// Alle abrufen
const list = await ay.planning.planningTemplates.find().limit(10).exec();
// Einzelnen Datensatz
const one = await ay.planning.planningTemplates.findById('OBJECT_ID').exec();
// Erstellen
const created = await ay.planning.planningTemplates.create({ name: 'Foo' });