LedgerBee Developer
  • Getting started
  • Conventions
  • Products
  • Configuration
  • API Reference
Information
Accounts
    List accountsget
API Key
    Get current API keyget
Authority Extracts
    Submit authority extract datapost
Billing Groups
    Form a billing grouppostGet a billing groupgetAdd members to a billing grouppostRemove a member from a billing groupdeleteCheck billing group eligibilitypost
Budgets
    List budgetsgetGet a budgetgetGet the budget vs actuals comparisongetList a budget's frozen baselinesgetGet a frozen baseline with its snapshot cellsgetList a budget's re-baseline proposalsgetList a budget's scenariosgetResolve a budget's grid under a scenariogetGet the variance report vs a frozen baselinegetGet the runway headlineget
Checkout
    Confirm the checkoutpostQuote a first periodpostIntegration readinessgetMint a checkout sessionpostRehydrate a sessiongetRelease the card hold (edit-after-card)postPoll card statusgetOpen the card windowpostOpen a card-update window for a live subscriptionpost
Company
    Get company detailsget
Connected app OAuth
    JSON Web Key Set used to verify OAuth access-token signaturesgetRFC 8414 authorization-server metadata for the connected-app OAuth servergetRFC 9728 protected-resource metadata for an MCP resourcegetRFC 9728 protected-resource metadata for an MCP resourcegetOpenID Connect discovery document for the connected-app OAuth serverget
Credit Notes
    List credit notesgetCreate a credit notepostGet a credit notegetGet the delivery status of a credit notegetDownload the credit note PDFgetSend a credit note to the customerpostCredit a whole invoicepost
Customers
    List customersgetCreate a customerpostGet a customergetUpdate a customerpatchList a customer's contactsgetList a customer's departmentsgetList customer groupsget
Dimensions
    List all dimensionsgetCreate a new dimension categorypostGet a dimensiongetUpdate a dimension categoryputDelete a dimension categorydeleteList distribution keys (paginated)getCreate a distribution keypostGet a distribution keygetList dimension values (paginated)getCreate a new dimension valuepostUpdate a dimension valueputDelete a dimension valuedelete
Document Templates
    List document templatesget
Download Links
    Mint a download link for a document PDFgetDownload a minted linkget
Draft Journal Entries
    Create multiple draft journal entries in batchpostList draft journal entriesgetCreate a draft journal entrypostGet a draft journal entrygetDelete a draft journal entrydeleteBook a draft journal entrypost
Draft Journal Entries (v2)
    Create draft journal entries in batch (v2)postList draft journal entries (v2)getCreate a draft journal entry (v2)postGet a draft journal entry (v2)getDelete a draft journal entry (v2)deleteUpdate a draft journal entry (v2)patchBook a draft journal entry (v2)post
Entitlements
    List entitlementsgetCreate an entitlementpostGet an entitlementgetDelete an entitlementdeleteUpdate an entitlementpatch
Invoices
    List invoicesgetCreate a draft invoicepostGet an invoicegetGet the delivery status of an invoicegetDownload the invoice PDFgetSend an invoice to the customerpost
Journal Categories
    List journal categoriesgetCreate a journal categorypostUpdate a journal categoryputDelete a journal categorydelete
Journal Entries
    List journal entriesgetGet a journal entrygetUpdate a journal entry — correct the reference and/or set your external system idpatchGet attachments for a journal entrygetPreview a correction without posting itpostMove postings to different accounts, keeping the document intactpostReverse a posted entry and open a draft to re-enter itpostReverse posted journal entries in batchpostReverse a posted journal entrypost
Journal Entries (v2)
    Create a journal entry (v2)postCreate journal entries in batch (v2)post
MCP
    LedgerBee Developer MCP Serverpost
Meters
    List meter subscriptions by IDgetReport usagepostList meter subscriptions by nameget
Open Entries
    List a counterparty’s open entriesget
Order Confirmations
    List order confirmationsgetCreate a draft order confirmationpostGet an order confirmationgetUpdate a draft order confirmationpatchConvert an order confirmation into an invoicepostDownload an order confirmation as PDFgetSend an order confirmationpost
Payment Methods
    List saved payment methods for a customergetCancel a saved card on the payment providerdeleteUnassign a payment method from a customerdeleteGenerate a link for the customer to save a card for future paymentspostSet a saved payment method as the customer defaultput
Portal Plans
    List the full plan cataloguegetGet a plangetResolve the gated pricing catalogue for an identified buyer (partner display)post
Portal SSO
    Get a tenant's SSO signing keys (JWKS)getMint a checkout-vouch token (partner-vouched anonymous checkout)postMint a customer-portal SSO handoff referencepostProvision a customer + grant portal access (partner JIT provisioning)postRevoke (force-refresh) a user's customer-portal sessionspost
Product Groups
    List product groupsgetCreate a product grouppostGet a product groupgetDelete a product groupdeleteUpdate a product grouppatch
Product Prices
    Create a product pricepostGet a product pricegetDelete a product pricedeleteUpdate a product pricepatchActivate a product pricepostArchive a product pricepostDisable a product pricepostSet a price as the product defaultpost
Products
    List productsgetCreate a productpostGet a productgetDelete a productdeleteUpdate a productpatchArchive a productpost
Projects
    List all projectsgetCreate or update a project by external referenceputCreate a projectpostGet a projectgetUpdate a projectputGet project profitgetAdd a subprojectpostUpdate a subprojectputDelete a subprojectdelete
Quotes
    List quotesgetCreate a draft quotepostGet a quotegetUpdate a draft quotepatchConvert a quotepostDownload a quote as PDFgetSend a quotepost
Settlements
    List a counterparty’s settlementsgetSettle open entries against each otherpostGet a settlementgetCheck what settling these entries would dopost
Subscriptions
    List customer subscriptionsgetAssign a subscription to a customerpostGet a customer subscription by its stable idgetUpdate a customer subscriptionpatchRetry a failed card paymentpostList a subscription's pending scheduled changesgetCancel a single pending scheduled changedeleteCancel a customer subscriptionpostList subscription plansgetCreate a subscription planpostArchive a subscription planpost
Suppliers
    List suppliersgetCreate a supplierpostList supplier contactsgetList supplier departmentsgetList supplier groupsget
VAT Codes
    List VAT codesget
Vendors
    List vendorsgetCreate a vendorpostList vendor contactsgetList vendor departmentsgetList vendor groupsget
Webhook Endpoints
    List webhook endpointsgetCreate a webhook endpointpostRetrieve a webhook endpointgetUpdate a webhook endpointputDelete a webhook endpointdeleteRoll the signing secretpostSend a test eventpost
Schemas
LedgerBee Public API
LedgerBee Public API

Budgets

Download schema

Read-only access to budgets & forecasting: budget grids per account and period, scenarios, budget-vs-actuals comparison, variance vs frozen baselines, and the cash runway headline. Requires the Budgets license.


List budgets

GET
https://api.ledgerbee.com/api
/v1/budgets
x-api-key (header)
or
OAuth 2.0

Retrieves a paginated list of your company's budgets. Each budget plans one accounting year; amounts are kept in the company's base currency (currency).

Pass ?status= to filter by budget status, ?accountingYearId= to filter by accounting year, or ?search= to prefix-match on budget name.

Required Scope

  • budgets-read

List budgets › query Parameters

page
​number · min: 1

Page number (1-indexed)

Default: 1
limit
​number · min: 1 · max: 100

Maximum number of items per page

Default: 25
search
​string

Prefix search on budget name

Example: Budget 2026
status
​string · enum

Filter by budget status

Enum values:
DRAFT
ACTIVE
ARCHIVED
accountingYearId
​string · uuid

Filter by accounting year

sortBy
​string · enum

Field to sort by

Enum values:
name
createdAt
updatedAt
Default: createdAt
sortOrder
​string · enum

Sort direction

Enum values:
ASC
DESC
Default: DESC

List budgets › Responses

Paginated list of budgets for the company

ListBudgetsResponse
​BudgetSummary[] · required

Page of budgets

total
​number · required

Total number of matching budgets

Example: 3
page
​number · required

Current page number

Example: 1
limit
​number · required

Items per page

Example: 25
totalPages
​number · required

Total number of pages

Example: 1
GET/v1/budgets
curl https://api.ledgerbee.com/api/v1/budgets \ --header 'x-api-key: <api-key>'
Example Responses
{ "data": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "Budget 2026", "status": "DRAFT", "accountingYearId": "00000000-0000-0000-0000-000000000000", "accountingYearStartDate": "2026-01-01", "accountingYearEndDate": "2026-12-31", "dimensionCategoryId": "00000000-0000-0000-0000-000000000000", "currency": "DKK", "createdAt": "2026-01-15T10:30:00.000Z", "updatedAt": "2026-01-15T10:30:00.000Z" } ], "total": 3, "page": 1, "limit": 25, "totalPages": 1 }
json
application/json

Get a budget

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}
x-api-key (header)
or
OAuth 2.0

Retrieves a budget with its full grid: budget cells (lines), the accounting year's periods, driver rows, and per-budget display metadata.

Cells in CLOSED periods carry the book actuals rather than the planned amount (source: ACTUALS) — the same rolling-forecast view the app shows. The planned amounts for closed periods are preserved internally but are not part of this response.

Required Scope

  • budgets-read

Get a budget › path Parameters

budgetId
​string · required

The budget id

Get a budget › query Parameters

includeBaseline
​boolean

When true, every line also carries baseline — the prior accounting year's realised amount for the same account and calendar month (decimal string; 0.00 when no prior-year figure exists).

Default: false

Get a budget › Responses

Budget detail with lines and periods

BudgetDetail
id
​string · uuid · required

The unique identifier of the budget

name
​string · required

Budget name

Example: Budget 2026
status
​string · enum · required

Budget status. Informational — the status does not restrict reads.

Enum values:
DRAFT
ACTIVE
ARCHIVED
accountingYearId
​string · uuid · required

Accounting year the budget covers

accountingYearStartDate
​string · required

Accounting year start date (ISO date, YYYY-MM-DD)

Example: 2026-01-01
accountingYearEndDate
​string · required

Accounting year end date (ISO date, YYYY-MM-DD)

Example: 2026-12-31
currency
​string · required

ISO 4217 currency every amount on this budget is denominated in — the company's base (functional) currency.

Example: DKK
createdAt
​string · required

When the budget was created (ISO 8601)

Example: 2026-01-15T10:30:00.000Z
updatedAt
​string · required

When the budget was last updated (ISO 8601)

Example: 2026-01-15T10:30:00.000Z
​BudgetLine[] · required

Budget cells (one per account × period, and per dimension bucket when dimensioned)

​BudgetPeriod[] · required

The accounting year's periods, ordered by periodIndex

​BudgetDriverRow[] · required

Driver rows with resolved cells (non-money quantities)

​BudgetRowOverride[] · required

Budget-local display overrides. Only accounts carrying an override are listed.

​BudgetRowNumber[] · required

Stable #N row numbers used by formula references. Rows never numbered in the editor may be absent.

dimensionCategoryId
​string | null · uuid

Dimension category scoping this budget: lines then carry per-dimension-value buckets. null for flat budgets.

GET/v1/budgets/{budgetId}
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId \ --header 'x-api-key: <api-key>'
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "name": "Budget 2026", "status": "DRAFT", "accountingYearId": "00000000-0000-0000-0000-000000000000", "accountingYearStartDate": "2026-01-01", "accountingYearEndDate": "2026-12-31", "dimensionCategoryId": "00000000-0000-0000-0000-000000000000", "currency": "DKK", "createdAt": "2026-01-15T10:30:00.000Z", "updatedAt": "2026-01-15T10:30:00.000Z", "lines": [ { "id": "00000000-0000-0000-0000-000000000000", "ledgerId": "00000000-0000-0000-0000-000000000000", "ledgerName": "Salg af varer/ydelser m/moms", "accountNumber": 1010, "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "amount": "160000.00", "dimensionValueId": "00000000-0000-0000-0000-000000000000", "formula": "formula", "inputMethod": "MANUAL", "source": "ACTUALS", "error": "error", "baseline": "150000.00" } ], "periods": [ { "id": "00000000-0000-0000-0000-000000000000", "label": "Jan 2026", "startDate": "2026-01-01", "endDate": "2026-01-31", "periodIndex": 1, "status": "OPEN" } ], "driverRows": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "Headcount", "handle": "headcount", "displayOrder": 1, "unit": "unit", "cells": [ { "id": "00000000-0000-0000-0000-000000000000", "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "value": 12, "formula": "formula", "error": "error" } ] } ], "rowOverrides": [ { "ledgerId": "00000000-0000-0000-0000-000000000000", "label": "label", "isHidden": true } ], "rowNumbers": [ { "ledgerId": "00000000-0000-0000-0000-000000000000", "driverRowId": "00000000-0000-0000-0000-000000000000", "lineNumber": 2 } ] }
json
application/json

Get the budget vs actuals comparison

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/comparison
x-api-key (header)
or
OAuth 2.0

Budget vs booked actuals per account and period, with a summary. Variance is budget − actual; isOverBudget marks the unfavourable direction per account type (overspend on expense accounts, shortfall on revenue accounts).

Required Scope

  • budgets-read

Get the budget vs actuals comparison › path Parameters

budgetId
​string · required

The budget id

Get the budget vs actuals comparison › query Parameters

viewMode
​string · enum

View mode: FISCAL_YEAR compares the budget's accounting year; ROLLING_12_MONTHS compares 12 months from startMonth (or the current month).

Enum values:
FISCAL_YEAR
ROLLING_12_MONTHS
Default: FISCAL_YEAR
startMonth
​string

Start month for the rolling view (YYYY-MM)

Example: 2026-01

Get the budget vs actuals comparison › Responses

Budget vs actuals comparison

BudgetComparisonResponse
budgetName
​string · required

Budget name

Example: Budget 2026
currency
​string · required

ISO 4217 currency every amount is denominated in — the company's base (functional) currency.

Example: DKK
​object · required

Summary totals for the comparison

​BudgetComparisonEntry[] · required

Comparison entries by account and period

​BudgetPeriod[] · required

The periods covered by the comparison

GET/v1/budgets/{budgetId}/comparison
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/comparison \ --header 'x-api-key: <api-key>'
Example Responses
{ "budgetName": "Budget 2026", "currency": "DKK", "summary": { "totalBudget": "3251000.00", "totalActual": "3100000.00", "totalVariance": "151000.00", "totalVariancePercent": 0, "isOverBudget": true }, "entries": [ { "ledgerId": "00000000-0000-0000-0000-000000000000", "ledgerName": "Salg af varer/ydelser m/moms", "accountNumber": 1010, "periodId": "00000000-0000-0000-0000-000000000000", "budgetAmount": "160000.00", "actualAmount": "154321.12", "variance": "5678.88", "variancePercent": 0, "isOverBudget": true, "isRevenueAccount": true, "dimensionValueId": "00000000-0000-0000-0000-000000000000" } ], "periods": [ { "id": "00000000-0000-0000-0000-000000000000", "label": "Jan 2026", "startDate": "2026-01-01", "endDate": "2026-01-31", "periodIndex": 1, "status": "OPEN" } ] }
json
application/json

List a budget's frozen baselines

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/frozen-baselines
x-api-key (header)
or
OAuth 2.0

Immutable snapshots of the resolved grid, frozen at a point in time. The variance report compares actuals against one of these.

Required Scope

  • budgets-read

List a budget's frozen baselines › path Parameters

budgetId
​string · required

The budget id

List a budget's frozen baselines › Responses

The budget's frozen baselines

ListBudgetFrozenBaselinesResponse
​BudgetFrozenBaselineSummary[] · required

The budget's frozen baselines, most recent first

GET/v1/budgets/{budgetId}/frozen-baselines
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/frozen-baselines \ --header 'x-api-key: <api-key>'
Example Responses
{ "data": [ { "id": "00000000-0000-0000-0000-000000000000", "label": "Board-approved plan", "scenarioId": "00000000-0000-0000-0000-000000000000", "frozenAt": "2026-01-15T10:30:00.000Z", "frozenBy": "frozenBy", "cellCount": 288 } ] }
json
application/json

Get a frozen baseline with its snapshot cells

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/frozen-baselines/{baselineId}
x-api-key (header)
or
OAuth 2.0

Retrieves one frozen baseline including every snapshot cell.

Required Scope

  • budgets-read

Get a frozen baseline with its snapshot cells › path Parameters

budgetId
​string · required

The budget id

baselineId
​string · required

The frozen baseline id

Get a frozen baseline with its snapshot cells › Responses

Frozen baseline detail

BudgetFrozenBaselineDetail
id
​string · uuid · required

The unique identifier of the frozen baseline

label
​string · required

Label given when the baseline was frozen

Example: Board-approved plan
frozenAt
​string · required

When the baseline was frozen (ISO 8601)

Example: 2026-01-15T10:30:00.000Z
currency
​string · required

ISO 4217 currency every amount is denominated in — the company's base (functional) currency.

Example: DKK
​BudgetFrozenBaselineCell[] · required

Snapshot cells

scenarioId
​string | null · uuid

Scenario whose overlay was snapshotted. null = the base grid.

frozenBy
​string | null

Identity that froze the baseline

GET/v1/budgets/{budgetId}/frozen-baselines/{baselineId}
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/frozen-baselines/:baselineId \ --header 'x-api-key: <api-key>'
Example Responses
{ "id": "00000000-0000-0000-0000-000000000000", "label": "Board-approved plan", "scenarioId": "00000000-0000-0000-0000-000000000000", "frozenAt": "2026-01-15T10:30:00.000Z", "frozenBy": "frozenBy", "currency": "DKK", "cells": [ { "id": "00000000-0000-0000-0000-000000000000", "ledgerId": "00000000-0000-0000-0000-000000000000", "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "dimensionValueId": "00000000-0000-0000-0000-000000000000", "amount": "160000.00", "source": "ACTUALS" } ] }
json
application/json

List a budget's re-baseline proposals

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/rebaseline-proposals
x-api-key (header)
or
OAuth 2.0

When an accounting period closes, the system can propose re-baselining the budget's remaining months off the closed actuals. Proposals are confirmed or rejected in the app; this lists them with their status.

Required Scope

  • budgets-read

List a budget's re-baseline proposals › path Parameters

budgetId
​string · required

The budget id

List a budget's re-baseline proposals › Responses

The budget's re-baseline proposals

ListBudgetRebaselineProposalsResponse
​BudgetRebaselineProposal[] · required

The budget's re-baseline proposals

GET/v1/budgets/{budgetId}/rebaseline-proposals
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/rebaseline-proposals \ --header 'x-api-key: <api-key>'
Example Responses
{ "data": [ { "id": "00000000-0000-0000-0000-000000000000", "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "status": "PROPOSED", "proposedAt": "2026-02-01T02:00:00.000Z", "confirmedAt": "confirmedAt" } ] }
json
application/json

List a budget's scenarios

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/scenarios
x-api-key (header)
or
OAuth 2.0

Scenarios are assumption overlays (driver-cell overrides and line toggles) on top of the budget's base grid. The isBaseline "Base" scenario represents the grid with no overlay; it is created when the tenant first uses scenarios in the app, so a budget that has never opened the scenario switcher returns an empty list — the base data is the budget detail itself.

Required Scope

  • budgets-read

List a budget's scenarios › path Parameters

budgetId
​string · required

The budget id

List a budget's scenarios › Responses

The budget's scenarios

ListBudgetScenariosResponse
​BudgetScenario[] · required

The budget's scenarios

GET/v1/budgets/{budgetId}/scenarios
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/scenarios \ --header 'x-api-key: <api-key>'
Example Responses
{ "data": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "Aggressive hiring", "description": "description", "isBaseline": true, "createdAt": "2026-01-15T10:30:00.000Z", "updatedAt": "2026-01-15T10:30:00.000Z" } ] }
json
application/json

Resolve a budget's grid under a scenario

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/scenarios/{scenarioId}/grid
x-api-key (header)
or
OAuth 2.0

Returns the fully resolved grid (budget cells + driver rows) with the scenario's assumptions applied. Read-only — nothing is persisted.

Required Scope

  • budgets-read

Resolve a budget's grid under a scenario › path Parameters

budgetId
​string · required

The budget id

scenarioId
​string · required

The scenario id

Resolve a budget's grid under a scenario › Responses

The resolved scenario grid

BudgetScenarioGridResponse
currency
​string · required

ISO 4217 currency every amount is denominated in — the company's base (functional) currency.

Example: DKK
​BudgetLine[] · required

All resolved budget cells under the scenario overlay

​BudgetDriverRow[] · required

All driver rows with resolved cells under the overlay

hasCycle
​boolean · required

True when the overlay could not resolve because of a formula cycle — offending cells carry error: BUDGET_FORMULA_CYCLE and amounts must not be trusted.

forecastHorizonMonth
​string | null

Last calendar month (YYYY-MM) with a subscription-forecast projection. Cells past it that reference the subscription forecast resolve to 0. null when no subscription token is used.

Example: 2026-12
GET/v1/budgets/{budgetId}/scenarios/{scenarioId}/grid
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/scenarios/:scenarioId/grid \ --header 'x-api-key: <api-key>'
Example Responses
{ "currency": "DKK", "lines": [ { "id": "00000000-0000-0000-0000-000000000000", "ledgerId": "00000000-0000-0000-0000-000000000000", "ledgerName": "Salg af varer/ydelser m/moms", "accountNumber": 1010, "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "amount": "160000.00", "dimensionValueId": "00000000-0000-0000-0000-000000000000", "formula": "formula", "inputMethod": "MANUAL", "source": "ACTUALS", "error": "error", "baseline": "150000.00" } ], "driverRows": [ { "id": "00000000-0000-0000-0000-000000000000", "name": "Headcount", "handle": "headcount", "displayOrder": 1, "unit": "unit", "cells": [ { "id": "00000000-0000-0000-0000-000000000000", "accountingPeriodId": "00000000-0000-0000-0000-000000000000", "value": 12, "formula": "formula", "error": "error" } ] } ], "hasCycle": true, "forecastHorizonMonth": "2026-12" }
json
application/json

Get the variance report vs a frozen baseline

GET
https://api.ledgerbee.com/api
/v1/budgets/{budgetId}/variance
x-api-key (header)
or
OAuth 2.0

Closed-period actuals compared against a frozen baseline (defaults to the most recently frozen one). Variance is actual − frozen baseline — the inverse of the comparison endpoint, which compares against the live plan. Returns an empty data array when the budget has no frozen baseline yet.

Required Scope

  • budgets-read

Get the variance report vs a frozen baseline › path Parameters

budgetId
​string · required

The budget id

Get the variance report vs a frozen baseline › query Parameters

frozenBaselineId
​string · uuid

Frozen baseline to compare against. Defaults to the most recently frozen baseline.

Get the variance report vs a frozen baseline › Responses

Variance rows vs the frozen baseline

BudgetVarianceResponse
currency
​string · required

ISO 4217 currency every amount is denominated in — the company's base (functional) currency.

Example: DKK
​BudgetVarianceRow[] · required

Closed-period variance rows vs the frozen baseline. Empty when the budget has no frozen baseline yet.

GET/v1/budgets/{budgetId}/variance
curl https://api.ledgerbee.com/api/v1/budgets/:budgetId/variance \ --header 'x-api-key: <api-key>'
Example Responses
{ "currency": "DKK", "data": [ { "ledgerId": "00000000-0000-0000-0000-000000000000", "accountName": "Salg af varer/ydelser m/moms", "accountType": "DEBIT", "periodId": "00000000-0000-0000-0000-000000000000", "frozenBaseline": "160000.00", "actual": "170000.00", "variance": "10000.00", "variancePercent": 0, "sentiment": "favourable" } ] }
json
application/json

Get the runway headline

GET
https://api.ledgerbee.com/api
/v1/budgets/runway
x-api-key (header)
or
OAuth 2.0

Cash-on-hand, trailing 3-month burn, and months of runway remaining. This is company-wide (cash and burn are properties of the whole company, not of one budget), which is why it is not scoped under a budget id.

Required Scope

  • budgets-read

Get the runway headline › query Parameters

asOf
​string

ISO date (YYYY-MM-DD) the cash and burn are computed as of. Defaults to today.

Example: 2026-08-25

Get the runway headline › Responses

Runway headline for the company

BudgetRunwayResponse
currency
​string · required

ISO 4217 currency every amount is denominated in — the company's base (functional) currency.

Example: DKK
cashOnHand
​string · required

Sum of bank-account-linked ledger balances as of asOf (decimal string)

Example: 2051260.11
trailing3MonthBurn
​string · required

Trailing average net outflow over the last 3 closed months (decimal string). Negative when the company is cash-positive.

Example: 296121.14
monthsRemaining
​number | null · required

Cash divided by burn; null = infinite runway (burn ≤ 0)

Example: 6.9
status
​string · enum · required

OK (≥ 6 months), WATCH (3-6), LOW (< 3), or UNKNOWN (no cash source, or no closed periods to compute burn from — see hasCashSource).

Enum values:
OK
WATCH
LOW
UNKNOWN
hasCashSource
​boolean · required

Whether at least one bank account is linked to a ledger account. When false, cashOnHand is a meaningless 0.

asOf
​string · required

ISO date the cash and burn were computed as of

Example: 2026-08-25
feedReportedCashTotal
​string | null · required

Sum of provider-reported balances over active bank accounts in the functional currency (decimal string). null when any active account is held in another currency.

Example: 2051260.11
unlinkedBankAccountCount
​number · required

Active bank accounts with no linked ledger account — invisible to cashOnHand.

Example: 0
GET/v1/budgets/runway
curl https://api.ledgerbee.com/api/v1/budgets/runway \ --header 'x-api-key: <api-key>'
Example Responses
{ "currency": "DKK", "cashOnHand": "2051260.11", "trailing3MonthBurn": "296121.14", "monthsRemaining": 6.9, "status": "OK", "hasCashSource": true, "asOf": "2026-08-25", "feedReportedCashTotal": "2051260.11", "unlinkedBankAccountCount": 0 }
json
application/json

Billing GroupsCheckout