---
title: "Get ledger summary"
method: GET
path: "/v1/reports/ledger-summary"
tags: ["Reporting"]
---

# Get ledger summary

`GET /v1/reports/ledger-summary`

## Request

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

Returns aggregated balances and flows per asset, optionally scoped to a program or asset and a time window.
This report does not accept created_after or created_before.

## Query parameters

- `program_id` string, uuid
- `asset_id` string, uuid
- `period_start` string, date-time
- `period_end` string, date-time

## Response `200`

Ledger summaries

- LedgerSummaryListResponse: Ledger summary results
  - `data` LedgerSummaryResponse[]: Per-asset ledger summaries
    - `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`)
    - `closing_balance` string: Liability balance at the end of the requested period
    - `current_balance` string: Net outstanding liability in this asset. Reconciles as this row's `total_issued` − `total_redeemed` − `total_forfeited` − `total_expired` + other adjustments. For issued and redeemed amounts per program, use `by_asset` in the program activity report.
    - `opening_balance` string: Liability balance at the start of the requested period
    - `other_adjustments_net` string: Net of every balance change that the issued, redeemed, forfeited and expired totals do not cover, such as debits, voided pending rewards, value returned when pending rewards settle for less, and event reversals. In period mode it also includes redemption reversals, because `period_redeemed` is gross. It is always returned and closes the rollforward: all-time mode reconciles against `current_balance`, and period mode against `opening_balance` and `closing_balance`. For a separate debit total, use the liability rollforward's `debited` line.
    - `participant_count` integer: Number of participants with an account in this asset, including those whose balance is now zero. With `program_id`, it counts the participants enrolled in that program.
    - `period_expired` string: Amount expired during the requested period
    - `period_forfeited` string: Amount manually forfeited during the requested period
    - `period_issued` string: Amount issued during the requested period
    - `period_redeemed` string: Gross amount redeemed during the requested period; reversals are reflected in other_adjustments_net
    - `scale` integer: Number of decimal places for this asset. All amount fields in this row are denominated in this asset at this scale; never sum amounts across rows with different assets.
    - `total_expired` string: Cumulative amount expired from participant accounts via lot expiration (all-time)
    - `total_forfeited` string: Cumulative amount forfeited from participant accounts by explicit forfeit actions (all-time)
    - `total_issued` string: Cumulative amount issued to participants from system supply (all-time, includes unlimited and prefunded)
    - `total_redeemed` string: Cumulative amount redeemed by participants, net of reversals (all-time)
  - `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)
