Transactions
Scheduling Transactions
Run a transaction at a later time.
Blnk supports scheduling a transaction for a later specified date. This can be useful for both one-time or recurring transactions that need to automatically happen at a certain date in the future.
Scheduling a transaction
Using the API
To schedule a transaction, include the scheduled_for field in your request body when calling the record-transaction endpoint.
curl -X POST "http://YOUR_BLNK_INSTANCE_URL/transactions" \
-H "X-Blnk-Key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"precise_amount": 10000000,
"precision": 100,
"reference": "ref",
"currency": "USD",
"source": "bln_28edb3e5-c168-4127-a1c4-16274e7a28d3",
"destination": "@fees",
"scheduled_for": "2024-12-21T01:36:46+01:00",
"meta_data": {
"sender_name": "John Doe",
"sender_account": "00000000000"
}
}'const response = await blnk.Transactions.create({
precise_amount: 10000000,
precision: 100,
reference: 'ref',
currency: 'USD',
source: 'bln_28edb3e5-c168-4127-a1c4-16274e7a28d3',
destination: '@fees',
scheduled_for: '2024-12-21T01:36:46+01:00',
meta_data: {
sender_name: 'John Doe',
sender_account: '00000000000',
},
});scheduledFor, _ := time.Parse(time.RFC3339, "2024-12-21T01:36:46+01:00")
transaction, _, _ := client.Transaction.Create(blnkgo.CreateTransactionRequest{
ParentTransaction: blnkgo.ParentTransaction{
PreciseAmount: big.NewInt(10000000),
Precision: 100,
Reference: "ref",
Currency: "USD",
Source: "bln_28edb3e5-c168-4127-a1c4-16274e7a28d3",
Destination: "@fees",
MetaData: blnkgo.MetaData{
"sender_name": "John Doe",
"sender_account": "00000000000",
},
},
ScheduledFor: &scheduledFor,
})response = blnk.transactions.create({
"precise_amount": 10000000,
"precision": 100,
"reference": "ref",
"currency": "USD",
"source": "bln_28edb3e5-c168-4127-a1c4-16274e7a28d3",
"destination": "@fees",
"scheduled_for": "2024-12-21T01:36:46+01:00",
"meta_data": {
"sender_name": "John Doe",
"sender_account": "00000000000",
},
})ApiResponse<JsonNode> response = blnk.transactions().create(
CreateTransactions.create()
.preciseAmount(10000000)
.precision(100)
.reference("ref")
.currency("USD")
.source("bln_28edb3e5-c168-4127-a1c4-16274e7a28d3")
.destination("@fees")
.scheduledFor("2024-12-21T01:36:46+01:00")
.metaData(Map.of(
"sender_name", "John Doe",
"sender_account", "00000000000"
)));{
"id": "txn_6164573b-6cc8-45a4-ad2e-7b4ba6a60f7d",
"source": "bln_ebcd230f-6265-4d4a-a4ca-45974c47f746",
"destination": "bln_28edb3e5-c168-4127-a1c4-16274e7a28d3",
"reference": "ref",
"precise_amount": 10000000,
"precision": 100,
"precise_amount": 10000000,
"currency": "USD",
"status": "QUEUED",
"created_at": "2024-12-21T01:36:46.997063436Z",
"scheduled_for": "2024-12-21T01:36:46+01:00",
"meta_data": {
"sender_name": "John Doe",
"sender_account": "00000000000"
}
}
Blnk accepts and adds the transaction to its queue. Once the scheduled time is reached, the transaction gets applied and you receive a notification via the transaction.applied webhook event.
Using the Dashboard
Turn on Schedule transaction before you create the transaction, set the date and time, then click Create transaction.

Scheduled transactions show with status SCHEDULED until that time. Blnk then processes them.
Canceling a scheduled transaction
To cancel a scheduled transaction on your ledger, schedule a new transaction for a few seconds after the original scheduled transaction.
The destination balance of the original transaction becomes the source, and the original source becomes the destination. This way, the transaction is canceled on your ledger.