---
title: "Get home page insights (cash, burn, runway, reconciliation)"
method: GET
path: "/companies/{companyId}/overview"
tags: ["Overview"]
---

# Get home page insights (cash, burn, runway, reconciliation)

`GET /companies/{companyId}/overview`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/companies/{companyId}/overview`
- Auth: HTTP bearer

Returns the metrics surfaced on the customer home page for one authorized concrete legal entity. The new liveCashBalance / glCashBalance / reconciliationDeltaCents fields are additive; legacy fields (cashBalance, burnRate, runway, mrr) remain for backward compatibility. Gated behind HOME_INSIGHTS_V2_COMPANY_IDS at the service layer; callers always receive the legacy fields regardless of the gate.

## Query parameters

- `entityId` string, uuid
- `startDate` string, date
- `endDate` string, date
- `months` integer

## Response `200`

Overview payload

- OverviewResponse
  - `success` true, required
  - `data` OverviewData, required
    - `presentationCurrency` string, nullable: Currency used for every aggregate monetary amount in this response.
    - `metrics` OverviewMetrics, required: Home page metrics. Legacy fields stay for backward compatibility.
      - `currency` string, nullable: Company presentation currency used by every monetary metric in this object.
      - `cashBalance` number, required: Resolved cash balance (liveCashBalance ?? glCashBalance) in `currency`. Foreign provider balances are translated through an immutable spot FX rate for the provider balance date before aggregation.
      - `mrr` number, nullable, required: Subscription MRR as of today from the recurring-revenue authority (#2217): the certified current-month snapshot, net of recurring discounts, never posted revenue (one-time invoices never enter it). Scope is the route's legal entity, or the company's sole legal entity for unscoped callers. Null when the authority cannot answer; `mrrAvailability` names why. Posted revenue is `monthlyRevenue`.
      - `mrrCents` integer, nullable: Exact minor units of `mrr` (null exactly when `mrr` is null).
      - `mrrAvailability` object
        - `available` boolean, required
        - `reason` string, nullable, required: Customer-safe reason when unavailable (e.g. syncing, source_not_authorized, insufficient_history, entity_scope_unavailable, mixed_currency, not_configured, failed); null when available.
        - `asOf` string, date, nullable, required: The date `mrr` represents (today, from the request clock). It is not the snapshot's computation time and is not evidence of source freshness.
        - `basis` 'subscription_mrr_as_of_today', required
      - `burnRate` number, required: Gross burn rate per month. Sourced from trailing-90-day Expense-account activity divided by 3, excluding transfers, credit-card payments, and other balance-sheet moves.
      - `netBurnRate` number, required: Net burn rate per month. Sourced from trailing-90-day Expense-account activity minus Revenue-account activity, divided by 3 and floored at zero. Runway uses this value.
      - `runway` integer, nullable, required: Debt-adjusted runway months on balance-sheet cash (#1412): operatingCashAvailable divided by netBurnRate. The cash is the posted ledger balance of the cash accounts, not the live-first cashBalance. Null when non-burning or unavailable.
      - `runwayState` 'finite' | 'depleted' | 'non_burning' | 'unavailable', required
      - `runwayCapped` boolean, required: True when the displayed runway is capped at 120 months.
      - `cashTrend` number, required
      - `mrrTrend` number, nullable, required: Percent change of `mrr` (as of today) against the last completed month's sealed MRR. Null when either is unavailable or the completed month is zero.
      - `burnTrend` number, required
      - `runwayTrend` number, required
      - `monthlyRevenue` number, required: Posted revenue for the headline window (trailing 30 days, or the last closed calendar month on a rangeless call when one has activity). Not MRR; see `mrr`.
      - `monthlyRevenueTrend` number, nullable, required: Percent change in monthlyRevenue vs. the prior 30-day window.
      - `monthlyRevenueTrendState` 'available' | 'no_prior_base' | 'unstable_base', required: Explains whether the percentage has a stable prior-period base.
      - `monthlyRevenueChange` number, required: Absolute change in monthly revenue, retained when the percentage is unavailable.
      - `shortTermDebt` number, required: Drawn short-term debt included in the runway adjustment.
      - `shortTermDebtCents` integer, nullable: Exact minor-unit twin of shortTermDebt (#1412 J-289 B), so a client can show the runway on postedCashBalanceCents less short-term debt without a rounded major-unit figure. Null only when the overview has no presentation-currency authority and the debt is zero.
      - `operatingCashAvailable` number, required: Balance-sheet cash (the posted ledger balance of the cash accounts, glCashBalance) less drawn short-term debt (#1412). It is not derived from the live-first cashBalance.
      - `postedCashBalanceCents` integer, nullable: Balance-sheet cash in exact minor units (#1412): the posted ledger balance of the cash accounts, the exact twin of glCashBalance. The Home Runway headline, the accountant Customer View and the weekly email divide this value, not the live-first cash balance the Cash tile shows. Null only when the overview has no presentation-currency authority and the balance is zero.
      - `liveCashBalance` number, nullable: Best-available cash: live checking/savings, plus a Stripe balance only when its GL account is classified as cash, plus a GL fallback for cash accounts that have no live provider balance (e.g. Ramp). Null when no live integration balance exists.
      - `glCashBalance` number: Sum of GL cash-account balances for the latest month.
      - `liveCashAsOf` string, date-time, nullable: Oldest KNOWN sync timestamp among the cash accounts funding liveCashBalance: the total is only as fresh as its stalest component. Read it together with liveCashUndatedAccountCount: when that is non-zero this value is a LOWER BOUND, because some contributing account carries no sync stamp and could be older. Null only when no contributing account has a stamp at all. GL-fallback / Ramp-style accounts do not fund liveCashBalance through this path.
      - `liveCashUndatedAccountCount` integer: How many accounts funding liveCashBalance carry no sync stamp at all. 0 means liveCashAsOf describes every contributing account. Non-zero means liveCashAsOf is a lower bound and the true oldest sync may be older, so a renderer must not present it as exact.
      - `staleCashCents` integer: The portion of the cash headline (`cashBalance`) that comes from cash accounts whose provider feed is disconnected, in integer minor units of `currency`. It is an unverified book balance, not a provider figure, and `liveCashAsOf` does not describe it. Sourced from the same posted-ledger authority as the headline, so it equals the sum of `bookBalanceCents` over the disconnected `perAccountReconciliation` rows exactly. 0 when every cash account is either live or books-only.
      - `staleCashAsOf` string, date-time, nullable: The last time a provider verified the whole stale portion of the cash headline: each disconnected cash account behind `staleCashCents` is taken at its most recent known sync, and the oldest of those is reported. Null when any disconnected cash account has no known last sync, because a date on the total would vouch for money it never covered. The money it dates is the same posted-ledger figure the headline counts; the amount is unaffected by this rule.
      - `darkCashCents` integer: The portion of the cash headline funded by accounts whose provider feed is still ATTACHED but has not synced in over 48 hours, in integer minor units of `currency`. Unlike staleCashCents these are real provider balances that have merely gone stale (a reauth or a wedged scheduler), not frozen book balances, so the figure is the provider amount and never a GL fallback. Disjoint from staleCashCents by construction: this counts only active accounts, that one counts only removed feeds. 0 when every funding account synced within the window.
      - `darkCashAsOf` string, date-time, nullable: Oldest sync timestamp among the dark-but-attached accounts counted in darkCashCents. Null exactly when darkCashAccountCount is 0; every counted account carries a stamp by construction (undated ones are reported by liveCashUndatedAccountCount instead).
      - `darkCashAccountCount` integer: How many still-attached accounts funding the cash headline have not synced in over 48 hours. 0 when none have.
      - `staleCashAccountCount` integer: Number of cash accounts whose provider feed is disconnected and whose book balance is counted in `staleCashCents`, one per GL cash account however many bank rows map to it. Drawn from the same posted-ledger cash-account set as the headline. 0 when no cash account is disconnected.
      - `reconciliationDeltaCents` integer, nullable: Signed bank-minus-GL delta in cents. Null when no live cash to compare.
      - `glMonthlyExpenses` number: Latest-month GL expense total (display-only).
      - `netBurnTrend` number, nullable: Percent change of netBurnRate vs the same trailing-90-day average for the prior 90-day window (days 91-180). Null when the prior window has no positive net burn to compare against.
      - `currentAssets` number, nullable: Balance-sheet current assets, surfaced for display/context only. It is not the runway numerator. Runway uses posted cash less drawn short-term debt, divided by net burn. Null when the GL is empty.
    - `booksStatus` object, nullable, required: Books status is company-wide, not legal-entity-dimensional. Served for an unscoped Home request and for the company's sole non-group legal entity (it owns every company activity); null for one legal entity of a real multi-entity company, or when the entity roster cannot be verified (see booksStatusAvailability). Never fabricated.
    - `booksStatusAvailability` HomeBooksStatusAvailability, required
      - `available` boolean, required: True for an unscoped request or the company's sole non-group legal entity, to which the company-wide books status is honestly attributable. False for one legal entity of a real multi-entity company, or when the entity roster cannot be verified (no roster, read failure, or an entity not on it): fail closed, never widened.
      - `reason` 'entity_scope_unavailable' | 'null', nullable, required: entity_scope_unavailable whenever available is false; null when available is true.
    - `financialSnapshot` object, required
    - `perAccountReconciliation` OverviewPerAccountReconciliation[]
      - `accountId` string, nullable, required: Linked GL (book) cash account id (bank_accounts.gl_account_id). Null when the provider account is not mapped to the GL.
      - `bankAccountId` string, required: Provider account identifier. Usually a bank_accounts UUID; Stripe cache rows use the Stripe connection identifier. When several live bank accounts map to one GL cash account they are grouped into a single row and this is the first member's id.
      - `name` string, required: Display name. A live bank account's own name, or the GL cash account's name when several live bank accounts map to that GL (grouped row).
      - `integrationKind` 'plaid' | 'mercury' | 'brex' | 'ramp' | 'stripe' | 'other'
      - `sourceCurrency` string: Provider-reported currency before presentation conversion. On a grouped row, present only when every member shares one source currency and one rate record; a mixed group omits it and carries sourceBalances instead.
      - `sourceLiveCents` integer: Provider-reported minor units before presentation conversion. On a grouped row this is the sum of the members' source amounts and is present only when every member shares one source currency and one rate record (so sourceLiveCents at fxRate reproduces reconciledBalanceCents); a mixed group omits it and carries sourceBalances instead.
      - `presentationCurrency` string, nullable
      - `fxRate` OverviewFxRateAudit
        - `id` string, uuid, nullable, required: Immutable FX-rate revision id. Null only for an identity conversion.
        - `rate` string, required
        - `rateType` 'spot', required
        - `requestedDate` string, date, nullable, required
        - `effectiveAt` string, date-time, nullable, required
        - `source` string, required
        - `sourceKind` 'identity' | 'provider' | 'manual', required
        - `providerReference` string, nullable, required
      - `sourceBalances` object[]: Per-connection source amounts and immutable FX provenance when multiple Stripe connections map to one GL cash account, or per-member provenance for a grouped live-bank row whose members do not share one source currency and rate record (connectionId is then the member's bank_accounts id and integrationAccountCurrency is null). Such a row omits sourceCurrency, sourceLiveCents and fxRate.
        - `connectionId` string, required
        - `sourceLiveCents` integer, required
        - `sourceCurrency` string, required
        - `integrationAccountCurrency` string, nullable, required: Stripe account default currency. It may legitimately differ from the provider balance settlement currency in `sourceCurrency`.
        - `presentationCurrency` string, required
        - `presentationLiveCents` integer, required
        - `fxRate` OverviewFxRateAudit, required
          - `id` string, uuid, nullable, required: Immutable FX-rate revision id. Null only for an identity conversion.
          - `rate` string, required
          - `rateType` 'spot', required
          - `requestedDate` string, date, nullable, required
          - `effectiveAt` string, date-time, nullable, required
          - `source` string, required
          - `sourceKind` 'identity' | 'provider' | 'manual', required
          - `providerReference` string, nullable, required
      - `reconciledBalanceCents` integer, required: Live provider (reconciled-side) balance in cents. For a row grouping several live bank accounts on one GL cash account this is the sum of the members' live balances. Alias of liveCents.
      - `bookBalanceCents` integer, nullable, required: GL book balance in cents for the linked account, computed from POSTED journal lines only (void and soft-deleted entries excluded). Counted once per GL cash account, however many bank accounts map to it. Alias of glCents. Null when unmapped.
      - `differenceCents` integer, nullable, required: reconciledBalanceCents minus bookBalanceCents. Alias of deltaCents.
      - `lastReconciled` string, date-time, nullable, required: Completion time of the latest COMPLETED reconciliations row for the bank account (across every member bank account of a grouped row). Null when the account has never been reconciled — never the provider sync time, which is surfaced separately as lastSyncedAt.
      - `liveCents` integer, required: Legacy alias of reconciledBalanceCents.
      - `glCents` integer, nullable: Legacy alias of bookBalanceCents.
      - `deltaCents` integer, nullable: Legacy alias of differenceCents.
      - `lastSyncedAt` string, date-time, nullable: Latest provider sync time across the row's bank accounts (a grouped row takes the max over its members). Null for GL-fallback rows.
      - `latestGlEntryAt` string, date, nullable
      - `discrepancyExplanation` string
    - `monthlyRevenue` object[], required: Monthly chart series. Length is governed by the optional `?months=` query param (clamped 1-12, default 6).
    - `expenseBreakdown` object[], required
    - `revenueByProduct` object[], required
    - `businessModel` 'software' | 'services' | 'digital' | 'ecommerce' | 'manufacturing', nullable: The company's stored business model (#1967), which decides the Home board. Never re-derived on read. Null only when the stored value is unset or unregistered (including the retired `general`); the API reports that to Sentry and Home renders an error card.
    - `businessModelSource` 'override' | 'industry' | 'revenue_streams' | 'default', nullable: Provenance of the stored business model (display only; never drives rendering). Null when businessModel is null.
    - `additionalMetrics` string[]: Per-company additional Home metric packs enabled by an accountant (#1967); empty when none. Each listed pack renders at the bottom of the Home board.
    - `reconciliation` object: Reconciliation chip state for the home dashboard.
      - `status` 'reconciled' | 'pending' | 'attention', required: reconciled: abs(delta) < $100 and no stale accounts; attention: abs(delta) >= $1000 or a stale/disconnected account; pending: everything else.
    - `revenueMix` object, nullable: Revenue-mix breakdown (deferred — null until finance spec finalized).
    - `revenueCompletedMonth` union: Additive Home Revenue headline metric (basis completed_month_posted_revenue): exact signed posted operating revenue over the last completed calendar month (UTC), never the current partial month and never a rolling window, so month-end adjusting entries stay inside the month they correct. `authority.month` names the month (YYYY-MM); startDate/endDate are its first and last day. Never re-scoped by report ranges or the closed-month headline rewrite. The legacy metrics.monthlyRevenue*/metrics.mrr* fields keep their existing behavior for old clients.
      - object
        - `available` true, required
        - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `uncategorizedIncome` UncategorizedIncomeBesideRevenue: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'completed_month_posted_revenue', required
          - `asOf` string, date, required
          - `month` string, required
          - `startDate` string, date, required
          - `endDate` string, date, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object: Partial authority — whatever scope was proven before the failure.
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `revenueMonthToDate` union: Live Home (founder sync 2026-09-21), basis month_to_date_posted_revenue: exact signed posted operating revenue from the 1st of the current UTC month through today (`authority.asOf` is the posted-through day; startDate/endDate bound the window). Available whenever the trailing 90 days hold posted P&L evidence, so a month with nothing posted yet is an authoritative 0. Fails closed exactly like RevenueCompletedMonthMetric.
      - object
        - `available` true, required
        - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `uncategorizedIncome` UncategorizedIncomeBesideRevenue: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `priorPeriod` object: #2653: the like-for-like comparison, the same days of the previous calendar month (startDate = its 1st; endDate = the same day-of-month, clamped to that month's last day). `percent` is null with state `no_prior_base` when the prior base is <= 0 and `unstable_base` beyond the 1000% cap (#2016: undefined, not 0%).
          - `startDate` string, date, required
          - `endDate` string, date, required
          - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
            - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
            - `currency` string, required
            - `minorUnitExponent` integer, required
          - `percent` number, nullable, required
          - `state` 'available' | 'no_prior_base' | 'unstable_base', required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'month_to_date_posted_revenue', required
          - `asOf` string, date, required
          - `month` string, required
          - `startDate` string, date, required
          - `endDate` string, date, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `netBurnTrailing90d` union: Live Home (founder sync 2026-09-21), basis trailing_90d_posted_operating_net_burn: posted operating costs less posted operating revenue and posted uncategorized income (4999) over the last 90 UTC days (startDate..endDate, endDate = today), divided by 3 half away from zero — the "last 90 days average" Monthly burn. Signed: negative is an operating net inflow (not net income). Shares one journal read and one currency scope with revenueMonthToDate.
      - object
        - `available` true, required
        - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'trailing_90d_posted_operating_net_burn', required
          - `asOf` string, date, required
          - `startDate` string, date, required
          - `endDate` string, date, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `grossBurnTrailing90d` union: #1412 J-289 (B), a secondary line under Net burn, basis trailing_90d_posted_operating_gross_burn: posted operating costs (the same inclusion set as netBurnTrailing90d) over the same last 90 UTC days, divided by 3 half away from zero, with no revenue netted. Shares the netBurnTrailing90d journal read, window and currency scope, and is unavailable whenever that read is. Unavailable never carries a value.
      - object
        - `available` true, required
        - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'trailing_90d_posted_operating_gross_burn', required
          - `asOf` string, date, required
          - `startDate` string, date, required
          - `endDate` string, date, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `ownerFinancingTrailing90d` union: #1412 J-289 (B), a secondary line under Net burn, basis trailing_90d_posted_owner_financing_cash_flow: owner distributions, owner contributions, debt proceeds and debt principal repayments as the Cash Flow statement classifies them (cash accounts per the statement, so clearing is never cash; closing entries skipped; opening balance equity left out), over the same last 90 UTC days and journal read as netBurnTrailing90d. `value` is the window total divided by 3 half away from zero. Signed cash-flow convention: positive is cash in (borrowing, owner money in), negative is cash out (draws, principal). `components` and `authority.windowTotalMinor` are exact, un-averaged window totals that reconcile to the Cash Flow statement for the same dates. Fails closed on its own (incomplete_provenance when a compound debt journal cannot be attributed, mixed_currency, not_configured, failed) without affecting Net or Gross burn. Unavailable never carries a value.
      - object
        - `available` true, required
        - `value` ExactMoney, required: Exact money value: signed integer minor units as a string (never a float), with explicit currency and minor-unit exponent.
          - `amountMinor` string, required: Signed integer minor units, e.g. "80000" = $800.00 at exponent 2.
          - `currency` string, required
          - `minorUnitExponent` integer, required
        - `components` object, required
          - `ownerDistributionsMinor` string, required
          - `ownerContributionsMinor` string, required
          - `debtProceedsMinor` string, required
          - `debtRepaymentsMinor` string, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'trailing_90d_posted_owner_financing_cash_flow', required
          - `asOf` string, date, required
          - `startDate` string, date, required
          - `endDate` string, date, required
          - `windowTotalMinor` string, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'not_configured' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `monthlyRevenueInProgress` object, nullable: Live Home (founder sync 2026-09-21): the in-progress calendar month's exact series point, in the same shape as a monthlyRevenueMoney row plus `postedThrough` (YYYY-MM-DD, the day the figures run to). Kept OUT of monthlyRevenue/monthlyRevenueMoney so old clients and Closed-only mode keep comparing full months. Null when the series has no current-month point.
      - `month` string, required
      - `revenueCents` integer, nullable, required
      - `expensesCents` integer, nullable, required
      - `netCents` integer, nullable, required
      - `currency` string, nullable
      - `minorUnitExponent` integer, nullable
      - `postedThrough` string, date, required
    - `totalCustomers` union: Full-census external-customer claim (F09, additive), basis `entity_customer_census`. Available only when the entity's customer sources have been enumerated, every active one holds a committed census watermark that is still within the freshness bound, every counted master record carries a durable classification, and no invoice-linked payer identity is still outside the master enumeration. Its `completeness` flags answer "is the CENSUS complete". An unavailable claim never carries a count; an authoritative zero is `available: true` with `count: 0`. When this claim is unavailable the UI falls back to `knownCustomerRecords`, which answers a different question under its own basis — compare `authority.basis` before treating the two as interchangeable.
      - object
        - `available` true, required
        - `value` object, required
          - `count` integer, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'entity_customer_census', required
          - `asOf` string, date-time, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'not_configured' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object: Partial authority — never carries asOf-backed value claims.
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
    - `knownCustomerRecords` union: Canonical known-record fallback claim (F09, additive), basis `entity_customer_master` — deliberately NOT `entity_customer_census`. It counts every non-merged customer master record for the entity minus rows durably classified internal/test, and its `completeness` flags answer "is the LOCAL MASTER ENUMERATION complete", not "is the census complete". The same response may therefore report `sourceComplete: false` on `totalCustomers` and `true` here for one scope: the two claims answer different questions, which the distinct basis is what makes machine-readable. The UI renders it as "Known customer records". An unavailable claim never carries a count; an authoritative zero is `available: true` with `count: 0`.
      - object
        - `available` true, required
        - `value` object, required
          - `count` integer, required
        - `authority` object, required
          - `companyId` string, required
          - `entityId` string, required
          - `basis` 'entity_customer_master', required
          - `asOf` string, date-time, required
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string
      - object
        - `available` false, required
        - `reason` 'insufficient_history' | 'source_not_authorized' | 'syncing' | 'stale' | 'failed' | 'mixed_currency' | 'entity_scope_unavailable' | 'incomplete_provenance' | 'truncated', required
        - `authority` object: Partial authority — never carries asOf-backed value claims.
        - `completeness` MetricCompleteness, required: Coverage assertion for a per-metric value/authority contract. An available metric carries all three booleans as true.
          - `windowComplete` boolean, required
          - `sourceComplete` boolean, required
          - `provenanceComplete` boolean, required
          - `historyCompleteFrom` string
          - `booksAsOf` string
          - `sourceGeneration` string

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member
- `422`: Request failed validation
- `503`: An entity-scoped journal, transaction, or reports authority could not be read

---

[API](https://skmtc.dev/medianfi/apis/median-api.md) · [All operations](https://skmtc.dev/medianfi/apis/median-api/llms.txt) · [OpenAPI document](https://skmtc.dev/medianfi/apis/median-api/revisions/20090ea32b0d?raw)
