Ingest transactions (deprecated)
Deprecated. Push up to 1000 bank transactions synchronously. Use Create import job instead.
This call still works but is deprecated: every response carries Deprecation: true and Link: </api/v1/import-jobs>; rel="successor-version". New integrations should use Create import job with entity: "transaction", which takes the same rows, accepts up to 10,000 per call, and reports per-row results.
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. Requires a tenant API key with ingest:write. Limited to 10 requests per minute per key.
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: [email protected] | 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 | More than 100 requests in one minute from this API key or IP address. Wait for the Retry-After header (seconds) and retry. |
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. |
Idempotency-Key must be 8-255 characters: letters, digits, ".", "_", ":" or "-". | 400 | The Idempotency-Key header is present but malformed. |
A request with this Idempotency-Key is still being processed. | 409 | The first request with this key has not finished. Retry after it completes. code is idempotency_in_progress. |
This Idempotency-Key was already used with a different request body. | 422 | Send a new key for a different request. code is idempotency_key_reuse. |