Skip to main content
When you combine inflight: true with multiple sources or multiple destinations, Blnk records each leg as a separate inflight transaction linked to a root split ID.

Record split inflight

From Blnk Core 0.15.0, inflight commit and void go through the queue by default.
To use the queue, set "skip_queue": false or omit skip_queue.
1

Record the split

Create a split transaction with "inflight": true:
curl -X POST "http://YOUR_BLNK_INSTANCE_URL/transactions" \
  -H "X-blnk-key: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "precise_amount": 3000000,
    "precision": 100,
    "reference": "ref_001adcfgf",
    "currency": "USD",
    "source": "bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38",
    "description": "Payment from Sarah",
    "inflight": true,
    "skip_queue": false,
    "destinations": [
      {
        "identifier": "bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f",
        "distribution": "20%"
      },
      {
        "identifier": "bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d",
        "precise_distribution": "1000000"
      },
      {
        "identifier": "bln_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b",
        "distribution": "left"
      }
    ]
  }'
2

Read the response

The response returns immediately with status: "QUEUED" for the split request itself. Blnk then queues each leg separately for processing.The worker then records each split leg as a separate INFLIGHT transaction. Every leg, and any later commit or void child, shares the same meta_data.QUEUED_PARENT_TRANSACTION.
201 Queued
{
  "amount": 30000,
  "precision": 100,
  "transaction_id": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab",
  "status": "QUEUED",
  "skip_queue": false,
  "source": "bln_92e4b9b6-0b85-4ef4-87a2-682c31500d38",
  "reference": "ref_001adcfgf",
  "currency": "USD",
  "description": "Payment from Sarah",
  "destinations": [
    {
      "identifier": "bln_f2073f6b-905a-4e3e-b5a2-8d1b3dc2fb7f",
      "distribution": "20%",
      "transaction_id": "txn_59347177-aa7e-d8ad-9f4f-d09628b32ec3"
    },
    {
      "identifier": "bln_64c50fb5-32d5-4f78-9f4a-e8b01aaf025d",
      "distribution": "10000",
      "transaction_id": "txn_7ddc8d4f-3b77-4b7d-a37f-240216ab074c"
    },
    {
      "identifier": "bln_7d98dfe9-5c3e-4c9b-b96a-65f6d9f7b89b",
      "distribution": "left",
      "transaction_id": "txn_5aad04dd-ed53-4f77-9f01-4916d31fac5f"
    }
  ],
  "meta_data": {
    "QUEUED_PARENT_TRANSACTION": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab"
  }
}
3

Store the queued parent

Save meta_data.QUEUED_PARENT_TRANSACTION from the create response.Use this ID, not the per-leg IDs in destinations, when you commit, void, verify, or refund the split.
4

Commit or void the split

Call Update inflight with the queued parent ID. Blnk commits or voids every pending inflight leg in one request.
Update inflight
PUT /transactions/inflight/{queued_parent_transaction_id}
curl -X PUT "http://YOUR_BLNK_INSTANCE_URL/transactions/inflight/{queued_parent_transaction_id}" \
  -H "X-blnk-key: <api-key>" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "commit",
    "skip_queue": false
  }'
200 Queued
{
  "transaction_id": "txn_0b59f6e-6c4a-4efa-915c-526f77ef61ab",
  "status": "INFLIGHT",
  "queued": true
}
The worker creates an APPLIED or VOID child for each leg. Every child keeps the same meta_data.QUEUED_PARENT_TRANSACTION, so you can verify the whole split with webhooks or polling.

Error handling

Structured errors are available from Blnk Core 0.15.0 and later.
Split inflight commit and void use the same Update inflight endpoint as single inflight transactions. Blnk returns 400, 404, and 409 when the request ID or state is wrong.
CodeWhen it happens
GEN_CONFLICTA commit or void is already queued for the split parent (default queue path).
TXN_NOT_FOUNDThe ID in the path is not the root split or queued parent.
404 Not Found
{
  "error": "Transaction with ID 'txn_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94' not found",
  "error_detail": {
    "code": "TXN_NOT_FOUND",
    "message": "Transaction with ID 'txn_f482a1b3-6c2d-4e89-a17b-3d5e8f2a1c94' not found"
  }
}
To resolve the error:
CodeWhat to do
GEN_CONFLICTWait for the queued job to finish. See Verify with webhooks.
TXN_NOT_FOUNDUse the root transaction_id or QUEUED_PARENT_TRANSACTION from the create response, not a leg ID.
Other commit and void errors match Commit & void inflight — Error handling. See API error codes for the full catalogue.

Multiple sources

Send from several balances at once.

Multiple destinations

Send to several balances at once.

Commit & void inflight

Commit, void, and verify inflight transactions.

Refunding split transactions

Refund queued split parents together.

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.