---
title: "Get liability report"
method: GET
path: "/v1/reports/liability"
tags: ["Reporting"]
---

# Get liability report

`GET /v1/reports/liability`

## Request

- Base URL: `https://api.scrip.dev`
- URL: `https://api.scrip.dev/v1/reports/liability`
- Auth: HTTP bearer

Returns outstanding liability as of a point in time, dimensioned by asset and program, optionally split by bucket.
This report does not accept created_after or created_before.

## Query parameters

- `as_of` string, date-time
- `program_id` string, uuid
- `asset_id` string, uuid
- `by_bucket` boolean

## Response `200`

Liability report

- LiabilityReportResponse: Point-in-time liability report results
  - `as_of` string: The point in time this report reflects (RFC 3339). Echoes the as_of parameter, or the server time used when as_of was omitted.
  - `data` LiabilityReportRowResponse[]: Liability rows, one for each asset and program pair (and each bucket when by_bucket=true) with activity at or before as_of
    - `asset_id` string, uuid: Unique identifier for this asset
    - `asset_name` string: The name people see for the asset, such as `Points`.
    - `asset_symbol` string: Ticker or symbol for this asset (e.g., `POINTS`)
    - `balance` string: Net outstanding liability for this dimension as of `as_of`, as a decimal string at the asset's scale. Amounts are per asset, so never sum across assets. It can be negative for per-program rows of assets shared across programs, because of cross-program redemption. Asset-level totals stay exact.
    - `bucket` 'AVAILABLE' | 'HELD' | 'DEFERRED': The balance bucket for this row. Present only when `by_bucket` is true.
    - `program_id` string, uuid, nullable: Program this liability is attributed to (via the journal entry that created each posting). Null for postings not attributed to a program.
    - `program_name` string, nullable: Display name of the attributed program (null when program_id is null)
    - `scale` integer: Number of decimal places for this asset; balance is rendered with exactly this many decimals
  - `pagination` PaginationResponse: Cursor details for a list. `has_more` says whether another page exists, and `next_cursor` is the value to send to get it.
    - `has_more` boolean, required: Whether more results are available beyond this page
    - `next_cursor` string, nullable, required: Cursor to fetch the next page. Null on the last page

## Other responses

- `400`: Invalid query parameters (code: validation_error)
- `401`: The API key is missing or not valid. See [Authentication](https://docs.scrip.dev/authentication).
- `429`: Too many requests. Wait the number of seconds in the `Retry-After` header, then retry. See [Limits and durations](https://docs.scrip.dev/limits#rate-limits).
- `500`: Something failed on Scrip's side. Retry the request, and quote `request_id` if it keeps failing. [Errors](https://docs.scrip.dev/errors) lists every code, and the [API introduction](https://docs.scrip.dev/api-reference/introduction) describes the error format.

---

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