---
title: "ledger.entry"
method: POST
path: "ledger.entry"
---

# ledger.entry

`POST ledger.entry` (webhook)

An approval wrote a projected-value ledger entry (nominal, projected; not realized). Its record is at GET /api/v1/ledger.

## Headers

- `x-worthune-event` 'household.computed' | 'household.updated' | 'household.archived' | 'household.decision' | 'household.drift' | 'book.scan.completed' | 'book.scan.failed' | 'facts.changed' | 'assumption-profile.published' | 'calendar.deadline' | 'mandate.proposal' | 'mandate.question' | 'proposal.approved' | 'proposal.rejected' | 'proposal.expired' | 'proposal.superseded' | 'ledger.entry' | 'mandate.paused' | 'mandate.ended', required
- `x-worthune-delivery` string, required
- `x-worthune-timestamp` string, required
- `x-worthune-signature` string, required
- `x-worthune-signature-previous` string

## Payload

- object: Signed POST body. x-worthune-signature = 'sha256=' + hex(HMAC-SHA256(secret, `${x-worthune-timestamp}.${rawBody}`)). After a secret rotation, x-worthune-signature-previous (signed with the old secret) rides along for 24 hours. Delivery is at least once: a failed attempt is retried up to five more times with backoff (about 1 min, 5 min, 30 min, 2 h, 6 h), every attempt carrying the same x-worthune-delivery id; a redirect is not a receipt.
  - `kind` 'ledger.entry', required
  - `timestamp` integer, required: Unix seconds; equals the x-worthune-timestamp header.
  - `data` object, required: Event-specific payload — see the per-event schemas under `webhooks`.
    - `ledgerEntryId` integer, required
    - `proposalId` integer, required
    - `mandateId` integer, required
    - `householdId` integer, required
    - `metric` string, required
    - `valueUsd` integer, required
    - `nominal` unknown, required
    - `recordSha256` string, required
    - `href` string, required

## Acknowledgement `2XX`

Receipt. Any non-2xx (or a redirect, or a 5-second timeout) is a failed attempt, retried up to five more times with backoff. An event's first failed attempt counts toward auto-disable — 10 consecutive failed events disable the endpoint; any successful delivery resets the count.

---

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