Transactions

Bulk Transactions

Record many transactions in one request.

POST/transactions/bulk

Authorization

If set, the API uses an API key for authentication. Include the following header in your requests: X-blnk-key: <api-key>.

Replace <api-key> with your secret API key. Ensure the key is kept secure and not exposed in public repositories or client-side code.

See also: Core API key.

Body

atomicbooleandefault falsebody

When true, either all transactions succeed or all fail. When false, transactions are processed independently. Omit it to use false.

inflightbooleandefault falsebody

When true, transactions are created in INFLIGHT status and require a separate commit. When false, transactions are applied immediately. Omit it to use false.

run_asyncbooleandefault falsebody

When true, processing happens in the background and results are delivered via webhook. When false or not provided, processing happens synchronously and results are returned in the response.

skip_queuebooleandefault falsebody

When true, transactions bypass the queue and are processed inline in the request. Duplicate-reference handling differs from the default queued path. See Duplicate references.

dry_runbooleandefault falsebody

When true, Blnk projects the batch without writing anything. skip_queue selects cumulative vs independent projection. run_async is ignored. See Dry-run a transaction.

transactionsobject[]requiredbody

An array of transaction objects. Each item uses the fields on Create new transaction, including overdraft_limit. Max number of transactions allowed is 10,000.

{
  "precise_amount": 35890,
  "precision": 100,
  "reference": "unique_reference_1",
  "description": "Transaction description",
  "currency": "USD",
  "source": "@source_account",
  "destination": "@destination_account",
  "allow_overdraft": true
}

Response

A write returns the batch fields below. POST with dry_run: true returns a projection instead, with HTTP 200, and omits batch_id, status, transaction_count, and message.

batch_idstringrequired

Identifier for the bulk batch. Use this value as parent_transaction when searching for child transactions, or when committing or voiding an inflight batch.

statusstringrequired

When run_async is false, applied means the bulk request was accepted. With default queueing (skip_queue: false), children are processed asynchronously - applied does not mean every child is already APPLIED on balances. With skip_queue: true, children are processed inline before the response returns. Value is inflight when inflight: true. When run_async is true, value is processing.

transaction_countinteger

Number of transactions in the request. Present on successful synchronous responses. On the default queued path, this reflects items submitted, not necessarily rows created - see Duplicate references.

messagestring

Human-readable status message. Included on the immediate response when run_async is true (for example, confirming that background processing started).

dry_runboolean

true on a projection. Present only when the request set dry_run.

would_applyboolean

false when any item in the batch would be rejected.

cumulativeboolean

true when skip_queue is true and each item is projected after the previous item’s effect. false when each item is projected on its own against current balances.

atomicboolean

The atomic value from the request, on a projection.

resultsarray

One preview per item. Each item uses the dry-run fields.

balancesarray

Combined effect per balance. Present only when cumulative is true. Each item uses the balance fields on Dry-run a transaction.

notesarray

Advisory messages that are not rejections.