---
title: "Get a journal entry"
method: GET
path: "/v1/journal-entries/{journal_entry_id}"
tags: ["Journal Entries"]
---

# Get a journal entry

`GET /v1/journal-entries/{journal_entry_id}`

## Request

- Base URL: `https://api.scrip.dev`
- URL: `https://api.scrip.dev/v1/journal-entries/{journal_entry_id}`
- Auth: HTTP bearer

Retrieve a journal entry by ID, including its double-entry postings.

## Path parameters

- `journal_entry_id` string, uuid, required

## Response `200`

Journal entry with postings

- JournalEntryResponse: A journal entry with its metadata and double-entry postings
  - `action_type` 'CREDIT' | 'DEBIT' | 'TRANSFER' | 'HOLD' | 'RELEASE' | 'FORFEIT' | 'EXPIRATION' | 'REDEMPTION' | 'REVERSAL' | 'BURN' | 'FUND' | 'ADJUSTMENT' | 'MATURITY' | 'VOID_PENDING': The kind of ledger action the entry records. A manual adjustment is a `CREDIT` or `DEBIT`; no operation creates `ADJUSTMENT` entries.
  - `created_at` string, date-time: When this entry was created (RFC 3339)
  - `description` string: Human-readable explanation of the entry's purpose
  - `entry_hash` string: SHA-256 hash sealing this entry into the organization's hash chain
  - `event_id` string, uuid: Event that triggered this entry (null if created via direct API call)
  - `id` string, uuid: Unique identifier for this journal entry
  - `postings` PostingResponse[]: Double-entry postings (always sum to zero). Omitted in list responses.
    - `amount` string: Posting amount (positive = credit, negative = debit)
    - `asset_symbol` string: Asset being transacted
    - `bucket` 'AVAILABLE' | 'HELD' | 'DEFERRED': The balance bucket the posting affects.
    - `created_at` string, date-time: When this posting was created (RFC 3339)
    - `entity_type` 'PARTICIPANT' | 'GROUP' | 'PROGRAM' | 'PROGRAM_TEST' | 'SYSTEM_ISSUANCE' | 'SYSTEM_BREAKAGE' | 'SYSTEM_REDEMPTION': The kind of account the posting belongs to.
    - `group_id` string, uuid: Group that owns this account (set when entity_type is GROUP)
    - `id` string, uuid: Unique identifier for this posting
    - `participant_id` string, uuid: Participant who owns this account (set when entity_type is PARTICIPANT)
    - `program_id` string, uuid: Program that owns this account (set when entity_type is PROGRAM)
  - `program_id` string, uuid: Program this entry belongs to
  - `program_name` string: The name of the program the entry ran under.
  - `reference_id` string: Correlation ID linking holds to releases
  - `rule_id` string, uuid: Rule that triggered this entry. It is null for direct API calls and for entries Scrip creates itself.

## Other responses

- `400`: Invalid ID format (code: validation_error)
- `401`: The API key is missing or not valid. See [Authentication](https://docs.scrip.dev/authentication).
- `404`: Resource not found (code: journal_entry_not_found)
- `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)
