Adds a planned expense to a box (max 100 expenses per box). Records Activity History.
POST
/v1/create_expenseBody
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| idempotencyKey | string | Yes | — | Client-generated key (1–128 chars: letters, digits, . _ : -). Same key + same body replays; different body returns 409. Prefer Idempotency-Key HTTP header when calling the Tools API. |
| budgetId | string | Yes | — | Budget that owns the parent box. |
| boxId | string | Yes | — | Box that will contain the expense. |
| name | string | Yes | — | Display name (e.g. Rent, Netflix; max 100 characters). |
| amount | number | No | — | Planned amount (0–1000000). |
| currency | string | No | — | ISO 4217 currency code; defaults to the budget baseCurrency. |
| frequency | string | No | — | Cadence such as monthly, weekly, yearly. |
| description | string | No | — | Optional free-text notes (max 100 characters). |
Response data
| Field | Type | Description |
|---|---|---|
| id | string | Id of the newly created planned expense. |
| budgetId | string | Id of the budget this resource belongs to. |
| boxId | string | Id of the parent expense box. |
| name | string | Human-readable name shown in the app. |