Ingest transactions

POST https://api.invunion.com/api/v1/ingest/transactions ingest:write Markdown

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

NameTypeRequired
transactions

Rows to ingest. Minimum 1, maximum 1000. Extra top-level fields are rejected.

array
Required
sourceId

Your unique id for this movement. Together with sourceType this is the idempotency key.

Example: bank:2026-09-12:TX-8891

string

Max 255

Required
amount

Positive amount in major currency units, unless the tenant stores minor units.

Example: 1000

number
Required
direction

Payment direction. debit/credit and inbound/outbound are accepted aliases of in/out.

string

No maximum

Required
Allowed valuesinoutdebitcreditinboundoutbound
transactionDate

Transaction date (YYYY-MM-DD or ISO timestamp).

Example: 2026-09-12

string

No maximum

Required
sourceType

Origin of the record. Default api.

string

No maximum

Optional
Allowed valuesapicsvenable_bankingcamt_052camt_053camt_054mt940
currency

ISO 4217 currency. Default EUR.

Example: EUR

string

Max 3

Recommended
bookingDate

Booking date.

Example: 2026-09-12

string

No maximum

Optional
valueDate

Value date.

Example: 2026-09-12

string

No maximum

Optional
descriptionOriginal

Bank wording.

Example: VIREMENT LEONES CARS

string

Max 1000

Optional
descriptionDisplay

Display wording.

Example: Leones Cars — wire payment

string

Max 1000

Optional
externalReference

End-to-end or invoice reference.

Example: INV-2026-0042

string

Max 255

Optional
remittanceInfo

Unstructured remittance information.

Example: INV-2026-0042 Leones Cars

string

Max 500

Optional
structuredReference

Structured creditor reference.

Example: RF18539007547034

string

Max 255

Optional
counterpartyName

Name as received from the bank.

Example: Leones Cars

string

Max 255

Optional
counterpartyIban

Counterparty IBAN.

Example: FR7630006000011234567890189

string

Max 50

Optional
counterpartyBic

Counterparty BIC.

Example: BNPAFRPP

string

Max 11

Optional
counterpartyIdentifier

Non-IBAN counterparty instrument key.

Example: carl@leonescars.fr

string

Max 255

Optional
flowType

Economic flow type (payment, refund, fee, and similar).

Example: payment

string

No maximum

Optional
analytic1

Analytic axis 1.

Example: SALES-EU

string

Max 100

Optional
analytic2

Analytic axis 2.

Example: CHANNEL-DIRECT

string

Max 100

Optional
sourceRaw

Original 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
metadata

JSON 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.