---
title: "Liabilities sub-ledger view (accountant mirror)"
method: GET
path: "/accountant/companies/{customerId}/sub-ledgers/liabilities"
tags: ["Sub-Ledgers"]
---

# Liabilities sub-ledger view (accountant mirror)

`GET /accountant/companies/{customerId}/sub-ledgers/liabilities`

## Request

- Base URL: `https://api.medianfi.com/api/v1`
- URL: `https://api.medianfi.com/api/v1/accountant/companies/{customerId}/sub-ledgers/liabilities`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Accountant-scoped mirror of `GET /companies/{companyId}/sub-ledgers/liabilities`. Same payload shape for the same company; requires the accountant to be assigned to the customer (403 otherwise). Unlike the customer route (which reads today's balances, #2411), balance-sheet figures here use the last closed GL period, and `asOf` is that period's end date or null. All amounts in cents. Posted-only.

## Query parameters

- `entityId` string, uuid

## Response `200`

Liabilities sub-ledger payload

- object
  - `success` boolean
  - `data` SubLedgerLiabilitiesView
    - `companyId` string, uuid, required
    - `entityId` string, uuid, required
    - `asOf` string, date, nullable, required: Cutoff for every balance-sheet figure. The customer route returns today (UTC); the accountant mirror returns the last closed GL period's end date, or null when none is closed.
    - `totals` object, required
      - `totalLiabilitiesCents` integer, required: Sum of signed GL balances for all Liability accounts. Ties to /reports/balance-sheet totalLiabilities within 1 cent.
      - `totalEquityCents` integer, required: Sum of signed GL balances for all Equity accounts. Omits earnings not yet closed to retained earnings; see balanceSheetEquityCents.
      - `balanceSheetEquityCents` integer, nullable: Total equity from the balance sheet at the same cutoff, including prior- and current-year earnings not yet closed (#1994). Null when the balance sheet could not be read.
      - `balanceSheetLiabilitiesCents` integer, nullable: Total liabilities from the same balance-sheet read, so a caption built from it and balanceSheetEquityCents sums to total assets.
    - `balanceSheetLiabilities` SubLedgerAccountRow[], nullable: Every non-zero liability line on the balance sheet at the same cutoff, largest first (including lines no tab details, e.g. a SAFE).
      - `glAccountId` string, required
      - `name` string, required
      - `code` string, nullable, required
      - `balanceCents` integer, required
    - `debt` object, required
      - `totalCents` unknown, required
      - `loans` unknown, required
      - `loansUnavailableReason` 'loan_register_not_entity_scoped', required
      - `creditCards` CreditCardDebtEntry[], required
        - `glAccountId` string, uuid, required
        - `name` string, required
        - `balanceCents` integer, required
        - `monthlyInterestCents` unknown, required
        - `aprUsed` unknown, required
        - `interestUnavailableReason` 'credit_card_apr_not_available', required
      - `loanAccounts` SubLedgerAccountRow[]: Posted loan, note and line-of-credit accounts (no cards, no SAFEs).
        - `glAccountId` string, required
        - `name` string, required
        - `code` string, nullable, required
        - `balanceCents` integer, required
      - `postedBalanceCents` integer: Credit cards plus loan accounts, from the ledger.
    - `leases` object, required
      - `totalCents` integer, nullable, required
      - `entries` LeaseEntry[], required
        - `scheduleId` string, required
        - `sourceEventId` string, required
        - `leaseType` 'operating' | 'finance', required
        - `totalAmountCents` integer, required
        - `remainingPeriods` integer, required
        - `startDate` string, date, required
        - `endDate` string, date, required
        - `monthlyPaymentCents` integer, required
      - `runOffUnavailableReason` 'no_active_schedules' | 'not_available_for_books' | 'schedule_authority_not_entity_scoped' | 'null', nullable, required: null when persisted run-off schedules are available. no_active_schedules means the Books cutoff has no active persisted schedule. not_available_for_books means the required durable schedule read model is not active for these books. schedule_authority_not_entity_scoped means only a company-wide legacy source exists.
      - `postedBalanceCents` integer: Posted balance of lease-liability accounts.
    - `deferred` object, required
      - `totalCents` integer, nullable, required: Closing balance of the deferred revenue roll-up (last row's closingCents).
      - `monthlyRollup` DeferredRevenueMonthRow[], required: Up to 12 months ending in the asOf month from entity-keyed schedules; empty when schedule authority is not entity-scoped.
        - `month` string, required: Month label in YYYY-MM format
        - `additionsCents` integer, required: New deferred revenue booked in this month across all schedules.
        - `recognizedCents` integer, required: Revenue recognized (posted) in this month.
        - `closingCents` integer, required: Running balance of additions minus recognized through this month.
      - `schedules` ScheduleRunOffSchedule[], required: Active persisted deferred-revenue schedules, including posted and upcoming runs.
        - `scheduleId` string, required
        - `kind` 'prepaid_amortization' | 'deferred_revenue_recognition' | 'accrual_reversal', required
        - `totalAmountCents` integer, required
        - `remainingPeriods` integer, required
        - `startDate` string, date, required
        - `endDate` string, date, required
        - `currency` string, nullable, required
        - `sourceLabel` string, nullable, required: Customer-safe lineage label. Never contains confidence or routing metadata.
        - `sourceLink` ScheduleSourceLink, required
          - `kind` 'transaction' | 'document' | 'ar_item' | 'ap_item', required
          - `id` string, required
        - `entries` PrepaidAmortScheduleEntry[], required
          - `sequenceNum` integer, required
          - `scheduledDate` string, date, required
          - `amountCents` integer, required
          - `status` string, required
      - `runOffUnavailableReason` 'no_active_schedules' | 'not_available_for_books' | 'schedule_authority_not_entity_scoped' | 'null', nullable, required: null when persisted run-off schedules are available. no_active_schedules means the Books cutoff has no active persisted schedule. not_available_for_books means the required durable schedule read model is not active for these books. schedule_authority_not_entity_scoped means only a company-wide legacy source exists.
      - `postedBalanceCents` integer: Posted deferred-revenue balance (detail type or name), available whether or not schedules are.
      - `byAccount` SubLedgerAccountRow[]
        - `glAccountId` string, required
        - `name` string, required
        - `code` string, nullable, required
        - `balanceCents` integer, required
    - `accrued` object, required
      - `totalCents` integer, required
      - `byAccount` object[], required
        - `glAccountId` string, uuid, required
        - `name` string, required
        - `code` string, nullable
        - `balanceCents` integer, required
      - `schedules` ScheduleRunOffSchedule[], required: Pending reversal schedules only after the paired accrual has posted by the Books cutoff. Never forecasts an unposted accrual.
        - `scheduleId` string, required
        - `kind` 'prepaid_amortization' | 'deferred_revenue_recognition' | 'accrual_reversal', required
        - `totalAmountCents` integer, required
        - `remainingPeriods` integer, required
        - `startDate` string, date, required
        - `endDate` string, date, required
        - `currency` string, nullable, required
        - `sourceLabel` string, nullable, required: Customer-safe lineage label. Never contains confidence or routing metadata.
        - `sourceLink` ScheduleSourceLink, required
          - `kind` 'transaction' | 'document' | 'ar_item' | 'ap_item', required
          - `id` string, required
        - `entries` PrepaidAmortScheduleEntry[], required
          - `sequenceNum` integer, required
          - `scheduledDate` string, date, required
          - `amountCents` integer, required
          - `status` string, required
      - `runOffUnavailableReason` 'no_active_schedules' | 'not_available_for_books' | 'schedule_authority_not_entity_scoped' | 'null', nullable, required: null when persisted run-off schedules are available. no_active_schedules means the Books cutoff has no active persisted schedule. not_available_for_books means the required durable schedule read model is not active for these books. schedule_authority_not_entity_scoped means only a company-wide legacy source exists.
    - `equity` object, required
      - `totalCents` integer, required
      - `byAccount` object[], required
        - `glAccountId` string, uuid, required
        - `name` string, required
        - `code` string, nullable
        - `balanceCents` integer, required
      - `balanceSheetRows` SubLedgerAccountRow[], nullable: Balance-sheet equity rows at the same cutoff, including the synthetic prior-year and current-year earnings rows.
        - `glAccountId` string, required
        - `name` string, required
        - `code` string, nullable, required
        - `balanceCents` integer, required
    - `tax` SalesTaxEntry
      - `payableGlAccountId` string, uuid, required: The sales-tax payable GL account, resolved by account name/subtype rather than by code. Code 2200 is the seeded credit-card code, so it is never sufficient on its own (#2000).
      - `payableAccountName` string, required: Name of the resolved account, so the caption can be audited against the source.
      - `payableBalanceCents` integer, required
      - `heldAssetGlAccountId` string, uuid, nullable, required: GL account 1210 if it exists; null when no posted held-asset account exists.
      - `heldAssetBalanceCents` integer, nullable, required: Posted balance of the held-asset account; never inferred from the payable.
      - `heldAssetUnavailableReason` 'held_asset_account_not_available' | 'null', nullable, required: Explicit reason the held-asset balance is unavailable. Null when a real 1210 account and its posted balance are present.
    - `taxUnavailableReason` 'sales_tax_account_not_identifiable' | 'null', nullable: Set when a code-2200 liability account exists but is not a sales-tax account (in practice a named credit card, #2000). Callers must render a named-unavailable state instead of captioning that balance as tax owed to authorities. Null when tax is populated, and also null when the COA simply has no 2200 account at all.

## Other responses

- `401`: Authentication required
- `403`: Insufficient permissions or not a company member

---

[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)
