Skip to main content
POST
/
transactions
/
bulk
Bulk transactions
curl --request POST \
  --url http://localhost:5001/transactions/bulk \
  --header 'X-blnk-key: <api-key>'
import requests

url = "http://localhost:5001/transactions/bulk"

headers = {"X-blnk-key": "<api-key>"}

response = requests.post(url, headers=headers)

print(response.text)
const options = {method: 'POST', headers: {'X-blnk-key': '<api-key>'}};

fetch('http://localhost:5001/transactions/bulk', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_PORT => "5001",
CURLOPT_URL => "http://localhost:5001/transactions/bulk",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"X-blnk-key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"net/http"
"io"
)

func main() {

url := "http://localhost:5001/transactions/bulk"

req, _ := http.NewRequest("POST", url, nil)

req.Header.Add("X-blnk-key", "<api-key>")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("http://localhost:5001/transactions/bulk")
.header("X-blnk-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost:5001/transactions/bulk")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["X-blnk-key"] = '<api-key>'

response = http.request(request)
puts response.read_body
Use blnk.transactions.create_bulk to create many transactions in one request.
1

Call the method

blnk.transactions.create_bulk
response = blnk.transactions.create_bulk({
  "atomic": True,
  "transactions": [
    {
      "amount": 1000,
      "precision": 100,
      "currency": "USD",
      "source": "@source_1",
      "destination": "@dest_1",
      "reference": "bulk_001",
      "description": "Payment 1",
    },
    {
      "amount": 2000,
      "precision": 100,
      "currency": "USD",
      "source": "@source_2",
      "destination": "@dest_2",
      "reference": "bulk_002",
      "description": "Payment 2",
    },
  ],
})
FieldTypeDescription
transactionslist[dict]Transaction objects to create; references must be unique within the batch.
atomicboolWhen True, every transaction succeeds or fails together.
inflightboolWhen True, transactions are created in INFLIGHT status for a later commit or void.
run_asyncboolWhen True, Core processes the batch in the background and returns status: "queued".
skip_queueboolWhen True, transactions bypass the queue and process synchronously.
2

Save the batch ID

Use response.data["batch_id"] as parent_transaction to find child transactions, or with update_status to commit or void an inflight batch.
3

Response

{
  "batch_id": "bulk_c62f200b-905f-4983-a349-cadd279234aa",
  "status": "applied",
  "transaction_count": 4
}
{
  "batch_id": "bulk_c62f200b-905f-4983-a349-cadd279234aa",
  "status": "queued",
  "message": "Bulk transaction processing started"
}
FieldTypeDescription
batch_idstrIdentifier for the batch. Use as parent_transaction to find child transactions, or with update_status to commit or void an inflight batch.
statusstrapplied, inflight, or queued depending on the batch.
transaction_countnumberNumber of transactions when processed synchronously.
messagestrStatus message when run_async is True.

Bulk transactions guide

Batch processing, webhooks, and retrieving a batch.

Bulk transactions

HTTP request and response schema.

Need help?

We are very happy to help you make the most of Blnk, regardless of whether it is your first time or you are switching from another tool. To ask questions or discuss issues, please contact us or join our Discord community.