Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted.
Snapshot state per snapshotted table row, aligned with months: the copied MRR rows (mrr_bop, mrr_eop, new, expansion, contraction, lost, resurrecting) and the rows derived from them with the table's formulas (arr_eop; revenue_churn_rate and mom_growth as rates at scale 6; their restatement is always null). Rows not listed keep their current values and are named in meta.notSnapshotted. Empty object when the range has no snapshot or a segment is applied (snapshots are organisation-wide).
Calculation time, scope, currency, findings, filters not applied.
Show child attributes
War diese Seite hilfreich?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Fynn Docs","colors":{"primary":"#000","light":"#fff","dark":"#000"},"logo":{"light":"https://mintcdn.com/fynnsubscriptionbilling/kPbBeWVEZfmEic9q/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=kPbBeWVEZfmEic9q\u0026q=85\u0026s=83e4b30a53d77c3809e0f22afa29335d","dark":"https://mintcdn.com/fynnsubscriptionbilling/kPbBeWVEZfmEic9q/logo/dark.svg?fit=max\u0026auto=format\u0026n=kPbBeWVEZfmEic9q\u0026q=85\u0026s=5798319f6c8632d79fe789f72eaa94e2"},"favicon":"https://mintcdn.com/fynnsubscriptionbilling/zDQkHT5wBBQ3jA-O/favicon.svg?fit=max\u0026auto=format\u0026n=zDQkHT5wBBQ3jA-O\u0026q=85\u0026s=410ff1f698a399faed9fbb877457bb43","api":{"openapi":["assets/openapi.json","assets/openapi-v2-plans.json","assets/openapi-v2-offers.json","assets/openapi-v2-commission.json","assets/openapi-v2-payment-plans.json","assets/openapi-v2-finance.json"],"playground":{"display":"interactive"},"examples":{"languages":["curl","python","javascript","php"]}},"navbar":{"links":[{"href":"https://cal.com/team/fynn/fynn-documentation","label":"Termin buchen"},{"href":"mailto:hi@fynn.eu","label":"Support"}],"primary":{"type":"button","label":"App Login","href":"https://app.fynn.eu"}},"footer":{"socials":{"x":"https://twitter.com/wearefynn","github":"https://github.com/fynn-digital","linkedin":"https://www.linkedin.com/company/wearefynn"}},"integrations":{"gtm":{"tagId":"GTM-NKGQ4TQ9"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"languages":[{"language":"de","default":true,"href":"introduction"},{"language":"en","href":"en/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"fynnsubscriptionbilling","hasAudioNarration":false,"actualSubdomain":"fynnsubscriptionbilling","customDomains":["docs.fynn.eu"],"gitSource":{"type":"gitlab","owner":"fynn/core","repo":"core-api23","deployBranch":"main","contentDirectory":"public-docs","isPrivate":true,"projectId":396,"hostUrl":"https://git.netzfabrik.com","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ade24310e2252351b6bcf20","collectionId":"c63f4a48-46bb-4163-a4ce-a54574f206c1","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ade24310e2252351b6bcf20"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{"REMOVE_BRANDING":{"status":"ENABLED"}},"buildId":"6ade65cd8bc03ecc3442159a","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"de","tag":"API Referenz","count":249},{"language":"de","tag":"Dokumentation","count":93},{"language":"de","tag":"API V2","count":71},{"language":"en","tag":"Documentation","count":59},{"language":"de","tag":"API","count":46},{"language":"de","tag":"Catalogue","count":42},{"language":"de","tag":"Angebote","count":36},{"language":"de","tag":"Subscription","count":30},{"language":"de","tag":"Customer","count":30},{"language":"de","tag":"Finanzberichte","count":29},{"language":"de","tag":"Payment","count":26},{"language":"default","tag":"API V2","count":18},{"language":"default","tag":"Dokumentation","count":15},{"language":"default","tag":"Pläne","count":15},{"language":"en","tag":"Integrations","count":15},{"language":"default","tag":"API","count":11},{"language":"default","tag":"API Referenz","count":10},{"language":"default","tag":"API documentation","count":10},{"language":"en","tag":"Products","count":9},{"language":"en","tag":"Settings","count":9},{"language":"en","tag":"Customers","count":7},{"language":"en","tag":"Subscriptions","count":7},{"language":"default","tag":"Guides","count":6},{"language":"default","tag":"Plan-Verwaltung","count":6},{"language":"en","tag":"Payment Providers","count":6},{"language":"default","tag":"Nutzungsbasierte Abrechnung","count":5},{"language":"en","tag":"Accounting","count":5},{"language":"en","tag":"Developers","count":5},{"language":"en","tag":"Invoices","count":5},{"language":"default","tag":"KI-Assistent","count":4}]},"assistantConfig":{},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".update-container{display:flex}.update-container>div{position:unset!important}@media (min-width:1024px){.update-container{flex-direction:column!important}}[data-component-part=update-label]{background:0 0}[data-component-part=update-tag]{-webkit-text-size-adjust:100%;tab-size:4;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-feature-settings:\"cv02\",\"cv03\",\"cv04\",\"cv11\";--scroll-mt:9.5rem;--font-inter:'__Inter_86cd50', '__Inter_Fallback_86cd50';--font-jetbrains-mono:'__JetBrains_Mono_3c557b', '__JetBrains_Mono_Fallback_3c557b';--primary:39 19 64;--primary-light:255 255 255;--primary-dark:0 0 0;--background-light:255 255 255;--background-dark:0 0 0;--gray-50:244 243 244;--gray-100:239 238 239;--gray-200:223 223 224;--gray-300:207 206 207;--gray-400:159 159 160;--gray-500:113 112 113;--gray-600:81 80 81;--gray-700:63 63 64;--gray-800:38 37 39;--gray-900:23 23 24;--gray-950:11 10 12;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\";-webkit-font-smoothing:antialiased;--tw-prose-body:#374151;--tw-prose-headings:#111827;--tw-prose-lead:#4b5563;--tw-prose-links:#111827;--tw-prose-bold:#111827;--tw-prose-counters:#6b7280;--tw-prose-bullets:#d1d5db;--tw-prose-hr:#e5e7eb;--tw-prose-quotes:#111827;--tw-prose-quote-borders:#e5e7eb;--tw-prose-captions:#6b7280;--tw-prose-kbd:#111827;--tw-prose-kbd-shadows:17 24 39;--tw-prose-code:#111827;--tw-prose-pre-code:#e5e7eb;--tw-prose-pre-bg:#1f2937;--tw-prose-th-borders:#d1d5db;--tw-prose-td-borders:#e5e7eb;--tw-prose-invert-body:#d1d5db;--tw-prose-invert-headings:#fff;--tw-prose-invert-lead:#9ca3af;--tw-prose-invert-links:#fff;--tw-prose-invert-bold:#fff;--tw-prose-invert-counters:#9ca3af;--tw-prose-invert-bullets:#4b5563;--tw-prose-invert-hr:#374151;--tw-prose-invert-quotes:#f3f4f6;--tw-prose-invert-quote-borders:#374151;--tw-prose-invert-captions:#9ca3af;--tw-prose-invert-kbd:#fff;--tw-prose-invert-kbd-shadows:255 255 255;--tw-prose-invert-code:#fff;--tw-prose-invert-pre-code:#d1d5db;--tw-prose-invert-pre-bg:rgba(0,0,0,.5);--tw-prose-invert-th-borders:#4b5563;--tw-prose-invert-td-borders:#374151;-webkit-user-modify:read-only;box-sizing:border-box;border-width:0;border-style:solid;border-color:rgb(var(--gray-200));--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: ;display:flex;flex-grow:0;cursor:pointer;align-items:center;justify-content:center;border-radius:var(--rounded-lg,.5rem);background-color:rgb(var(--primary)/.1);padding:.25rem .5rem;font-size:.875rem;line-height:1.25rem;font-weight:500;--tw-text-opacity:1;color:rgb(var(--primary)/var(--tw-text-opacity))}"}],"page":{"pagePath":"v2-finance-api/datasets/get-recurring","slug":"/v2-finance-api/datasets/get-recurring","pageMetadata":{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/recurring","title":"Recurring revenue page datasets","description":"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted.\n\nRequired permission: `analytics:read`.","href":"/v2-finance-api/datasets/get-recurring"},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Required permission: \", _jsx(_components.code, {\n children: \"analytics:read\"\n }), \".\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/recurring","title":"Recurring revenue page datasets","description":"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted.\n\nRequired permission: `analytics:read`.","href":"/v2-finance-api/datasets/get-recurring"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/fynnsubscriptionbilling/086131e1768d5953/changelog-sidebar.js"],"openApiReferenceData":{"operation":{"tags":["Datensätze"],"summary":"Recurring revenue page datasets","description":"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted.\n\nRequired permission: `analytics:read`.","parameters":["6638fef4-be3c-4bb8-b5b1-79e35fbf20fd","4f1c860c-ce48-4ae8-957b-c8bbedeaa010","d2de4ed2-210e-45df-bb69-17ad3006ffe5","6b77e480-b2bb-430a-ae63-71b3fc740d9e","d4a2a820-465c-416b-9d02-3c3d85ebecb3","126b5df3-8537-4548-96be-b6dcfa70a3b2"],"responses":{"200":"8a48ad2d-69ae-4f22-a68d-6ac130574887","401":"ea9869a4-8dc2-4d1f-bb3c-4401c01f60f3","403":"61027acc-e9ba-4442-9fcb-5ec0ccf24017","422":"1e906145-472d-413d-8520-1ea32fa46b70"},"security":["c1f78390-a7fa-499e-bf45-6c798652a87e"],"operationId":"getFinanceRecurring","method":"get","type":"path","servers":["58ca1bf5-c883-4c98-a975-3a85f96f2f94","761f9cb6-1d17-4197-9e03-b79594029e5c"],"path":"/api/analytics/finance/recurring","baseUrlOptions":["https://coreapi.io","https://preview.coreapi.io"],"title":"Recurring revenue page datasets","codeSamples":[],"requestExampleLanguages":["bash","python","javascript","php"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"6638fef4-be3c-4bb8-b5b1-79e35fbf20fd":{"name":"from","in":"query","description":"First month (YYYY-MM, time zone of the organisation). Default: `to` minus 11 months.","required":false,"schema":{"type":"string","isRequired":false,"description":"First month (YYYY-MM, time zone of the organisation). Default: `to` minus 11 months.","uniqueKey":"","typeLabel":"string"}},"4f1c860c-ce48-4ae8-957b-c8bbedeaa010":{"name":"to","in":"query","description":"Last month (YYYY-MM). Default: the current month. At most 36 months.","required":false,"schema":{"type":"string","isRequired":false,"description":"Last month (YYYY-MM). Default: the current month. At most 36 months.","uniqueKey":"","typeLabel":"string"}},"d2de4ed2-210e-45df-bb69-17ad3006ffe5":{"name":"currency","in":"query","description":"ISO-4217 code. Default: the default currency.","required":false,"schema":{"type":"string","isRequired":false,"description":"ISO-4217 code. Default: the default currency.","uniqueKey":"","typeLabel":"string"}},"6b77e480-b2bb-430a-ae63-71b3fc740d9e":{"name":"scope","in":"query","description":"Movement scope. Default: the organisation setting.","required":false,"schema":{"type":"string","enum":["subscription","invoice_address","customer","organisation"],"isRequired":false,"description":"Movement scope. Default: the organisation setting.","uniqueKey":"","typeLabel":"enum\u003cstring>"}},"d4a2a820-465c-416b-9d02-3c3d85ebecb3":{"name":"segmentId","in":"query","description":"Analytics segment: only its customers.","required":false,"schema":{"type":"string","format":"uuid","isRequired":false,"description":"Analytics segment: only its customers.","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"126b5df3-8537-4548-96be-b6dcfa70a3b2":{"name":"month","in":"query","description":"Month preselected for the bridge (YYYY-MM, within the range). Default: the last month of the range that has ended.","required":false,"schema":{"type":"string","isRequired":false,"description":"Month preselected for the bridge (YYYY-MM, within the range). Default: the last month of the range that has ended.","uniqueKey":"","typeLabel":"string"}}},"responses":{"8a48ad2d-69ae-4f22-a68d-6ac130574887":{"description":"The datasets.","content":{"application/json":{"schema":{"description":"Recurring revenue page: key figures, MRR bridge with reasons, committed and known forward MRR, the MRR table and the definitions.","properties":{"tenantName":{"description":"Name of the organisation.","type":"string","uniqueKey":"tenantName","typeLabel":"string"},"currency":{"description":"Currency of every amount (ISO-4217).","type":"string","example":"EUR","uniqueKey":"currency","typeLabel":"string"},"asOf":{"oneOf":[{"description":"Calculation time; null before the first calculation.","type":"string","format":"date-time","uniqueKey":"asOf.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"Calculation time; null before the first calculation.","type":"null","format":"date-time","uniqueKey":"asOf.oneOf.1","typeLabel":"null"}],"uniqueKey":"asOf","typeLabel":"string\u003cdate-time> | null"},"months":{"description":"Months of the range (YYYY-MM), ascending.","type":"array","items":{"type":"string","uniqueKey":"months.items.[INDEX]","typeLabel":"string"},"uniqueKey":"months","typeLabel":"string[]"},"mrrWire":{"type":"object","description":"The MRR table (same shape as `GET /api/analytics/mrr-financials`).","properties":{"months":{"description":"Months of the range (YYYY-MM, time zone of the organisation), ascending. Every series is aligned with this list.","type":"array","items":{"type":"string","example":"2026-09","uniqueKey":"mrrWire.months.items.[INDEX]","typeLabel":"string"},"uniqueKey":"mrrWire.months","typeLabel":"string[]"},"rows":{"description":"Series per row key: `one_off` (Net (gross − tax, after position discounts) of the one-off positions of the documents finalized in the month: one-time prices of subscription items, manual positions, setup fees, and discounts without a parent position (dunning fees are other operating income, not revenue); credit notes and cancellations count negative.), `variable` (Net (gross − tax, after position discounts) of the usage-based positions of the documents finalized in the month: usage quantities, metered measurements and percentage prices; credit notes and cancellations count negative.), `mrr_bop`, `mrr_eop` (MRR at the end of the previous / this month), `accounted_mrr` (\"Accounted MRR\": the recurring invoice positions' shares of the month by their service period, 30/360; null for a snapshot copy), `billing_gap` (\"Differenz Vertrag zu Rechnung\": `mrr_eop − accounted_mrr`, its causes under `reasons.billing_gap`), `new`, `expansion`, `contraction`, `lost`, `resurrecting` (movements), `arr_eop` (MRR × 12), `revenue_churn_rate` ((contraction + lost) / BoP), `mom_growth` ((EoP − BoP) / BoP), `cash_collected` (\"Zahlungseingang\") and its split by the invoice the money pays, adding up to it: `cash_collected_this_month` (invoices finalized in the same month), `cash_collected_other_months` (invoices of other months), `cash_collected_unassigned` (no finalized invoice: top-ups, prepayments, the part above the gross of an overpaid invoice), `cash_collected_refund_returned` (\"Erstattung zurückgekommen\": a negative refund matched from the bank account), `cash_refunded` (\"Zahlungsausgang\": refunds, chargebacks, payouts and return debit fees) and its split by kind, adding up to it: `cash_refunded_refund` (\"Erstattungen\"), `cash_refunded_chargeback` (\"Rücklastschriften\"), `cash_refunded_payout` (\"Auszahlungen\"), `cash_refunded_return_fee` (\"Rücklastschrift-Gebühren\": the bank fee of a return debit without a return case, not part of the invoice; all four null for a snapshot copy), `cash_corrections` (\"Korrekturen\": refunds entered by hand and cancelled by a counter-entry, no money moved, outside cash in and out; 0 over a range that holds both entries) with `cash_corrections_reversed` (\"storniert\") and `cash_corrections_counter` (\"Gegenbuchung\", negative; all three null for a snapshot copy), `cash_net` (by payment date, whatever month the invoice belongs to), `cash_forecast` (\"Rechnungsprognose (brutto)\": gross of the invoices the billing forecast expects in the month; null for elapsed months), `receivables_eop` (open amounts of finalized invoices at the month end; months after the current one carry the invoices open today forward). A value is null when the month has no data at all.","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","description":"A money amount. `amount` is an exact decimal string with two decimal places (net, excluding VAT, unless stated otherwise); `currency` is the ISO-4217 code.","properties":{"amount":{"description":"Exact decimal amount with two decimal places, dot as separator. Negative amounts carry a leading minus.","type":"string","example":"1234.56","uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX].oneOf.0.amount","typeLabel":"string"},"currency":{"description":"ISO-4217 currency code.","type":"string","example":"EUR","uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX].oneOf.0.currency","typeLabel":"string"}},"uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"string","example":"0.012500","uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX].oneOf.1","typeLabel":"string"},{"type":"null","uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX].oneOf.2","typeLabel":"null"}],"uniqueKey":"mrrWire.rows.additionalProperties.items.[INDEX]","typeLabel":"object | string | null"},"uniqueKey":"mrrWire.rows.additionalProperties","typeLabel":"(object | string | null)[]"},"uniqueKey":"mrrWire.rows","typeLabel":"object"},"totals":{"description":"Total column per row key: flows are summed over the range, `mrr_bop` is the BoP of the first month, `mrr_eop`, `accounted_mrr`, `billing_gap`, `arr_eop` and `receivables_eop` are the value of the last month, rates are null. Totals are computed from the exact amounts and rounded once, so they can differ by a cent from the sum of the rounded cells.","type":"object","additionalProperties":{"oneOf":[{"type":"object","description":"A money amount. `amount` is an exact decimal string with two decimal places (net, excluding VAT, unless stated otherwise); `currency` is the ISO-4217 code.","properties":{"amount":{"description":"Exact decimal amount with two decimal places, dot as separator. Negative amounts carry a leading minus.","type":"string","example":"1234.56","uniqueKey":"mrrWire.totals.additionalProperties.oneOf.0.amount","typeLabel":"string"},"currency":{"description":"ISO-4217 currency code.","type":"string","example":"EUR","uniqueKey":"mrrWire.totals.additionalProperties.oneOf.0.currency","typeLabel":"string"}},"uniqueKey":"mrrWire.totals.additionalProperties.oneOf.0","typeLabel":"object"},{"type":"string","uniqueKey":"mrrWire.totals.additionalProperties.oneOf.1","typeLabel":"string"},{"type":"null","uniqueKey":"mrrWire.totals.additionalProperties.oneOf.2","typeLabel":"null"}],"uniqueKey":"mrrWire.totals.additionalProperties","typeLabel":"object | string | null"},"uniqueKey":"mrrWire.totals","typeLabel":"object"},"reasons":{"description":"Reason split of the movements: `expansion` and `contraction` (and `new`, `lost`, `resurrecting` for the detail view), each a map from reason (`price_change`, `quantity_change`, `discount_start`, `plan_change`, …) to a series aligned with `months`. Amounts are signed: contraction reasons are negative. `billing_gap`: the difference contract − invoice per cause (`partial_month`, `billing_start_later`, `not_yet_billed` (the next billing run will invoice it), `not_billed` (an elapsed month no run will invoice), `upcoming_invoice`, `trial`, `credit_or_cancellation`, `billed_after_end`, `period_shift`, `price_mismatch`, `unknown`); the causes of a month add up to the `billing_gap` cell.","type":"object","additionalProperties":{"description":"Reason => series of money values aligned with `months`.","type":"object","uniqueKey":"mrrWire.reasons.additionalProperties","typeLabel":"object"},"uniqueKey":"mrrWire.reasons","typeLabel":"object"},"meta":{"type":"object","description":"Calculation time, effective scope and currency, finding counts.","properties":{"asOf":{"oneOf":[{"description":"When the figures were last calculated (ISO 8601). Null when no calculation exists yet.","type":"string","format":"date-time","uniqueKey":"mrrWire.meta.asOf.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"When the figures were last calculated (ISO 8601). Null when no calculation exists yet.","type":"null","format":"date-time","uniqueKey":"mrrWire.meta.asOf.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.asOf","typeLabel":"string\u003cdate-time> | null"},"buildId":{"oneOf":[{"description":"Id of the calculation the figures come from. Null when no calculation exists yet.","type":"string","uniqueKey":"mrrWire.meta.buildId.oneOf.0","typeLabel":"string"},{"description":"Id of the calculation the figures come from. Null when no calculation exists yet.","type":"null","uniqueKey":"mrrWire.meta.buildId.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.buildId","typeLabel":"string | null"},"scope":{"description":"Effective movement scope: the level on which new, expansion, contraction, lost and resurrecting are classified.","type":"string","enum":["subscription","invoice_address","customer","organisation"],"example":"invoice_address","uniqueKey":"mrrWire.meta.scope","typeLabel":"enum\u003cstring>"},"currency":{"description":"Effective currency (ISO-4217). Amounts are never converted between currencies.","type":"string","example":"EUR","uniqueKey":"mrrWire.meta.currency","typeLabel":"string"},"from":{"description":"First month of the range (YYYY-MM, time zone of the organisation).","type":"string","example":"2025-10","uniqueKey":"mrrWire.meta.from","typeLabel":"string"},"to":{"description":"Last month of the range (YYYY-MM, time zone of the organisation).","type":"string","example":"2026-09","uniqueKey":"mrrWire.meta.to","typeLabel":"string"},"findings":{"type":"object","description":"Number of data-quality findings of the calculation.","properties":{"error":{"description":"Findings that point at wrong numbers.","type":"integer","example":0,"uniqueKey":"mrrWire.meta.findings.error","typeLabel":"integer"},"warning":{"description":"Findings that point at data that should be checked.","type":"integer","example":3,"uniqueKey":"mrrWire.meta.findings.warning","typeLabel":"integer"},"info":{"description":"Informational findings.","type":"integer","example":12,"uniqueKey":"mrrWire.meta.findings.info","typeLabel":"integer"}},"uniqueKey":"mrrWire.meta.findings","typeLabel":"object"},"filtersNotApplied":{"description":"Datasets of this response that ignore the customer, product or segment filter because the underlying facts have no such dimension (for example receivables at past month ends).","type":"array","items":{"type":"string","uniqueKey":"mrrWire.meta.filtersNotApplied.items.[INDEX]","typeLabel":"string"},"uniqueKey":"mrrWire.meta.filtersNotApplied","typeLabel":"string[]"},"notSnapshotted":{"description":"MRR table rows a month-end snapshot does not hold (invoice, cash and forecast figures). In the snapshot view they keep their current values. Empty when the range has no snapshot or a segment is applied.","type":"array","items":{"type":"string","uniqueKey":"mrrWire.meta.notSnapshotted.items.[INDEX]","typeLabel":"string"},"example":["one_off","accounted_mrr","cash_collected"],"uniqueKey":"mrrWire.meta.notSnapshotted","typeLabel":"string[]"},"projectedFrom":{"oneOf":[{"description":"First month of the range after the current one (YYYY-MM): from there the month-end stocks (open receivables, amounts owed to customers) carry today's open invoices forward, a projection as of today (\"Prognose (Stand heute)\"), not a fact. Null when the range ends in or before the current month.","type":"string","example":"2026-10","uniqueKey":"mrrWire.meta.projectedFrom.oneOf.0","typeLabel":"string"},{"description":"First month of the range after the current one (YYYY-MM): from there the month-end stocks (open receivables, amounts owed to customers) carry today's open invoices forward, a projection as of today (\"Prognose (Stand heute)\"), not a fact. Null when the range ends in or before the current month.","type":"null","example":"2026-10","uniqueKey":"mrrWire.meta.projectedFrom.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.projectedFrom","typeLabel":"string | null"},"forecast":{"type":"object","description":"Completeness of the invoice forecast (\"Rechnungsprognose\") in the range: `incomplete` with the number of subscriptions whose forecast failed. The forecast rows then show what the other subscriptions bring; they are marked \"unvollständig\", never read as 0.","properties":{"incomplete":{"description":"True when the forecast of at least one subscription failed and the range contains forecast months (the current month or later).","type":"boolean","example":false,"uniqueKey":"mrrWire.meta.forecast.incomplete","typeLabel":"boolean"},"failedSubscriptions":{"description":"Number of subscriptions whose billing forecast failed (0 when complete).","type":"integer","example":0,"uniqueKey":"mrrWire.meta.forecast.failedSubscriptions","typeLabel":"integer"}},"uniqueKey":"mrrWire.meta.forecast","typeLabel":"object"},"build":{"oneOf":[{"type":"object","description":"The latest calculation attempt, also when it failed (\"Berechnung abgebrochen\"). Null when the organisation was never calculated.","properties":{"status":{"description":"Outcome of the attempt: `succeeded`, or `failed` when it broke a consistency check and was cancelled (nothing of it was stored).","type":"string","enum":["succeeded","failed"],"example":"failed","uniqueKey":"mrrWire.meta.build.oneOf.0.status","typeLabel":"enum\u003cstring>"},"builtAt":{"description":"When the attempt started (ISO 8601).","type":"string","format":"date-time","uniqueKey":"mrrWire.meta.build.oneOf.0.builtAt","typeLabel":"string\u003cdate-time>"},"buildId":{"description":"Id of the attempt. Equal to `meta.dataBuildId` when it succeeded.","type":"string","uniqueKey":"mrrWire.meta.build.oneOf.0.buildId","typeLabel":"string"},"failed":{"oneOf":[{"type":"object","description":"The broken checks; null unless `status` is `failed`.","properties":{"invariants":{"description":"Codes of the broken checks (sorted), e.g. `CASH_WITHIN_DOCUMENT`; `IDENTITY` for the MRR identity.","type":"array","items":{"type":"string","uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.0.invariants.items.[INDEX]","typeLabel":"string"},"example":["CASH_WITHIN_DOCUMENT"],"uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.0.invariants","typeLabel":"string[]"},"rowCount":{"description":"Number of rows that broke a check (complete, also above the listed rows).","type":"integer","example":5,"uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.0.rowCount","typeLabel":"integer"},"invoiceRowCount":{"description":"Number of the listed rows that name an invoice. Equal to `rowCount` when every row is an invoice.","type":"integer","example":5,"uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.0.invoiceRowCount","typeLabel":"integer"}},"uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"mrrWire.meta.build.oneOf.0.failed.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.build.oneOf.0.failed","typeLabel":"object | null"}},"uniqueKey":"mrrWire.meta.build.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"mrrWire.meta.build.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.build","typeLabel":"object | null"},"dataBuildId":{"oneOf":[{"description":"Id of the calculation the figures come from (the last successful one). Differs from `build.buildId` when the latest attempt failed. Null when no calculation exists yet.","type":"string","uniqueKey":"mrrWire.meta.dataBuildId.oneOf.0","typeLabel":"string"},{"description":"Id of the calculation the figures come from (the last successful one). Differs from `build.buildId` when the latest attempt failed. Null when no calculation exists yet.","type":"null","uniqueKey":"mrrWire.meta.dataBuildId.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrWire.meta.dataBuildId","typeLabel":"string | null"}},"uniqueKey":"mrrWire.meta","typeLabel":"object"},"reasonLabels":{"description":"German name of every key of `reasons`: the movement reasons (the one catalogue, the same names as the card \"Ursachen der Bewegungen\"; every reason is its own \"davon\" row, added and removed products are not netted) and the causes of `billing_gap`. \"Sonstiges\" only for a key outside the catalogue.","type":"object","example":{"contract_start":"Vertragsbeginn","price_change":"Preisänderung","not_billed":"Nicht abgerechnet"},"additionalProperties":{"type":"string","uniqueKey":"mrrWire.reasonLabels.additionalProperties","typeLabel":"string"},"uniqueKey":"mrrWire.reasonLabels","typeLabel":"object"}},"uniqueKey":"mrrWire","typeLabel":"object"},"recurring":{"type":"object","description":"Key figures, bridge months and backlog.","properties":{"kpis":{"description":"Key figures: MRR, ARR, net new MRR, quick ratio.","type":"array","items":{"description":"One key figure tile: value of `asOfMonth`, change to the previous month and up to twelve points of history.","properties":{"id":{"description":"Stable id of the figure (`mrr`, `arr`, `accounted_mrr`, `net_new`, `quick_ratio`, `active`, `arpa`, `nrr`, `grr`, `net_cash`, `outstanding`, `overdue`, `dso`, `dso_12m`).","type":"string","example":"mrr","uniqueKey":"recurring.kpis.items.[INDEX].id","typeLabel":"string"},"title":{"description":"German title.","type":"string","example":"MRR","uniqueKey":"recurring.kpis.items.[INDEX].title","typeLabel":"string"},"valueKind":{"description":"How to format the value and the change: `money`, `rate` (0.125000 = 12.5 %), `ratio`, `count`, `days`.","type":"string","enum":["money","rate","ratio","count","days"],"uniqueKey":"recurring.kpis.items.[INDEX].valueKind","typeLabel":"enum\u003cstring>"},"value":{"oneOf":[{"description":"The value as an exact decimal string; null when it cannot be computed.","type":"string","example":"12500.00","uniqueKey":"recurring.kpis.items.[INDEX].value.oneOf.0","typeLabel":"string"},{"description":"The value as an exact decimal string; null when it cannot be computed.","type":"null","example":"12500.00","uniqueKey":"recurring.kpis.items.[INDEX].value.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].value","typeLabel":"string | null"},"delta":{"oneOf":[{"description":"Change to the previous month in the same unit (for rates: the difference of the rates); null without a comparison.","type":"string","example":"250.00","uniqueKey":"recurring.kpis.items.[INDEX].delta.oneOf.0","typeLabel":"string"},{"description":"Change to the previous month in the same unit (for rates: the difference of the rates); null without a comparison.","type":"null","example":"250.00","uniqueKey":"recurring.kpis.items.[INDEX].delta.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].delta","typeLabel":"string | null"},"better":{"description":"Which direction is favourable.","type":"string","enum":["up","down"],"uniqueKey":"recurring.kpis.items.[INDEX].better","typeLabel":"enum\u003cstring>"},"sparkline":{"description":"Up to twelve values, oldest first, ending with the value.","type":"array","items":{"oneOf":[{"type":"string","uniqueKey":"recurring.kpis.items.[INDEX].sparkline.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"recurring.kpis.items.[INDEX].sparkline.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].sparkline.items.[INDEX]","typeLabel":"string | null"},"uniqueKey":"recurring.kpis.items.[INDEX].sparkline","typeLabel":"(string | null)[]"},"caption":{"oneOf":[{"description":"Reference shown under the value (`im Zeitraum`, `heute`); null when the value is the month at the end of the range.","type":"string","uniqueKey":"recurring.kpis.items.[INDEX].caption.oneOf.0","typeLabel":"string"},{"description":"Reference shown under the value (`im Zeitraum`, `heute`); null when the value is the month at the end of the range.","type":"null","uniqueKey":"recurring.kpis.items.[INDEX].caption.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].caption","typeLabel":"string | null"},"asOfMonth":{"oneOf":[{"description":"Month the value belongs to (YYYY-MM): the month at the end of its series; for `heute` tiles the running month. On the recurring page the tiles show the last COMPLETE month by default and carry the running month in `current`.","type":"string","example":"2026-08","uniqueKey":"recurring.kpis.items.[INDEX].asOfMonth.oneOf.0","typeLabel":"string"},{"description":"Month the value belongs to (YYYY-MM): the month at the end of its series; for `heute` tiles the running month. On the recurring page the tiles show the last COMPLETE month by default and carry the running month in `current`.","type":"null","example":"2026-08","uniqueKey":"recurring.kpis.items.[INDEX].asOfMonth.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].asOfMonth","typeLabel":"string | null"},"monthComplete":{"oneOf":[{"description":"False when `asOfMonth` is the running month (or later): the value is not final (\"laufend\"). True for an ended month.","type":"boolean","example":true,"uniqueKey":"recurring.kpis.items.[INDEX].monthComplete.oneOf.0","typeLabel":"boolean"},{"description":"False when `asOfMonth` is the running month (or later): the value is not final (\"laufend\"). True for an ended month.","type":"null","example":true,"uniqueKey":"recurring.kpis.items.[INDEX].monthComplete.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].monthComplete","typeLabel":"boolean | null"},"current":{"oneOf":[{"type":"object","description":"The running month next to a tile that shows the last complete month (recurring page); null otherwise.","properties":{"asOfMonth":{"description":"Month of the value (YYYY-MM), the running month.","type":"string","example":"2026-09","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.asOfMonth","typeLabel":"string"},"value":{"oneOf":[{"description":"The value so far as an exact decimal string (unit as the tile); null when it cannot be computed.","type":"string","example":"5279.33","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.value.oneOf.0","typeLabel":"string"},{"description":"The value so far as an exact decimal string (unit as the tile); null when it cannot be computed.","type":"null","example":"5279.33","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.value.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.value","typeLabel":"string | null"},"delta":{"oneOf":[{"description":"Change to the previous month in the tile's unit; null where the tile compares complete months only (Accounted MRR) or without a comparison.","type":"string","example":"1916.00","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.delta.oneOf.0","typeLabel":"string"},{"description":"Change to the previous month in the tile's unit; null where the tile compares complete months only (Accounted MRR) or without a comparison.","type":"null","example":"1916.00","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.delta.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.delta","typeLabel":"string | null"},"monthComplete":{"description":"Always false: the month has not ended.","type":"boolean","example":false,"uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0.monthComplete","typeLabel":"boolean"}},"uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"recurring.kpis.items.[INDEX].current.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.kpis.items.[INDEX].current","typeLabel":"object | null"}},"type":"object","uniqueKey":"recurring.kpis.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.kpis","typeLabel":"object[]"},"movementMonths":{"description":"Bridge and reasons per month of the range.","type":"array","items":{"description":"MRR bridge of one month with its reasons.","properties":{"month":{"description":"Month (YYYY-MM).","type":"string","example":"2026-08","uniqueKey":"recurring.movementMonths.items.[INDEX].month","typeLabel":"string"},"bop":{"description":"MRR at the start of the month.","type":"string","example":"12000.00","uniqueKey":"recurring.movementMonths.items.[INDEX].bop","typeLabel":"string"},"eop":{"description":"MRR at the end of the month.","type":"string","example":"12500.00","uniqueKey":"recurring.movementMonths.items.[INDEX].eop","typeLabel":"string"},"steps":{"description":"The five movements in bridge order.","type":"array","items":{"description":"One step of the MRR bridge of a month.","properties":{"key":{"description":"Movement: `new`, `expansion`, `resurrecting`, `contraction`, `lost`.","type":"string","enum":["new","expansion","resurrecting","contraction","lost"],"uniqueKey":"recurring.movementMonths.items.[INDEX].steps.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"value":{"description":"Amount with display sign: contraction and lost are negative.","type":"string","example":"-120.00","uniqueKey":"recurring.movementMonths.items.[INDEX].steps.items.[INDEX].value","typeLabel":"string"},"accounts":{"description":"Accounts with this movement.","type":"integer","example":3,"uniqueKey":"recurring.movementMonths.items.[INDEX].steps.items.[INDEX].accounts","typeLabel":"integer"}},"type":"object","uniqueKey":"recurring.movementMonths.items.[INDEX].steps.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.movementMonths.items.[INDEX].steps","typeLabel":"object[]"},"reasons":{"description":"Reason split of the movements (non-zero entries only).","type":"array","items":{"description":"Amount of one movement reason in a month.","properties":{"movement":{"description":"Movement the reason belongs to.","type":"string","enum":["new","expansion","resurrecting","contraction","lost"],"uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX].movement","typeLabel":"enum\u003cstring>"},"reason":{"description":"Reason (`contract_start`, `price_change`, `quantity_change`, `discount_start`, `pause`, `contract_end`, `voided`, …).","type":"string","example":"price_change","uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX].reason","typeLabel":"string"},"amount":{"description":"Signed amount (decreases negative).","type":"string","example":"45.00","uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX].amount","typeLabel":"string"},"accounts":{"description":"Accounts of the movement whose change carries this reason.","type":"integer","example":2,"uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX].accounts","typeLabel":"integer"},"label":{"description":"German name of the reason, the same as in the MRR table's \"davon\" rows (`reasonLabels`).","type":"string","example":"Preisänderung","uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX].label","typeLabel":"string"}},"type":"object","uniqueKey":"recurring.movementMonths.items.[INDEX].reasons.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.movementMonths.items.[INDEX].reasons","typeLabel":"object[]"},"snapshotBop":{"oneOf":[{"description":"MRR at the end of the previous month as its month-end snapshot reported it; null when that month has no snapshot or nothing changed since. Then `snapshotBop` + Σ `corrections` = `bop`.","type":"string","example":"12100.00","uniqueKey":"recurring.movementMonths.items.[INDEX].snapshotBop.oneOf.0","typeLabel":"string"},{"description":"MRR at the end of the previous month as its month-end snapshot reported it; null when that month has no snapshot or nothing changed since. Then `snapshotBop` + Σ `corrections` = `bop`.","type":"null","example":"12100.00","uniqueKey":"recurring.movementMonths.items.[INDEX].snapshotBop.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.movementMonths.items.[INDEX].snapshotBop","typeLabel":"string | null"},"corrections":{"description":"Changes to the previous month found after its snapshot, per cause (a subscription voided after the snapshot is `voided`, \"Annulliert\"): the bridge runs `snapshotBop` + corrections = `bop`, + steps = `eop`. Empty without a snapshot or change.","type":"array","items":{"description":"A correction of the bridge: a change to the previous month found after its month-end snapshot, per cause (e.g. `voided`, \"Annulliert\").","properties":{"key":{"description":"Restatement cause.","type":"string","enum":["voided","pause_changed","segment_added","segment_removed","contract_end_changed","price_history_changed","quantity_changed","discount_changed","source_repair"],"uniqueKey":"recurring.movementMonths.items.[INDEX].corrections.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"label":{"description":"German name of the cause, the same as on the restatement rows.","type":"string","example":"Annulliert","uniqueKey":"recurring.movementMonths.items.[INDEX].corrections.items.[INDEX].label","typeLabel":"string"},"value":{"description":"Signed amount: the change of the previous month's MRR at its end since the snapshot.","type":"string","example":"-100.00","uniqueKey":"recurring.movementMonths.items.[INDEX].corrections.items.[INDEX].value","typeLabel":"string"}},"type":"object","uniqueKey":"recurring.movementMonths.items.[INDEX].corrections.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.movementMonths.items.[INDEX].corrections","typeLabel":"object[]"}},"type":"object","uniqueKey":"recurring.movementMonths.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.movementMonths","typeLabel":"object[]"},"backlog":{"type":"object","description":"Committed MRR and known forward MRR.","properties":{"asOfMonth":{"description":"The month the figures refer to (YYYY-MM).","type":"string","example":"2026-09","uniqueKey":"recurring.backlog.asOfMonth","typeLabel":"string"},"committed":{"description":"Σ MRR × remaining fixed contract months.","type":"string","example":"54000.00","uniqueKey":"recurring.backlog.committed","typeLabel":"string"},"averageRemainingMonths":{"description":"Average remaining fixed term in months, weighted with MRR (one decimal).","type":"string","example":"4.3","uniqueKey":"recurring.backlog.averageRemainingMonths","typeLabel":"string"},"accounts":{"description":"Paying accounts with a fixed remaining term.","type":"integer","example":42,"uniqueKey":"recurring.backlog.accounts","typeLabel":"integer"},"buckets":{"description":"Committed amount by remaining term.","type":"array","items":{"description":"Committed MRR of the accounts in one band of remaining fixed term.","properties":{"key":{"description":"Band: `lt3` (under 3 months), `3to6`, `6to12` (up to 12), `gt12`.","type":"string","enum":["lt3","3to6","6to12","gt12"],"uniqueKey":"recurring.backlog.buckets.items.[INDEX].key","typeLabel":"enum\u003cstring>"},"amount":{"description":"Committed amount (MRR × remaining months).","type":"string","example":"4500.00","uniqueKey":"recurring.backlog.buckets.items.[INDEX].amount","typeLabel":"string"}},"type":"object","uniqueKey":"recurring.backlog.buckets.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.backlog.buckets","typeLabel":"object[]"},"forward":{"description":"First point: MRR at the end of `asOfMonth`; then the twelve following months.","type":"array","items":{"description":"Known MRR at the end of one month.","properties":{"month":{"description":"Month (YYYY-MM).","type":"string","example":"2026-10","uniqueKey":"recurring.backlog.forward.items.[INDEX].month","typeLabel":"string"},"mrr":{"description":"MRR at the end of the month from the contract data known today.","type":"string","example":"12400.00","uniqueKey":"recurring.backlog.forward.items.[INDEX].mrr","typeLabel":"string"}},"type":"object","uniqueKey":"recurring.backlog.forward.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.backlog.forward","typeLabel":"object[]"},"events":{"description":"Known changes of the following months.","type":"array","items":{"description":"A known future change of MRR.","properties":{"id":{"description":"Stable id of the event line.","type":"string","example":"end:2026-11:0199c0de-0000-7000-8000-000000000001","uniqueKey":"recurring.backlog.events.items.[INDEX].id","typeLabel":"string"},"month":{"description":"Month of the change (YYYY-MM).","type":"string","example":"2026-11","uniqueKey":"recurring.backlog.events.items.[INDEX].month","typeLabel":"string"},"kind":{"description":"`end` (contract end), `price` (price change, summed per month and product), `discount_end`, `ramp` (planned contract change), `trial_end`, `start` (planned start), `other`.","type":"string","enum":["end","price","discount_end","ramp","trial_end","start","other"],"uniqueKey":"recurring.backlog.events.items.[INDEX].kind","typeLabel":"enum\u003cstring>"},"customer":{"oneOf":[{"type":"object","description":"Customer of the account; null for summed price changes.","properties":{"id":{"oneOf":[{"description":"Id (UUID).","type":"string","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.id.oneOf.0","typeLabel":"string"},{"description":"Id (UUID).","type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.id","typeLabel":"string | null"},"number":{"oneOf":[{"description":"Human-readable number (customer number, subscription number, invoice number).","type":"string","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.number.oneOf.0","typeLabel":"string"},{"description":"Human-readable number (customer number, subscription number, invoice number).","type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.number.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.number","typeLabel":"string | null"},"name":{"oneOf":[{"description":"Display name.","type":"string","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.name.oneOf.0","typeLabel":"string"},{"description":"Display name.","type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.name.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0.name","typeLabel":"string | null"}},"uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].customer.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].customer","typeLabel":"object | null"},"accounts":{"description":"Affected accounts.","type":"integer","example":1,"uniqueKey":"recurring.backlog.events.items.[INDEX].accounts","typeLabel":"integer"},"product":{"oneOf":[{"description":"Product of a price change; null otherwise.","type":"string","uniqueKey":"recurring.backlog.events.items.[INDEX].product.oneOf.0","typeLabel":"string"},{"description":"Product of a price change; null otherwise.","type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].product.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].product","typeLabel":"string | null"},"amount":{"description":"Effect on MRR, signed.","type":"string","example":"-99.00","uniqueKey":"recurring.backlog.events.items.[INDEX].amount","typeLabel":"string"},"cancellationReason":{"oneOf":[{"description":"Cancellation reason code of a contract end; null otherwise or without a reason.","type":"string","uniqueKey":"recurring.backlog.events.items.[INDEX].cancellationReason.oneOf.0","typeLabel":"string"},{"description":"Cancellation reason code of a contract end; null otherwise or without a reason.","type":"null","uniqueKey":"recurring.backlog.events.items.[INDEX].cancellationReason.oneOf.1","typeLabel":"null"}],"uniqueKey":"recurring.backlog.events.items.[INDEX].cancellationReason","typeLabel":"string | null"}},"type":"object","uniqueKey":"recurring.backlog.events.items.[INDEX]","typeLabel":"object"},"uniqueKey":"recurring.backlog.events","typeLabel":"object[]"}},"uniqueKey":"recurring.backlog","typeLabel":"object"}},"uniqueKey":"recurring","typeLabel":"object"},"selectedMonth":{"oneOf":[{"description":"Month preselected for the bridge (the `month` parameter, default the last complete month of the range).","type":"string","example":"2026-08","uniqueKey":"selectedMonth.oneOf.0","typeLabel":"string"},{"description":"Month preselected for the bridge (the `month` parameter, default the last complete month of the range).","type":"null","example":"2026-08","uniqueKey":"selectedMonth.oneOf.1","typeLabel":"null"}],"uniqueKey":"selectedMonth","typeLabel":"string | null"},"mrrCells":{"description":"Snapshot state per snapshotted table row, aligned with `months`: the copied MRR rows (`mrr_bop`, `mrr_eop`, `new`, `expansion`, `contraction`, `lost`, `resurrecting`) and the rows derived from them with the table's formulas (`arr_eop`; `revenue_churn_rate` and `mom_growth` as rates at scale 6; their `restatement` is always null). Rows not listed keep their current values and are named in `meta.notSnapshotted`. Empty object when the range has no snapshot or a segment is applied (snapshots are organisation-wide).","type":"object","additionalProperties":{"type":"array","items":{"oneOf":[{"type":"object","description":"Snapshot state of one MRR cell.","properties":{"snapshot":{"oneOf":[{"description":"Value of the latest month-end snapshot as an exact decimal (a rate row: the rate at scale 6); null when the month has none.","type":"string","example":"150.00","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshot.oneOf.0","typeLabel":"string"},{"description":"Value of the latest month-end snapshot as an exact decimal (a rate row: the rate at scale 6); null when the month has none.","type":"null","example":"150.00","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshot.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshot","typeLabel":"string | null"},"snapshotVersion":{"oneOf":[{"description":"Version of that snapshot.","type":"integer","example":1,"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotVersion.oneOf.0","typeLabel":"integer"},{"description":"Version of that snapshot.","type":"null","example":1,"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotVersion.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotVersion","typeLabel":"integer | null"},"restatement":{"oneOf":[{"type":"object","description":"Difference to the snapshot; null when there is none. Only snapshotted figures (`mrr_bop`, `mrr_eop` and the five movements) carry one.","properties":{"delta":{"description":"Current value minus snapshot value.","type":"string","example":"-100.00","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.delta","typeLabel":"string"},"accounts":{"description":"Accounts whose MRR at month end changed since the snapshot.","type":"integer","example":1,"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.accounts","typeLabel":"integer"},"cause":{"oneOf":[{"description":"Main cause: `voided`, `pause_changed`, `segment_added`, `segment_removed`, `contract_end_changed`, `price_history_changed`, `quantity_changed`, `discount_changed`, `source_repair`.","type":"string","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.cause.oneOf.0","typeLabel":"string"},{"description":"Main cause: `voided`, `pause_changed`, `segment_added`, `segment_removed`, `contract_end_changed`, `price_history_changed`, `quantity_changed`, `discount_changed`, `source_repair`.","type":"null","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.cause.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.cause","typeLabel":"string | null"},"causeLabel":{"oneOf":[{"description":"German label of `cause`.","type":"string","example":"Vertragsende geändert","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.causeLabel.oneOf.0","typeLabel":"string"},{"description":"German label of `cause`.","type":"null","example":"Vertragsende geändert","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.causeLabel.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0.causeLabel","typeLabel":"string | null"}},"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.restatement","typeLabel":"object | null"},"snapshotAccounts":{"oneOf":[{"description":"Accounts in the snapshot: `mrr_eop` the accounts with MRR above 0 at the month end, a movement row the accounts with that movement; null for the other rows.","type":"integer","example":2,"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotAccounts.oneOf.0","typeLabel":"integer"},{"description":"Accounts in the snapshot: `mrr_eop` the accounts with MRR above 0 at the month end, a movement row the accounts with that movement; null for the other rows.","type":"null","example":2,"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotAccounts.oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0.snapshotAccounts","typeLabel":"integer | null"}},"uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"mrrCells.additionalProperties.items.[INDEX].oneOf.1","typeLabel":"null"}],"uniqueKey":"mrrCells.additionalProperties.items.[INDEX]","typeLabel":"object | null"},"uniqueKey":"mrrCells.additionalProperties","typeLabel":"(object | null)[]"},"uniqueKey":"mrrCells","typeLabel":"object"},"definitions":{"type":"object","description":"Definitions catalogue.","properties":{"version":{"description":"Catalogue version.","type":"string","example":"v2","uniqueKey":"definitions.version","typeLabel":"string"},"validFrom":{"description":"Date from which the version applies (YYYY-MM-DD).","type":"string","example":"2026-09-28","uniqueKey":"definitions.validFrom","typeLabel":"string"},"entries":{"description":"The definitions.","type":"array","items":{"description":"One entry of the definitions catalogue.","properties":{"id":{"description":"Stable id.","type":"string","example":"nrr","uniqueKey":"definitions.entries.items.[INDEX].id","typeLabel":"string"},"title":{"description":"German title.","type":"string","example":"NRR 12 Monate","uniqueKey":"definitions.entries.items.[INDEX].title","typeLabel":"string"},"definition":{"description":"German definition.","type":"string","uniqueKey":"definitions.entries.items.[INDEX].definition","typeLabel":"string"},"formula":{"description":"Formula.","type":"string","uniqueKey":"definitions.entries.items.[INDEX].formula","typeLabel":"string"}},"type":"object","uniqueKey":"definitions.entries.items.[INDEX]","typeLabel":"object"},"uniqueKey":"definitions.entries","typeLabel":"object[]"},"changelog":{"description":"Every version of the catalogue, newest first, with the definitions whose meaning changed.","type":"array","items":{"description":"One version of the definitions catalogue in the changelog.","properties":{"version":{"description":"Catalogue version.","type":"string","example":"v2","uniqueKey":"definitions.changelog.items.[INDEX].version","typeLabel":"string"},"validFrom":{"description":"Date from which the version applies (YYYY-MM-DD).","type":"string","example":"2026-09-28","uniqueKey":"definitions.changelog.items.[INDEX].validFrom","typeLabel":"string"},"changes":{"description":"The definitions whose meaning changed with this version (empty for the first version).","type":"array","items":{"description":"One changed definition of a catalogue version.","properties":{"id":{"description":"Id of the definition.","type":"string","example":"dso_3m","uniqueKey":"definitions.changelog.items.[INDEX].changes.items.[INDEX].id","typeLabel":"string"},"change":{"description":"What changed (German).","type":"string","uniqueKey":"definitions.changelog.items.[INDEX].changes.items.[INDEX].change","typeLabel":"string"}},"type":"object","uniqueKey":"definitions.changelog.items.[INDEX].changes.items.[INDEX]","typeLabel":"object"},"uniqueKey":"definitions.changelog.items.[INDEX].changes","typeLabel":"object[]"}},"type":"object","uniqueKey":"definitions.changelog.items.[INDEX]","typeLabel":"object"},"uniqueKey":"definitions.changelog","typeLabel":"object[]"}},"uniqueKey":"definitions","typeLabel":"object"},"meta":{"type":"object","description":"Calculation time, scope, currency, findings, filters not applied.","properties":{"asOf":{"oneOf":[{"description":"When the figures were last calculated (ISO 8601). Null when no calculation exists yet.","type":"string","format":"date-time","uniqueKey":"meta.asOf.oneOf.0","typeLabel":"string\u003cdate-time>"},{"description":"When the figures were last calculated (ISO 8601). Null when no calculation exists yet.","type":"null","format":"date-time","uniqueKey":"meta.asOf.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.asOf","typeLabel":"string\u003cdate-time> | null"},"buildId":{"oneOf":[{"description":"Id of the calculation the figures come from. Null when no calculation exists yet.","type":"string","uniqueKey":"meta.buildId.oneOf.0","typeLabel":"string"},{"description":"Id of the calculation the figures come from. Null when no calculation exists yet.","type":"null","uniqueKey":"meta.buildId.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.buildId","typeLabel":"string | null"},"scope":{"description":"Effective movement scope: the level on which new, expansion, contraction, lost and resurrecting are classified.","type":"string","enum":["subscription","invoice_address","customer","organisation"],"example":"invoice_address","uniqueKey":"meta.scope","typeLabel":"enum\u003cstring>"},"currency":{"description":"Effective currency (ISO-4217). Amounts are never converted between currencies.","type":"string","example":"EUR","uniqueKey":"meta.currency","typeLabel":"string"},"from":{"description":"First month of the range (YYYY-MM, time zone of the organisation).","type":"string","example":"2025-10","uniqueKey":"meta.from","typeLabel":"string"},"to":{"description":"Last month of the range (YYYY-MM, time zone of the organisation).","type":"string","example":"2026-09","uniqueKey":"meta.to","typeLabel":"string"},"findings":{"type":"object","description":"Number of data-quality findings of the calculation.","properties":{"error":{"description":"Findings that point at wrong numbers.","type":"integer","example":0,"uniqueKey":"meta.findings.error","typeLabel":"integer"},"warning":{"description":"Findings that point at data that should be checked.","type":"integer","example":3,"uniqueKey":"meta.findings.warning","typeLabel":"integer"},"info":{"description":"Informational findings.","type":"integer","example":12,"uniqueKey":"meta.findings.info","typeLabel":"integer"}},"uniqueKey":"meta.findings","typeLabel":"object"},"filtersNotApplied":{"description":"Datasets of this response that ignore the customer, product or segment filter because the underlying facts have no such dimension (for example receivables at past month ends).","type":"array","items":{"type":"string","uniqueKey":"meta.filtersNotApplied.items.[INDEX]","typeLabel":"string"},"uniqueKey":"meta.filtersNotApplied","typeLabel":"string[]"},"notSnapshotted":{"description":"MRR table rows a month-end snapshot does not hold (invoice, cash and forecast figures). In the snapshot view they keep their current values. Empty when the range has no snapshot or a segment is applied.","type":"array","items":{"type":"string","uniqueKey":"meta.notSnapshotted.items.[INDEX]","typeLabel":"string"},"example":["one_off","accounted_mrr","cash_collected"],"uniqueKey":"meta.notSnapshotted","typeLabel":"string[]"},"projectedFrom":{"oneOf":[{"description":"First month of the range after the current one (YYYY-MM): from there the month-end stocks (open receivables, amounts owed to customers) carry today's open invoices forward, a projection as of today (\"Prognose (Stand heute)\"), not a fact. Null when the range ends in or before the current month.","type":"string","example":"2026-10","uniqueKey":"meta.projectedFrom.oneOf.0","typeLabel":"string"},{"description":"First month of the range after the current one (YYYY-MM): from there the month-end stocks (open receivables, amounts owed to customers) carry today's open invoices forward, a projection as of today (\"Prognose (Stand heute)\"), not a fact. Null when the range ends in or before the current month.","type":"null","example":"2026-10","uniqueKey":"meta.projectedFrom.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.projectedFrom","typeLabel":"string | null"},"forecast":{"type":"object","description":"Completeness of the invoice forecast (\"Rechnungsprognose\") in the range: `incomplete` with the number of subscriptions whose forecast failed. The forecast rows then show what the other subscriptions bring; they are marked \"unvollständig\", never read as 0.","properties":{"incomplete":{"description":"True when the forecast of at least one subscription failed and the range contains forecast months (the current month or later).","type":"boolean","example":false,"uniqueKey":"meta.forecast.incomplete","typeLabel":"boolean"},"failedSubscriptions":{"description":"Number of subscriptions whose billing forecast failed (0 when complete).","type":"integer","example":0,"uniqueKey":"meta.forecast.failedSubscriptions","typeLabel":"integer"}},"uniqueKey":"meta.forecast","typeLabel":"object"},"build":{"oneOf":[{"type":"object","description":"The latest calculation attempt, also when it failed (\"Berechnung abgebrochen\"). Null when the organisation was never calculated.","properties":{"status":{"description":"Outcome of the attempt: `succeeded`, or `failed` when it broke a consistency check and was cancelled (nothing of it was stored).","type":"string","enum":["succeeded","failed"],"example":"failed","uniqueKey":"meta.build.oneOf.0.status","typeLabel":"enum\u003cstring>"},"builtAt":{"description":"When the attempt started (ISO 8601).","type":"string","format":"date-time","uniqueKey":"meta.build.oneOf.0.builtAt","typeLabel":"string\u003cdate-time>"},"buildId":{"description":"Id of the attempt. Equal to `meta.dataBuildId` when it succeeded.","type":"string","uniqueKey":"meta.build.oneOf.0.buildId","typeLabel":"string"},"failed":{"oneOf":[{"type":"object","description":"The broken checks; null unless `status` is `failed`.","properties":{"invariants":{"description":"Codes of the broken checks (sorted), e.g. `CASH_WITHIN_DOCUMENT`; `IDENTITY` for the MRR identity.","type":"array","items":{"type":"string","uniqueKey":"meta.build.oneOf.0.failed.oneOf.0.invariants.items.[INDEX]","typeLabel":"string"},"example":["CASH_WITHIN_DOCUMENT"],"uniqueKey":"meta.build.oneOf.0.failed.oneOf.0.invariants","typeLabel":"string[]"},"rowCount":{"description":"Number of rows that broke a check (complete, also above the listed rows).","type":"integer","example":5,"uniqueKey":"meta.build.oneOf.0.failed.oneOf.0.rowCount","typeLabel":"integer"},"invoiceRowCount":{"description":"Number of the listed rows that name an invoice. Equal to `rowCount` when every row is an invoice.","type":"integer","example":5,"uniqueKey":"meta.build.oneOf.0.failed.oneOf.0.invoiceRowCount","typeLabel":"integer"}},"uniqueKey":"meta.build.oneOf.0.failed.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"meta.build.oneOf.0.failed.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.build.oneOf.0.failed","typeLabel":"object | null"}},"uniqueKey":"meta.build.oneOf.0","typeLabel":"object"},{"type":"null","uniqueKey":"meta.build.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.build","typeLabel":"object | null"},"dataBuildId":{"oneOf":[{"description":"Id of the calculation the figures come from (the last successful one). Differs from `build.buildId` when the latest attempt failed. Null when no calculation exists yet.","type":"string","uniqueKey":"meta.dataBuildId.oneOf.0","typeLabel":"string"},{"description":"Id of the calculation the figures come from (the last successful one). Differs from `build.buildId` when the latest attempt failed. Null when no calculation exists yet.","type":"null","uniqueKey":"meta.dataBuildId.oneOf.1","typeLabel":"null"}],"uniqueKey":"meta.dataBuildId","typeLabel":"string | null"}},"uniqueKey":"meta","typeLabel":"object"}},"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"tenantName":"\u003cstring>","currency":"EUR","asOf":"2023-11-07T05:31:56Z","months":["\u003cstring>"],"mrrWire":{"months":["2026-09"],"rows":{},"totals":{},"reasons":{},"meta":{"asOf":"2023-11-07T05:31:56Z","buildId":"\u003cstring>","scope":"invoice_address","currency":"EUR","from":"2025-10","to":"2026-09","findings":{"error":0,"warning":3,"info":12},"filtersNotApplied":["\u003cstring>"],"notSnapshotted":["one_off","accounted_mrr","cash_collected"],"projectedFrom":"2026-10","forecast":{"incomplete":false,"failedSubscriptions":0},"build":{"status":"failed","builtAt":"2023-11-07T05:31:56Z","buildId":"\u003cstring>","failed":{"invariants":["CASH_WITHIN_DOCUMENT"],"rowCount":5,"invoiceRowCount":5}},"dataBuildId":"\u003cstring>"},"reasonLabels":{"contract_start":"Vertragsbeginn","price_change":"Preisänderung","not_billed":"Nicht abgerechnet"}},"recurring":{"kpis":[{"id":"mrr","title":"MRR","valueKind":"money","value":"12500.00","delta":"250.00","better":"up","sparkline":["\u003cstring>"],"caption":"\u003cstring>","asOfMonth":"2026-08","monthComplete":true,"current":{"asOfMonth":"2026-09","value":"5279.33","delta":"1916.00","monthComplete":false}}],"movementMonths":[{"month":"2026-08","bop":"12000.00","eop":"12500.00","steps":[{"key":"new","value":"-120.00","accounts":3}],"reasons":[{"movement":"new","reason":"price_change","amount":"45.00","accounts":2,"label":"Preisänderung"}],"snapshotBop":"12100.00","corrections":[{"key":"voided","label":"Annulliert","value":"-100.00"}]}],"backlog":{"asOfMonth":"2026-09","committed":"54000.00","averageRemainingMonths":"4.3","accounts":42,"buckets":[{"key":"lt3","amount":"4500.00"}],"forward":[{"month":"2026-10","mrr":"12400.00"}],"events":[{"id":"end:2026-11:0199c0de-0000-7000-8000-000000000001","month":"2026-11","kind":"end","customer":{"id":"\u003cstring>","number":"\u003cstring>","name":"\u003cstring>"},"accounts":1,"product":"\u003cstring>","amount":"-99.00","cancellationReason":"\u003cstring>"}]}},"selectedMonth":"2026-08","mrrCells":{},"definitions":{"version":"v2","validFrom":"2026-09-28","entries":[{"id":"nrr","title":"NRR 12 Monate","definition":"\u003cstring>","formula":"\u003cstring>"}],"changelog":[{"version":"v2","validFrom":"2026-09-28","changes":[{"id":"dso_3m","change":"\u003cstring>"}]}]},"meta":{"asOf":"2023-11-07T05:31:56Z","buildId":"\u003cstring>","scope":"invoice_address","currency":"EUR","from":"2025-10","to":"2026-09","findings":{"error":0,"warning":3,"info":12},"filtersNotApplied":["\u003cstring>"],"notSnapshotted":["one_off","accounted_mrr","cash_collected"],"projectedFrom":"2026-10","forecast":{"incomplete":false,"failedSubscriptions":0},"build":{"status":"failed","builtAt":"2023-11-07T05:31:56Z","buildId":"\u003cstring>","failed":{"invariants":["CASH_WITHIN_DOCUMENT"],"rowCount":5,"invoiceRowCount":5}},"dataBuildId":"\u003cstring>"}}}},"exampleType":"generated"}},"exampleType":"generated"},"ea9869a4-8dc2-4d1f-bb3c-4401c01f60f3":{"description":"Missing or invalid authentication.","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"61027acc-e9ba-4442-9fcb-5ec0ccf24017":{"description":"Missing permission `analytics:read` (`FRAMEWORK__ACCESS_DENIED`), or the finance reports are not enabled for the organisation (feature flag `analytics.advanced`, `type` https://fynn.dev/problems/feature-not-available).","content":{"application/problem+json":{"schema":{"oneOf":[{"type":"object","description":"Error body (problem+json). `type` is the error key, e.g. `ANALYTICS_MRR_FINANCIALS__SNAPSHOT_MONTH_NOT_ENDED`; further keys carry the parameters of the error.","required":["status","type","title","detail"],"properties":{"status":{"type":"integer","example":409,"isRequired":true,"uniqueKey":"oneOf.0.status","typeLabel":"integer"},"type":{"type":"string","example":"ANALYTICS_MRR_FINANCIALS__SNAPSHOT_MONTH_NOT_ENDED","isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"string"},"title":{"type":"string","example":"An error occurred","isRequired":true,"uniqueKey":"oneOf.0.title","typeLabel":"string"},"detail":{"type":"string","description":"German sentence that can be shown to the user.","isRequired":true,"uniqueKey":"oneOf.0.detail","typeLabel":"string"}},"additionalProperties":true,"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"403 body when the finance reports are not enabled for the organisation (feature flag `analytics.advanced`).","required":["type","title","detail","featureFlags"],"properties":{"type":{"type":"string","enum":["https://fynn.dev/problems/feature-not-available"],"isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"title":{"type":"string","example":"Feature not available","isRequired":true,"uniqueKey":"oneOf.1.title","typeLabel":"string"},"detail":{"type":"string","example":"The requested feature is not available. Please contact customer support.","isRequired":true,"uniqueKey":"oneOf.1.detail","typeLabel":"string"},"featureFlags":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.1.featureFlags.items.[INDEX]","typeLabel":"string"},"example":["analytics.advanced"],"isRequired":true,"uniqueKey":"oneOf.1.featureFlags","typeLabel":"string[]"}},"additionalProperties":true,"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":409,"type":"ANALYTICS_MRR_FINANCIALS__SNAPSHOT_MONTH_NOT_ENDED","title":"An error occurred","detail":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"1e906145-472d-413d-8520-1ea32fa46b70":{"description":"Invalid query parameter. The body lists the offending parameters in `violations` (`propertyPath`, `message`, `code`).","content":{"application/problem+json":{"schema":{"type":"object","description":"422 body: one entry per rejected field in `violations`.","properties":{"status":{"type":"integer","example":422,"isRequired":true,"uniqueKey":"status","typeLabel":"integer"},"type":{"type":"string","example":"https://tools.ietf.org/html/rfc2616#section-10","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"violations":{"type":"array","items":{"type":"object","properties":{"propertyPath":{"type":"string","example":"to","isRequired":true,"uniqueKey":"violations.items.[INDEX].propertyPath","typeLabel":"string"},"message":{"type":"string","example":"Der Zeitraum darf höchstens 36 Monate umfassen.","isRequired":true,"uniqueKey":"violations.items.[INDEX].message","typeLabel":"string"},"code":{"type":"string","example":"analytics.mrr_financials.range_too_long","isRequired":true,"uniqueKey":"violations.items.[INDEX].code","typeLabel":"string"}},"required":["propertyPath","message","code"],"uniqueKey":"violations.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"violations","typeLabel":"object[]"},"title":{"type":"string","example":"Validation Failed","uniqueKey":"title","typeLabel":"string"},"detail":{"type":"string","uniqueKey":"detail","typeLabel":"string"}},"required":["status","type","violations"],"additionalProperties":true,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"status":422,"type":"https://tools.ietf.org/html/rfc2616#section-10","violations":[{"propertyPath":"to","message":"Der Zeitraum darf höchstens 36 Monate umfassen.","code":"analytics.mrr_financials.range_too_long"}],"title":"Validation Failed","detail":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"c1f78390-a7fa-499e-bf45-6c798652a87e":{"ApiToken":{"type":"http","scheme":"bearer","description":"API token of the organisation. Send it as Authorization: Bearer api_... The token is bound to exactly one organisation.","scopes":[],"schemeName":"ApiToken"}}},"servers":{"58ca1bf5-c883-4c98-a975-3a85f96f2f94":{"url":"https://coreapi.io","description":"Production"},"761f9cb6-1d17-4197-9e03-b79594029e5c":{"url":"https://preview.coreapi.io","description":"Sandbox"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API token of the organisation. Send it as Authorization: Bearer api_... The token is bound to exactly one organisation.","scopes":[],"schemeName":"ApiToken"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API token of the organisation. Send it as Authorization: Bearer api_... The token is bound to exactly one organisation.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"ApiToken","name":"Authorization"}],"title":"ApiToken"}]},"originalFileLocation":"assets/openapi-v2-finance.json"},"subdomain":"fynnsubscriptionbilling","siteName":"Fynn Docs","title":"Recurring revenue page datasets - Fynn Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"de":{"href":"/v2-finance-api/datasets/get-recurring","matchLevel":0},"en":{"href":"/en/introduction","matchLevel":4}}},"lastModified":"2026-10-25T20:26:34.045Z","originalFileLocation":"v2-finance-api/datasets/get-recurring.mdx","locale":"de"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted. Required permission: analytics:read.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Fynn Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Recurring revenue page datasets - Fynn Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted. Required permission: analytics:read.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Fynn Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://fynnsubscriptionbilling.mintlify.app/_mintlify/api/og/v2?division=Datens%C3%A4tze\u0026amp;title=Recurring+revenue+page+datasets\u0026amp;description=Key+figures+%28MRR%2C+ARR%2C+net+new+MRR%2C+quick+ratio%29+with+twelve+months+of+history%2C+the+MRR+bridge+and+its+reasons+per+month%2C+contractually+committed+MRR+with+the+k\u0026amp;theme=4b76c1a49202070b198dd6e7\u0026amp;signature=65dae9eff244bfd02a46c2562b0106f1dffa2b2b731b1cef8195fadb568d7f06\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Recurring revenue page datasets - Fynn Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted. Required permission: analytics:read.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://fynnsubscriptionbilling.mintlify.app/_mintlify/api/og/v2?division=Datens%C3%A4tze\u0026amp;title=Recurring+revenue+page+datasets\u0026amp;description=Key+figures+%28MRR%2C+ARR%2C+net+new+MRR%2C+quick+ratio%29+with+twelve+months+of+history%2C+the+MRR+bridge+and+its+reasons+per+month%2C+contractually+committed+MRR+with+the+k\u0026amp;theme=4b76c1a49202070b198dd6e7\u0026amp;signature=65dae9eff244bfd02a46c2562b0106f1dffa2b2b731b1cef8195fadb568d7f06\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/fynnsubscriptionbilling/aEyoysRsbJwnVfa3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Fynn Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#000\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2-finance-api/datasets/get-recurring.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.fynn.eu/#organization\",\"name\":\"Fynn Docs\",\"url\":\"https://docs.fynn.eu\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/fynnsubscriptionbilling/kPbBeWVEZfmEic9q/logo/logo-dark.svg?fit=max\u0026auto=format\u0026n=kPbBeWVEZfmEic9q\u0026q=85\u0026s=83e4b30a53d77c3809e0f22afa29335d\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.fynn.eu#website\",\"name\":\"Fynn Docs\",\"url\":\"https://docs.fynn.eu\",\"publisher\":{\"@id\":\"https://docs.fynn.eu/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring#webpage\",\"url\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring\",\"name\":\"Recurring revenue page datasets\",\"description\":\"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted. Required permission: analytics:read.\",\"dateModified\":\"2026-10-25T20:26:34.045Z\",\"isPartOf\":{\"@id\":\"https://docs.fynn.eu#website\"},\"breadcrumb\":{\"@id\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Finanzberichte\",\"item\":\"https://docs.fynn.eu/v2-finance-api/concepts\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recurring revenue page datasets\",\"item\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring#apireference\",\"headline\":\"Recurring revenue page datasets\",\"name\":\"Recurring revenue page datasets\",\"description\":\"Key figures (MRR, ARR, net new MRR, quick ratio) with twelve months of history, the MRR bridge and its reasons per month, contractually committed MRR with the known MRR and events of the next twelve months, the MRR table, the snapshot state of every MRR cell and the definitions catalogue. Amounts are exact decimal strings in one currency, never converted. Required permission: analytics:read.\",\"url\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring\",\"mainEntityOfPage\":{\"@id\":\"https://docs.fynn.eu/v2-finance-api/datasets/get-recurring#webpage\"},\"dateModified\":\"2026-10-25T20:26:34.045Z\",\"publisher\":{\"@id\":\"https://docs.fynn.eu/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.fynn.eu#website\"}}]}\u003c/script>","siteName":"Fynn Docs","nav":{"global":null,"languages":[{"language":"de","default":true,"tabs":[{"tab":"Dokumentation","pages":[{"title":"Dokumentation","href":"/introduction"}]},{"tab":"Integrationen","pages":[{"title":"Integrationen","href":"/integrations/overview"}]},{"tab":"API Referenz","pages":[{"title":"API Referenz","href":"/api-reference/introduction"}]},{"tab":"API V2","groups":[{"group":"Einführung","icon":"compass","pages":[{"title":"Fynn API V2","sidebarTitle":"Einführung","icon":"compass","href":"/v2-plans-api/introduction"}]},{"group":"Grundlagen","icon":"cube","pages":[{"title":"Authentifizierung","sidebarTitle":"Authentifizierung","icon":"key","href":"/v2-plans-api/authentication"},{"title":"Asynchrone Abrechnung","sidebarTitle":"Asynchrone Abrechnung","icon":"receipt","href":"/v2-plans-api/billing"}]},{"group":"Pläne","icon":"layer-group","pages":[{"title":"Schnellstart","sidebarTitle":"Schnellstart","icon":"rocket","href":"/v2-plans-api/quickstart"},{"title":"Kernkonzepte","sidebarTitle":"Kernkonzepte","icon":"book","href":"/v2-plans-api/concepts"},{"title":"Up- und Downgrades","sidebarTitle":"Up- und Downgrades","icon":"arrow-up-arrow-down","href":"/v2-plans-api/upgrades-downgrades"},{"title":"Checkout","sidebarTitle":"Checkout","icon":"cart-shopping","href":"/v2-plans-api/checkout-and-sales-channels"},{"group":"API","pages":[{"group":"Plan-Verwaltung","pages":[{"openapi":"get /api/plans","title":"List plans","href":"/v2-plans-api/plans/list-plans"},{"openapi":"post /api/plans","title":"Create a plan","href":"/v2-plans-api/plans/create-plan"},{"openapi":"get /api/plans/{id}","title":"Retrieve a plan","href":"/v2-plans-api/plans/get-plan"},{"openapi":"put /api/plans/{id}","title":"Update a plan","href":"/v2-plans-api/plans/update-plan"},{"openapi":"post /api/plans/{id}/activate","title":"Activate a plan","href":"/v2-plans-api/plans/activate-plan"},{"openapi":"delete /api/plans/{id}","title":"Delete or archive a plan","href":"/v2-plans-api/plans/delete-plan"}]},{"group":"Checkout-Links","pages":[{"openapi":"post /api/plans/{id}/checkout-links","title":"Create a checkout link","href":"/v2-plans-api/checkout-links/create-checkout-link"},{"openapi":"get /api/plans/{id}/checkout-links","title":"List checkout links of a plan","href":"/v2-plans-api/checkout-links/list-checkout-links"}]},{"group":"Tarifwechsel","pages":[{"openapi":"get /api/customer/subscriptions/{id}/plan-options","title":"Get plan switch options","href":"/v2-plans-api/customer/plan-options"},{"openapi":"post /api/customer/subscriptions/{id}/plan-tier-preview","title":"Preview a tier switch","href":"/v2-plans-api/customer/preview-plan-tier-switch"},{"openapi":"post /api/customer/subscriptions/{id}/switch-plan-tier","title":"Switch the plan tier","href":"/v2-plans-api/customer/switch-plan-tier"}]}]}]},{"group":"Angebote","icon":"file-signature","pages":[{"title":"Angebote","sidebarTitle":"Einführung","icon":"file-signature","href":"/v2-offers-api/introduction"},{"title":"Schnellstart","sidebarTitle":"Schnellstart","icon":"rocket","href":"/v2-offers-api/quickstart"},{"title":"Kernkonzepte","sidebarTitle":"Kernkonzepte","icon":"book","href":"/v2-offers-api/concepts"},{"title":"Der Angebots-Editor","sidebarTitle":"Der Editor","icon":"pen-ruler","href":"/v2-offers-api/editor"},{"title":"Die Angebots-Ansicht","sidebarTitle":"Angebots-Ansicht","icon":"eye","href":"/v2-offers-api/angebots-ansicht"},{"title":"Annahme und Signatur","sidebarTitle":"Annahme und Signatur","icon":"file-signature","href":"/v2-offers-api/acceptance-and-signing"},{"title":"Rechnungsdaten","sidebarTitle":"Rechnungsdaten","icon":"receipt","href":"/v2-offers-api/billing-details"},{"title":"Veröffentlichen und Empfänger","sidebarTitle":"Veröffentlichen","icon":"paper-plane","href":"/v2-offers-api/sending-and-recipients"},{"title":"Freigaben","sidebarTitle":"Freigaben","icon":"circle-check","href":"/v2-offers-api/freigaben"},{"title":"Einstellungen","sidebarTitle":"Einstellungen","icon":"gear","href":"/v2-offers-api/settings"},{"title":"Authentifizierung","sidebarTitle":"Authentifizierung","icon":"key","href":"/v2-offers-api/authentication"},{"title":"Webhooks","sidebarTitle":"Webhooks","icon":"bell","href":"/v2-offers-api/webhooks"},{"group":"API","pages":[{"group":"Angebote","pages":[{"openapi":"assets/openapi-v2-offers.json get /offers","title":"List offers","href":"/v2-offers-api/offers/list-offers"},{"openapi":"assets/openapi-v2-offers.json get /api/offers/{id}","title":"Get an offer","href":"/v2-offers-api/offers/get-offer"},{"openapi":"assets/openapi-v2-offers.json put /offers/{id}","title":"Update an offer","href":"/v2-offers-api/offers/update-offer"},{"openapi":"assets/openapi-v2-offers.json get /offers/{id}/document","title":"Download an offer as PDF","href":"/v2-offers-api/offers/download-offer"},{"openapi":"assets/openapi-v2-offers.json post /api/offers/{id}/publish","title":"Publish an offer","href":"/v2-offers-api/offers/publish-offer"},{"openapi":"assets/openapi-v2-offers.json post /api/offers/{id}/accept","title":"Accept an offer manually","href":"/v2-offers-api/offers/accept-offer"},{"openapi":"assets/openapi-v2-offers.json post /offers/{id}/cancel-signing","title":"Cancel a signing process","href":"/v2-offers-api/offers/cancel-signing"},{"openapi":"assets/openapi-v2-offers.json post /offers/{id}/recipients","title":"Add a recipient","href":"/v2-offers-api/offers/add-recipient"},{"openapi":"assets/openapi-v2-offers.json get /api/offers/{id}/activities","title":"List offer activity","href":"/v2-offers-api/offers/list-activities"},{"openapi":"assets/openapi-v2-offers.json delete /offers/{id}","title":"Archive an offer","href":"/v2-offers-api/offers/archive-offer"}]},{"group":"Freigabe","pages":[{"openapi":"assets/openapi-v2-offers.json get /api/offers/{id}/approval","title":"Get the approval state","href":"/v2-offers-api/approval/get-approval"},{"openapi":"assets/openapi-v2-offers.json post /api/offers/{id}/approval/approve","title":"Approve a pending request","href":"/v2-offers-api/approval/approve"},{"openapi":"assets/openapi-v2-offers.json post /api/offers/{id}/approval/reject","title":"Reject a pending request","href":"/v2-offers-api/approval/reject"},{"openapi":"assets/openapi-v2-offers.json post /api/offers/{id}/approval/cancel","title":"Cancel a pending request","href":"/v2-offers-api/approval/cancel-approval"}]}]}]},{"group":"Finanzberichte","icon":"chart-line","pages":[{"title":"Finanzberichte: Konzepte","sidebarTitle":"Konzepte","icon":"book","href":"/v2-finance-api/concepts"},{"title":"Datensätze","sidebarTitle":"Datensätze","icon":"table","href":"/v2-finance-api/datasets"},{"title":"Drill-downs","sidebarTitle":"Drill-downs","icon":"magnifying-glass","href":"/v2-finance-api/drill-downs"},{"title":"Snapshots","sidebarTitle":"Snapshots","icon":"lock","href":"/v2-finance-api/snapshots"},{"title":"Excel-Exporte","sidebarTitle":"Excel-Exporte","icon":"file-excel","href":"/v2-finance-api/excel"},{"title":"Fehler","sidebarTitle":"Fehler","icon":"triangle-exclamation","href":"/v2-finance-api/errors"},{"title":"Definitionen","description":"Der versionierte Katalog aller Finanzkennzahlen per API, mit Definition und Formel je Kennzahl, dem Änderungsverlauf und dem Glossar der Finanzberichte.","sidebarTitle":"Definitionen","icon":"book-open","href":"/v2-finance-api/definitions"},{"group":"API","pages":[{"group":"Datensätze","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/recurring","title":"Recurring revenue page datasets","href":"/v2-finance-api/datasets/get-recurring"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/customers","title":"Customer base page datasets","description":"Key figures (active accounts, ARPA, NRR, GRR), net and gross revenue retention per month, the cohort triangle, customer concentration, account movements, lost MRR by cancellation reason and the segment comparison (all accounts, `segmentId`, `compareSegmentId`). Accounts are the accounts of the movement scope; a segment selects accounts by their customer.\n\nRequired permission: `analytics:read`.","href":"/v2-finance-api/datasets/get-customers"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/liquidity","title":"Liquidity page datasets","href":"/v2-finance-api/datasets/get-liquidity"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/revenue","title":"Revenue page datasets","href":"/v2-finance-api/datasets/get-revenue"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/revenue/customers","title":"Revenue per customer, paged","href":"/v2-finance-api/datasets/get-revenue-customers"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/overview","title":"Finance overview datasets","href":"/v2-finance-api/datasets/get-overview"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials","title":"MRR financials table","href":"/v2-finance-api/datasets/get-mrr-table"}]},{"group":"Drill-downs und Hinweise","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/details","title":"Lines behind one cell of the finance tables","href":"/v2-finance-api/drill-downs/get-details"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/findings","title":"Data-quality findings of the MRR calculation","href":"/v2-finance-api/drill-downs/list-findings"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/findings/{id}","title":"One data-quality finding with its explanation","href":"/v2-finance-api/drill-downs/get-finding"}]},{"group":"Snapshots","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/snapshots","title":"Month-end MRR snapshots","href":"/v2-finance-api/snapshots/list-snapshots"},{"openapi":"assets/openapi-v2-finance.json post /api/analytics/finance/snapshots","title":"Take a month-end MRR snapshot again","href":"/v2-finance-api/snapshots/take-snapshot"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/snapshots/{month}/{version}","title":"Frozen MRR figures of a snapshot","href":"/v2-finance-api/snapshots/get-snapshot"}]},{"group":"Excel-Exporte","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/recurring/excel","title":"Export the recurring revenue page as XLSX","href":"/v2-finance-api/excel/export-recurring"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/customers/excel","title":"Export the customer base page as XLSX","href":"/v2-finance-api/excel/export-customers"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/liquidity/excel","title":"Export the liquidity page as XLSX","href":"/v2-finance-api/excel/export-liquidity"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/revenue/excel","title":"Export the revenue page as XLSX","href":"/v2-finance-api/excel/export-revenue"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/export/excel","title":"Export the MRR financials as XLSX","href":"/v2-finance-api/excel/export-mrr-table"},{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/findings/export/excel","title":"Export the data-quality findings as XLSX","href":"/v2-finance-api/excel/export-findings"}]},{"group":"Definitionen","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/finance/definitions","title":"Read the finance definitions catalogue","href":"/v2-finance-api/definitions/get-definitions"}]},{"group":"Einstellungen","pages":[{"openapi":"assets/openapi-v2-finance.json get /api/analytics/mrr-financials/settings","title":"Read the finance settings","href":"/v2-finance-api/settings/get-settings"},{"openapi":"assets/openapi-v2-finance.json patch /api/analytics/mrr-financials/settings","title":"Update the finance settings","href":"/v2-finance-api/settings/update-settings"}]}]}]},{"group":"Provisionen","icon":"percent","pages":[{"title":"Provisionen API","sidebarTitle":"Einführung","icon":"percent","href":"/v2-commission-api/introduction"},{"title":"Kernkonzepte","sidebarTitle":"Kernkonzepte","icon":"book","href":"/v2-commission-api/concepts"},{"group":"API","pages":[{"group":"Provisionspläne","pages":[{"openapi":"assets/openapi-v2-commission.json get /api/commissions/plans","title":"List commission plans","href":"/v2-commission-api/plans/list-plans"},{"openapi":"assets/openapi-v2-commission.json post /api/commissions/plans","title":"Create a commission plan","href":"/v2-commission-api/plans/create-plan"},{"openapi":"assets/openapi-v2-commission.json get /api/commissions/plans/{id}","title":"Get a commission plan","href":"/v2-commission-api/plans/get-plan"},{"openapi":"assets/openapi-v2-commission.json put /api/commissions/plans/{id}","title":"Update a commission plan","href":"/v2-commission-api/plans/update-plan"},{"openapi":"assets/openapi-v2-commission.json delete /api/commissions/plans/{id}","title":"Delete a commission plan","href":"/v2-commission-api/plans/delete-plan"}]}]}]},{"group":"Zahlungspläne","icon":"calendar-days","pages":[{"title":"Zahlungsplan API","sidebarTitle":"Einführung","icon":"calendar-days","href":"/v2-payment-plans-api/introduction"},{"title":"Schnellstart","sidebarTitle":"Schnellstart","icon":"rocket","href":"/v2-payment-plans-api/quickstart"},{"title":"Kernkonzepte","sidebarTitle":"Kernkonzepte","icon":"book","href":"/v2-payment-plans-api/concepts"},{"title":"Webhooks","sidebarTitle":"Webhooks","icon":"bell","href":"/v2-payment-plans-api/webhooks"},{"group":"API","pages":[{"group":"Zahlungsplan-Verwaltung","pages":[{"openapi":"assets/openapi-v2-payment-plans.json post /api/payment-plans","title":"Create a payment plan","href":"/v2-payment-plans-api/payment-plans/create-payment-plan"},{"openapi":"assets/openapi-v2-payment-plans.json get /api/payment-plans/{id}","title":"Get a payment plan","href":"/v2-payment-plans-api/payment-plans/get-payment-plan"},{"openapi":"assets/openapi-v2-payment-plans.json get /api/invoices/{id}/payment-plan","title":"Get the payment plan of an invoice","href":"/v2-payment-plans-api/payment-plans/get-invoice-payment-plan"},{"openapi":"assets/openapi-v2-payment-plans.json post /api/payment-plans/{id}/cancel","title":"Cancel a payment plan","href":"/v2-payment-plans-api/payment-plans/cancel-payment-plan"},{"openapi":"assets/openapi-v2-payment-plans.json post /api/payment-plans/{id}/extend","title":"Extend a payment plan","href":"/v2-payment-plans-api/payment-plans/extend-payment-plan"}]}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/2026-07"}]}]},{"language":"en","pages":[{"title":"en","href":"/en/introduction"}]}]},"title":"Recurring revenue page datasets - Fynn Docs","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DKJwRUt2.js","utils-CWD_VS3u.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-oFjciODD.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-C76WsxC3.js","snippetPresets-DvPMxpX_.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CuNQfndH.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BVFpVUoF.js","shallow-t59Jg5Kr.js","getApiPlaygroundDisplay-C_JZ4amX.js","CodeSnippet-CLRDnx_h.js","CodeSnippets-C2myU4kc.js","Page-7TwLLapg.js","getPastedJson-B-JaVXw7.js","icon-BA-iDhH3.js","MethodPill-D4qZABFp.js","DuplicateIcon-THIDKO1O.js","createIcon-CYYJwgFd.js","DynamicMarkdown-UGQuxDKp.js","SectionHeading-jYELb23h.js","axios-vUo_bRtp.js","Markdown-DKsLa3wy.js","clsx-CefdjKz2.js","lib--scc4DXi.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-BaREnp3o.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-sgx_0XzF.js"]}