
POST
Send SOL from a single source wallet to multiple destination wallets in one API call. Choose an amount mode to control how SOL is split and a transfer method to control how transactions are routed.
/funding/distributeQuick Start
Parameters
| Parameter | Type | Description |
|---|---|---|
sourcePrivateKey | string | Private key of the source wallet |
destinationPublicKeys | string[] | Public keys of the destination wallets. Required for all amount modes except CUSTOM |
destinations | object[] | Destinations with individual amounts. Required when amount.mode is CUSTOM. Replaces destinationPublicKeys |
amount | object | Amount configuration. See Amount Modes and properties below |
method | string | (Optional) Transfer method — DIRECT (default) or ISOLATED. See Transfer Methods. Coming soon: EXCHANGE, PRIVACY |
amount
| Property | Type | Description |
|---|---|---|
mode | string | FIXED, TOTAL, RANGE, or CUSTOM |
value | number | Amount in SOL. Required when mode is FIXED or TOTAL |
min | number | Minimum amount in SOL. Required when mode is RANGE |
max | number | Maximum amount in SOL. Required when mode is RANGE |
destinations[]
| Property | Type | Description |
|---|---|---|
publicKey | string | Destination wallet public key |
amount | number | SOL amount for this wallet |
Amount Modes
- FIXED
- TOTAL
- RANGE
- CUSTOM
Each destination receives the same amount.3 wallets × 0.5 SOL = 1.5 SOL total.
The API validates that the source wallet has sufficient SOL to cover the total distribution amount plus fees before starting.
Response
Partial Success
Some transfers may fail individually while others succeed. The response still returns"success": true with per-destination details. Failed transfers have status: "FAILED" and an error field with the reason.
When failures occur, a warnings array is included at the root of the response:
Each transfer is independent. There is no atomic guarantee — check the
status field for each destination.Errors
| Code | Message | Cause |
|---|---|---|
INVALID_WALLET | Invalid private key | Source private key is invalid |
INVALID_DESTINATION | Invalid public key | One of the destination public keys is invalid |
NO_DESTINATIONS | No destination wallets | No destinations provided |
INSUFFICIENT_BALANCE | Insufficient SOL | Source wallet does not have enough SOL |
INVALID_AMOUNT | Invalid amount configuration | Amount mode, value, or range is invalid |
INVALID_RANGE | min must be ≤ max | Range min exceeds max |
TOO_MANY_DESTINATIONS | Maximum 50 destinations per request | More than 50 destinations submitted |
METHOD_UNAVAILABLE | Method not available | EXCHANGE or PRIVACY not yet available |
RATE_LIMIT | Rate limit exceeded | Too many requests — see Rate Limits |
INTERNAL_ERROR | Internal server error | Retry or contact support |
Notes
- Maximum 50 destinations per request
- Transfers are batched in groups of 20 per transaction — all wallets in the same batch share the same signature. If a batch fails, all wallets in that batch are marked
FAILED - The source wallet pays all Solana transaction fees in addition to the distributed amounts
- Each transfer is independent — partial failures do not roll back successful transfers
What’s Next?
Withdraw
Consolidate SOL from many wallets to one
Transfer Methods
Compare DIRECT, ISOLATED, EXCHANGE, and PRIVACY PROTOCOL
Check Balance
Verify wallet balances before distributing
Create Wallets
Generate destination wallets in bulk