Records 1–100 manual evidence transactions in one call. Each row has its own idempotencyKey (same namespace as create_transaction). Rows commit independently — a failed row does not undo earlier successes. The batch counts as one write toward the Tools rate limit. Prefer this over looping create_transaction when importing.
POST
/v1/create_transactionsBody
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| budgetId | string | Yes | — | Budget that owns the manual account(s). |
| transactions | array | Yes | — | 1–100 create rows (see below). Empty or oversized arrays return 400 before any writes. |
transactions[] item
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| idempotencyKey | string | Yes | — | Per-row key (1–128 chars: letters, digits, . _ : -). Shared with single create_transaction. Same key + same body → replayed. |
| accountId | string | Yes | — | Manual account id. |
| amount | number | Yes | — | Signed amount (negative for outflows; ±1000000). |
| postedAt | string | Yes | — | ISO-8601 timestamp when the transaction posted. |
| currency | string | No | — | ISO 4217 currency code; defaults to the account currency. |
| description | string | No | — | Payee or memo text (max 100 characters). |
| applyToBalance | boolean | No | true | If true, adjusts the manual account balance when that row is created. |
No top-level idempotencyKey / Idempotency-Key header is required for the batch envelope.
Response data.results[]
| Field | Type | Description |
|---|---|---|
| index | number | Zero-based position in the input array. |
| status | string | created, replayed, or failed. |
| transaction | object | null | Created/replayed transaction fields; null when failed. |
| error | object | null | { code, message, details? } when failed; null on success. |