Update a transaction
const url = 'https://example.com/api/v1/money/budgets/example/transactions/example';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"account_id":"example","amount":1,"category_id":"example","cleared":true,"date":"example","notes":"example","payee":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://example.com/api/v1/money/budgets/example/transactions/example \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "account_id": "example", "amount": 1, "category_id": "example", "cleared": true, "date": "example", "notes": "example", "payee": "example" }'Replace a simple register row with the request fields. If the date names another month, the server moves the row and its note lines to that month. The response returns the saved row. Split, transfer, and foreign-currency rows are not supported. Route: /api/v1/money/budgets/{budget_id}/transactions/{transaction_id}. Inputs: budget_id, transaction_id. Do not automatically replay this operation after an uncertain result.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Budget ID
Transaction ID
Request Bodyrequired
Section titled “Request Bodyrequired”Create or replace a simple transaction (one account, one category).
object
Account ID (in the budget currency).
Minor units: outflow negative, inflow positive.
Expense, income or opening-balance category ID.
Cleared flag (#cleared); defaults to false.
Date YYYY-MM-DD.
Separate notes; omitted on an edit to preserve existing notes (#1130).
Payee text; transaction Notes use their own field (#1130).
Examplegenerated
{ "account_id": "example", "amount": 1, "category_id": "example", "cleared": true, "date": "example", "notes": "example", "payee": "example"}Responses
Section titled “Responses”The edited register row
One register row.
object
Account whose register shows this row.
Account name.
Amount in currency minor units, as seen by account_id.
Amount in budget minor units.
Category ID (a Split or Transfer marker for those rows).
Category name.
This Account’s cleared mark; explicit source state overrides legacy
#cleared tags and remains independent of reconciled state (#1130).
Currency of amount.
Date YYYY-MM-DD.
True when this build can edit the row (simple, unreconciled rows only; #462, #1130).
Transaction ID (the row’s ^block-id).
simple, split, transfer or card_payment.
Payee text without tag tokens, for display next to tags.
Separate notes, with original whitespace (#1130).
Payee text exactly as written (with its tags); Notes are separate (#1130).
True when this source row was reconciled (#1130).
Decimal places of currency.
Original source rows, retained without extra postings (#1130).
Typed source evidence for split, transfer and Tracking rows (#1130). The API crate owns its schema; the pure Money crate has no HTTP dependency. Evidence records never create additional postings.
object
Stable Money Account identity.
Original amount in budget minor units.
Stable Money Category identity, when the source had one.
Independent source cleared mark.
Original date in YYYY-MM-DD form.
Original export identity.
Original Notes, including whitespace.
Original Payee, flattened for a Markdown row.
Independent source reconciled mark.
Split legs.
One split leg of a transaction.
object
Amount in budget minor units.
Category ID.
Category name.
Inline calternal tags in the Payee, in order, without #cleared (the
cleared flag has its own column). Parsed by the Notes tag grammar so a
Money tag is the same tag everywhere (DESIGN §48: ordinary tags).
The other Account of a transfer or Card payment.
Category posted by a transfer between on-budget and off-budget accounts.
Display name for transfer_category_id.
Examplegenerated
{ "account_id": "example", "account_name": "example", "amount": 1, "budget_amount": 1, "category_id": "example", "category_name": "example", "cleared": true, "currency": "example", "date": "example", "editable": true, "id": "example", "kind": "example", "memo": "example", "notes": "example", "payee": "example", "reconciled": true, "scale": 1, "source_rows": [ { "account_id": "example", "amount": 1, "category_id": "example", "cleared": true, "date": "example", "id": "example", "notes": "example", "payee": "example", "reconciled": true } ], "splits": [ { "amount": 1, "category_id": "example", "category_name": "example" } ], "tags": [ "example" ], "transfer_account_id": "example", "transfer_category_id": "example", "transfer_category_name": "example"}The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}Not yet supported (split, transfer, foreign currency)
The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}