Ingest transactions
Push bank transactions from an integration.
Synchronously inserts up to 1000 transactions. The tenant is taken from the API key. Duplicate sourceType+sourceId rows are skipped. Matching jobs are published for non-ignored inserts. This call does not create an import job; List ingest jobs is for file imports. Requires a tenant API key with `ingest:write` (Firebase tokens are rejected).
Body parameters
| Name | Type | Required |
|---|---|---|
transactionsRows to ingest. Minimum 1, maximum 1000. Extra top-level fields are rejected. | array | Required |
sourceIdYour unique id for this movement. Together with sourceType this is the idempotency key. Example: bank:2026-09-12:TX-8891 | string Max 255 | Required |
amountPositive amount in major currency units, unless the tenant stores minor units. Example: 1000 | number | Required |
directionPayment direction. debit/credit and inbound/outbound are accepted aliases of in/out. | string No maximum | Required |
Allowed values inoutdebitcreditinboundoutbound | ||
transactionDateTransaction date (YYYY-MM-DD or ISO timestamp). Example: 2026-09-12 | string No maximum | Required |
sourceTypeOrigin of the record. Default api. | string No maximum | Optional |
Allowed values apicsvenable_bankingcamt_052camt_053camt_054mt940 | ||
currencyISO 4217 currency. Default EUR. Example: EUR | string Max 3 | Recommended |
bookingDateBooking date. Example: 2026-09-12 | string No maximum | Optional |
valueDateValue date. Example: 2026-09-12 | string No maximum | Optional |
descriptionOriginalBank wording. Example: VIREMENT LEONES CARS | string Max 1000 | Optional |
descriptionDisplayDisplay wording. Example: Leones Cars — wire payment | string Max 1000 | Optional |
externalReferenceEnd-to-end or invoice reference. Example: INV-2026-0042 | string Max 255 | Optional |
remittanceInfoUnstructured remittance information. Example: INV-2026-0042 Leones Cars | string Max 500 | Optional |
structuredReferenceStructured creditor reference. Example: RF18539007547034 | string Max 255 | Optional |
counterpartyNameName as received from the bank. Example: Leones Cars | string Max 255 | Optional |
counterpartyIbanCounterparty IBAN. Example: FR7630006000011234567890189 | string Max 50 | Optional |
counterpartyBicCounterparty BIC. Example: BNPAFRPP | string Max 11 | Optional |
counterpartyIdentifierNon-IBAN counterparty instrument key. Example: carl@leonescars.fr | string Max 255 | Optional |
flowTypeEconomic flow type (payment, refund, fee, and similar). Example: payment | string No maximum | Optional |
analytic1Analytic axis 1. Example: SALES-EU | string Max 100 | Optional |
analytic2Analytic axis 2. Example: CHANNEL-DIRECT | string Max 100 | Optional |
sourceRawOriginal bank payload as JSON. At most 32 keys, nested depth 3, 8 KB serialized, and 64-character key names. Keys __proto__, constructor, and prototype are rejected. Example: {"bookingDate":"2026-09-12"} | object | Optional |
metadataJSON object. At most 32 keys, nested depth 3, 8 KB serialized, and 64-character key names. Keys __proto__, constructor, and prototype are rejected. Example: {"bank_tx_id":"EB-991"} | object | Optional |
Errors
This operation can return the following errors in addition to generic HTTP failures.
| Error | HTTP code | Description |
|---|---|---|
Missing Bearer token | 401 | The Authorization header is missing or is not a Bearer token. |
Invalid or revoked API key | 401 | The API key is unknown, malformed, expired, or has been revoked. |
API key is missing scope ingest:write | 403 | The key does not include ingest:write. A write scope does not imply the matching read scope. |
Too many requests, please try again later | 429 | Wait and retry. The Retry-After header is the number of seconds to wait. |
Too many ingest requests, please try again later | 429 | POST /ingest/transactions is limited to 10 requests per minute per API key, on top of the general limit. Retry-After is in seconds. |
Invalid API key | 401 | The Bearer token is not a tenant API key. This operation is API-key-only. |
API key is not bound to a tenant | 400 | The key exists but has no tenant. |
Validation failed | 400 | The body failed schema validation. details lists field and message. |
Internal server error | 500 | Unexpected server error. The JSON body includes correlationId. Retry with backoff. |