Overview
Solana Batched transactions let you send an SOL or SPL tokens to many recipients in a single, atomic on-chain transaction. Instead of submitting one transaction per recipient, you pass multiple entries in the destinations array of the standard createTransaction API call, the same pattern used by UTXO Batched transactions. Consolidating multiple transfers into one on-chain transaction significantly reduces fees.
This is especially impactful for rebalancing, payouts, and high-volume distribution flows.
Key benefits
- Atomicity: all transfers in the batch succeed together or the entire transaction fails, so you never end up with a partially completed payout run.
- Lower fees: consolidating multiple transfers into one transaction reduces the total fee compared with sending one transaction per-recipient.
- Works with SOL and SPL tokens.
- Works with both direct and gasless transactions: fees can be paid by the source vault or sponsored through a relay vault.
Prerequisites
Before you can send a Batched transaction, make sure the following are in place:
- Your source vault holds a sufficient balance of the SOL or SPL tokens you want to send.
- Your Policy covers outgoing transfers from the source vault.
- If you want a different vault to pay the gas fees for the source, enable Solana Gasless, select the local relay vault and make sure it is funded with SOL.
Current limitations
- API only: there is no Console UI for building or submitting batches yet.
- Up to 7 destinations per-batch if all of them require an Associated Token Account (ATA) to be created.
- Up to 16 destinations per batch if none of them require ATA creation.
- These limits are expected to increase following the upcoming Solana Alpenglow upgrade.
How to send a Batched transaction
Use the standard create transaction endpoint and provide a destinations array instead of a single destination.
Endpoint
POST /v1/transactions
Request body
{
"operation": "TRANSFER",
"assetId": "SOL",
"source": {
"type": "VAULT_ACCOUNT",
"id": "1"
},
"destinations": [
{
"amount": "1.00",
"destination": {
"type": "VAULT_ACCOUNT",
"id": "2"
}
},
{
"amount": "1.00",
"destination": {
"type": "VAULT_ACCOUNT",
"id": "3"
}
},
{
"amount": "1.00",
"destination": {
"type": "VAULT_ACCOUNT",
"id": "4"
}
}
]
}
Frequently asked questions
What happens if one transfer in the batch fails?
The entire transaction fails. Solana transactions are atomic, so if any single transfer cannot complete, none of the transfers execute and no funds move. You can then correct the issue and resubmit.
Can I send both SOL and SPL tokens?
Yes. The feature supports both SOL and SPL tokens.
What is an ATA, and why does it affect the destination limit?
An Associated Token Account (ATA) is the account that holds a specific SPL token for a wallet. If a recipient does not already have an ATA for the token you are sending, one must be created as part of the transaction, which uses more of the transaction size budget. That is why a batch where every recipient needs an ATA is capped lower (up to 7 destinations) than a batch where no recipient needs one (up to 16 destinations).
Will the destination limits increase?
Yes. The limits are expected to increase following the upcoming Solana Alpenglow upgrade.
Who pays the fee?
By default, the source vault pays the transaction fee. You can also have a different relay vault pay the fee by enabling Solana Gasless in the workspace.
Can I see these transactions in the Console?
Yes. They appear under a transaction history labeled Multi-destination.