Learn how transactions are recorded and processed in Blnk
reference
for every transaction. This reference serves as a transaction identifier, preventing duplicate processing and ensuring consistent outcomes.Field | Description | Required | Type |
---|---|---|---|
amount | The transaction amount. | Yes | float |
reference | Your unique reference to ensure idempotency. | Yes | string |
currency | Short code for your asset class. See also: Asset classes | Yes | string |
precision | Precision for the currency/asset passed. See also: Precision | No | int64 |
source | Sender’s balance ID | Yes | string |
destination | Recipient’s balance ID. | Yes | string |
description | Description or narration of the transaction. | No | string |
meta_data | Custom data associated with the transaction | No | object |
meta_data
object is encouraged; it provides you with 360-degree insights about each transaction record. Examples of data you can pass include sender_name
, account_number
, bank_name
, receiver_name
, payment_id
, ip_address
, location
, payment_method
, etc.QUEUED
. To verify your transaction status, you have two options:
skip_queue: true
, transactions are processed immediately and you can verify them from the direct response. Learn more about skip queue.
INFLIGHT
, APPLIED
, or REJECTED
), allowing you to confirm the transaction result without waiting for webhooks or additional API calls.
skip_queue: true
, you may encounter lock errors if multiple transactions are processed simultaneously on the same balance. Learn how to handle these scenarios in our Handling Hot Balances guide.reference
matches an existing reference
in your ledger. Blnk requires unique reference
values per transaction. Options are timestamps (e.g. UNIX timestamp), random string or UUID (e.g. ref_e55c4f33-bff7-4c30-9b9f-5d2d10a29b7a
), or a business identifier like an order_id
.apply_overdraft
instead of allow_overdraft
.source
balance has insufficient funds, Bink automatically handles this scenario to maintain ledger integrity. Blnk:
QUEUED
→ REJECTED
). Learn more about transaction lifecycle.reference
or parent_transaction
) to know if the transaction was successful or rejected.transaction.rejected
webhook, you can implement a preemptive available balance check in your workflow. Here’s how:
First, query the balance of the sender using: