Transactions
Bulk Transactions
Handle bulk transactions in your Blnk Ledger.
POST
/
transactions
/
bulk
curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"atomic": true,
"inflight": false,
"run_async": false,
"skip_queue": false,
"transactions": [
{
"precise_amount": 35890,
"precision": 100,
"reference": "unique_reference_1",
"description": "Transaction description",
"currency": "USD",
"source": "@source_account",
"destination": "@destination_account",
"allow_overdraft": true
}
]
}'
curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"dry_run": true,
"skip_queue": false,
"transactions": [
{
"precise_amount": 45000,
"precision": 100,
"reference": "ref_payout_450",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "bln_dest-bal-001",
"description": "First payout"
},
{
"precise_amount": 10000,
"precision": 100,
"reference": "ref_payout_100",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "blnk_dest-bal-002",
"description": "Second payout"
}
]
}'
{
"batch_id": "bulk_c62f200b-905f-4983-a349-cadd279234aa",
"status": "applied",
"transaction_count": 4
}
{
"dry_run": true,
"would_apply": true,
"cumulative": false,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
},
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "40000",
"resulting_available": "40000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "10000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "10000",
"resulting_available": "10000",
"resulting_credit_balance": "10000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
],
"notes": [
"items are dispatched concurrently unless skip_queue is set, so each item is projected independently against current balances and real execution order is not guaranteed"
]
}
{
"dry_run": true,
"would_apply": false,
"cumulative": true,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100
},
{
"dry_run": true,
"would_apply": false,
"rejection": {
"code": "TXN_INSUFFICIENT_FUNDS",
"reason": "insufficient_funds",
"message": "insufficient funds in source balance"
},
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100
}
],
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "0",
"resulting_available": "0",
"resulting_credit_balance": "0",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
{
"error": "transactions cannot be empty",
"error_detail": {
"code": "TXN_BULK_EMPTY",
"message": "transactions cannot be empty"
}
}
{
"error": "too many transactions; max is 10000",
"error_detail": {
"code": "TXN_BULK_LIMIT_EXCEEDED",
"message": "too many transactions; max is 10000"
}
}
{
"error_detail": {
"code": "TXN_VALIDATION_ERROR",
"message": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both.",
"details": {
"index": 1
}
},
"errors": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both."
}
{
"batch_id": "bulk_305873c0-518a-470c-bf3a-bc3f3e0b562c",
"error": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded.",
"error_detail": {
"code": "TXN_DUPLICATE_REFERENCE",
"message": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded."
}
}
If you’re using the auto-provisioned
Enterprise Core instance included with your Production License deployment, set the base URL to: https://ENTERPRISE_PUBLIC_URL/core.If you’re connecting to a different Core instance, use the publicly accessible base URL for that instance instead.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: Scoped API keys and Secure your Blnk server.
Body
boolean
required
When
true, either all transactions succeed or all fail. When false, transactions are processed independently.boolean
required
When
true, transactions are created in INFLIGHT status and require a separate commit. When false, transactions are applied immediately.boolean
default:"false"
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.boolean
default:"false"
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.boolean
default:"false"
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.object[]
required
An array of transaction objects. Max number of transactions allowed is 10,000.
Sample transaction object
{
"precise_amount": 35890,
"precision": 100,
"reference": "unique_reference_1",
"description": "Transaction description",
"currency": "USD",
"source": "@source_account",
"destination": "@destination_account",
"allow_overdraft": true
}
Response
string
required
Identifier for the bulk batch. Use this value as
parent_transaction when searching for child transactions, or when committing or voiding an inflight batch.string
required
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.integer
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.
string
Human-readable status message. Included on the immediate response when
run_async is true (for example, confirming that background processing started).curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"atomic": true,
"inflight": false,
"run_async": false,
"skip_queue": false,
"transactions": [
{
"precise_amount": 35890,
"precision": 100,
"reference": "unique_reference_1",
"description": "Transaction description",
"currency": "USD",
"source": "@source_account",
"destination": "@destination_account",
"allow_overdraft": true
}
]
}'
curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"dry_run": true,
"skip_queue": false,
"transactions": [
{
"precise_amount": 45000,
"precision": 100,
"reference": "ref_payout_450",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "bln_dest-bal-001",
"description": "First payout"
},
{
"precise_amount": 10000,
"precision": 100,
"reference": "ref_payout_100",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "blnk_dest-bal-002",
"description": "Second payout"
}
]
}'
{
"batch_id": "bulk_c62f200b-905f-4983-a349-cadd279234aa",
"status": "applied",
"transaction_count": 4
}
{
"dry_run": true,
"would_apply": true,
"cumulative": false,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
},
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "40000",
"resulting_available": "40000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "10000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "10000",
"resulting_available": "10000",
"resulting_credit_balance": "10000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
],
"notes": [
"items are dispatched concurrently unless skip_queue is set, so each item is projected independently against current balances and real execution order is not guaranteed"
]
}
{
"dry_run": true,
"would_apply": false,
"cumulative": true,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100
},
{
"dry_run": true,
"would_apply": false,
"rejection": {
"code": "TXN_INSUFFICIENT_FUNDS",
"reason": "insufficient_funds",
"message": "insufficient funds in source balance"
},
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100
}
],
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "0",
"resulting_available": "0",
"resulting_credit_balance": "0",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
{
"error": "transactions cannot be empty",
"error_detail": {
"code": "TXN_BULK_EMPTY",
"message": "transactions cannot be empty"
}
}
{
"error": "too many transactions; max is 10000",
"error_detail": {
"code": "TXN_BULK_LIMIT_EXCEEDED",
"message": "too many transactions; max is 10000"
}
}
{
"error_detail": {
"code": "TXN_VALIDATION_ERROR",
"message": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both.",
"details": {
"index": 1
}
},
"errors": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both."
}
{
"batch_id": "bulk_305873c0-518a-470c-bf3a-bc3f3e0b562c",
"error": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded.",
"error_detail": {
"code": "TXN_DUPLICATE_REFERENCE",
"message": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded."
}
}
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.Was this page helpful?
⌘I
curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"atomic": true,
"inflight": false,
"run_async": false,
"skip_queue": false,
"transactions": [
{
"precise_amount": 35890,
"precision": 100,
"reference": "unique_reference_1",
"description": "Transaction description",
"currency": "USD",
"source": "@source_account",
"destination": "@destination_account",
"allow_overdraft": true
}
]
}'
curl -X POST "http://localhost:5001/transactions/bulk" \
-H "X-blnk-key: <api-key>" \
-H "Content-Type: application/json" \
-d '{
"dry_run": true,
"skip_queue": false,
"transactions": [
{
"precise_amount": 45000,
"precision": 100,
"reference": "ref_payout_450",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "bln_dest-bal-001",
"description": "First payout"
},
{
"precise_amount": 10000,
"precision": 100,
"reference": "ref_payout_100",
"currency": "USD",
"source": "bln_source-bal-001",
"destination": "blnk_dest-bal-002",
"description": "Second payout"
}
]
}'
{
"batch_id": "bulk_c62f200b-905f-4983-a349-cadd279234aa",
"status": "applied",
"transaction_count": 4
}
{
"dry_run": true,
"would_apply": true,
"cumulative": false,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
},
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100,
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "40000",
"resulting_available": "40000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "10000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "10000",
"resulting_available": "10000",
"resulting_credit_balance": "10000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
],
"notes": [
"items are dispatched concurrently unless skip_queue is set, so each item is projected independently against current balances and real execution order is not guaranteed"
]
}
{
"dry_run": true,
"would_apply": false,
"cumulative": true,
"atomic": false,
"results": [
{
"dry_run": true,
"would_apply": true,
"status": "APPLIED",
"reference": "ref_payout_450",
"currency": "USD",
"amount": 450,
"precise_amount": "45000",
"precision": 100
},
{
"dry_run": true,
"would_apply": false,
"rejection": {
"code": "TXN_INSUFFICIENT_FUNDS",
"reason": "insufficient_funds",
"message": "insufficient funds in source balance"
},
"reference": "ref_payout_100",
"currency": "USD",
"amount": 100,
"precise_amount": "10000",
"precision": 100
}
],
"balances": [
{
"balance_id": "bln_source-bal-001",
"role": "source",
"currency": "USD",
"current_balance": "50000",
"current_available": "50000",
"current_credit_balance": "50000",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "5000",
"resulting_available": "5000",
"resulting_credit_balance": "50000",
"resulting_debit_balance": "45000",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "bln_dest-bal-001",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "45000",
"resulting_available": "45000",
"resulting_credit_balance": "45000",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
},
{
"balance_id": "blnk_dest-bal-002",
"role": "destination",
"currency": "USD",
"current_balance": "0",
"current_available": "0",
"current_credit_balance": "0",
"current_debit_balance": "0",
"current_inflight_debit_balance": "0",
"current_inflight_credit_balance": "0",
"resulting_balance": "0",
"resulting_available": "0",
"resulting_credit_balance": "0",
"resulting_debit_balance": "0",
"resulting_inflight_debit_balance": "0",
"resulting_inflight_credit_balance": "0"
}
]
}
{
"error": "transactions cannot be empty",
"error_detail": {
"code": "TXN_BULK_EMPTY",
"message": "transactions cannot be empty"
}
}
{
"error": "too many transactions; max is 10000",
"error_detail": {
"code": "TXN_BULK_LIMIT_EXCEEDED",
"message": "too many transactions; max is 10000"
}
}
{
"error_detail": {
"code": "TXN_VALIDATION_ERROR",
"message": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both.",
"details": {
"index": 1
}
},
"errors": "transactions[1]: currency: cannot be blank; destination: either destination or destinations is required, not both."
}
{
"batch_id": "bulk_305873c0-518a-470c-bf3a-bc3f3e0b562c",
"error": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded.",
"error_detail": {
"code": "TXN_DUPLICATE_REFERENCE",
"message": "failed to queue transaction 2 (Reference: sqdup-17372-existing, Source: bln_b4819533-9570-4770-a1a0-25c191da0557, Destination: bln_34111155-4015-4e84-bf7c-13a60794bf0b, Amount: 4.00): transaction validation failed: reference sqdup-17372-existing has already been used. All transactions in this batch have been refunded."
}
}