Documentation Index
Fetch the complete documentation index at: https://docs.snack.money/llms.txt
Use this file to discover all available pages before exploring further.
The batch-send command allows you to send USDC to multiple users in a single operation. This is ideal for airdrops, bulk payments, or rewarding multiple contributors.
Syntax
snackmoney batch-send <input> [options]
The batch-send command supports multiple input formats for flexibility:
snackmoney batch-send <platform/user1:amount1,user2:amount2,...>
2. JSON File
snackmoney batch-send ./payments.json
snackmoney batch-send file:./payments.json
3. URL
snackmoney batch-send https://example.com/payments.json
4. Inline JSON
snackmoney batch-send '{"platform":"x","payments":[...]}'
Options
—network
Specify which blockchain network to use:
snackmoney batch-send input --network base
snackmoney batch-send input --network solana
Examples
Send to multiple users on the same platform:
# Solana network
snackmoney batch-send x/aeyakovenko:7¢,0xMert_:3¢,0xmesuthere:5¢ --network solana
# Base network
snackmoney batch-send x/MurrLincoln:2¢,kleffew94:9¢,jessepollak:4¢ --network base
# With domain extensions
snackmoney batch-send twitter.com/user1:1¢,user2:$0.5
# Farcaster users
snackmoney batch-send farcaster.xyz/toly:50¢,mesut:25¢
# GitHub users
snackmoney batch-send github/user1:$1,user2:$2,user3:$3
# Email addresses
snackmoney batch-send email/user1@example.com:$0.25,user2@example.com:$0.50
# Web domains
snackmoney batch-send web/site1.com:0.5,site2.com:1
Create a payments.json file:
{
"platform": "x",
"payments": [
{ "receiver": "aeyakovenko", "amount": "7¢" },
{ "receiver": "0xMert_", "amount": "3¢" },
{ "receiver": "0xmesuthere", "amount": "5¢" }
]
}
Then run:
snackmoney batch-send ./payments.json
Platform-specific examples:
X (Twitter) - payments-x.json:
{
"platform": "x",
"payments": [
{ "receiver": "user1", "amount": "1¢" },
{ "receiver": "user2", "amount": "$0.50" },
{ "receiver": "user3", "amount": "0.25" }
]
}
Farcaster - payments-farcaster.json:
{
"platform": "farcaster",
"payments": [
{ "receiver": "toly", "amount": "$1" },
{ "receiver": "mesut", "amount": "50¢" }
]
}
GitHub - payments-github.json:
{
"platform": "github",
"payments": [
{ "receiver": "octocat", "amount": "$5" },
{ "receiver": "torvalds", "amount": "$10" }
]
}
Email - payments-email.json:
{
"platform": "email",
"payments": [
{ "receiver": "user1@example.com", "amount": "$0.25" },
{ "receiver": "user2@example.com", "amount": "$0.50" }
]
}
Web - payments-web.json:
{
"platform": "web",
"payments": [
{ "receiver": "site1.com", "amount": "$0.50" },
{ "receiver": "site2.com", "amount": "$1" }
]
}
From URL
Host your payment file and reference it by URL:
snackmoney batch-send https://example.com/payments.json
snackmoney batch-send http://localhost:3000/team-rewards.json
Inline JSON
Pass JSON directly as a command argument:
snackmoney batch-send '{"platform":"x","payments":[{"receiver":"aeyakovenko","amount":"1¢"}]}'
| Platform | Format in JSON | Comma-separated Format |
|---|
| X (Twitter) | "platform": "x" | x/username:amount |
| Farcaster | "platform": "farcaster" | farcaster/username:amount |
| GitHub | "platform": "github" | github/username:amount |
| Email | "platform": "email" | email/address:amount |
| Web | "platform": "web" | web/domain:amount |
All the same amount formats from the send command work:
- Cents:
1¢, 50¢, 99¢
- Dollars:
$0.01, $0.50, $1
- Decimal:
0.01, 0.50, 1
Output
The command processes payments sequentially and shows progress:
🚀 Processing batch payment...
[1/3] Sending 0.07 USDC to @aeyakovenko on X...
✅ Success - txn: 0xabc...
[2/3] Sending 0.03 USDC to @0xMert_ on X...
✅ Success - txn: 0xdef...
[3/3] Sending 0.05 USDC to @0xmesuthere on X...
✅ Success - txn: 0xghi...
📊 Batch Summary:
Total payments: 3
Successful: 3
Failed: 0
Total sent: 0.15 USDC
Network: Solana
🧾 All receipts:
https://snack.money/x/aeyakovenko?txn=...
https://snack.money/x/0xMert_?txn=...
https://snack.money/x/0xmesuthere?txn=...
Use Cases
Airdrop Rewards
Distribute tokens to community members:
{
"platform": "x",
"payments": [
{ "receiver": "community_member1", "amount": "$5" },
{ "receiver": "community_member2", "amount": "$5" },
{ "receiver": "community_member3", "amount": "$5" }
]
}
Team Payments
Pay multiple team members:
{
"platform": "farcaster",
"payments": [
{ "receiver": "designer", "amount": "$100" },
{ "receiver": "developer", "amount": "$150" },
{ "receiver": "marketer", "amount": "$75" }
]
}
Open Source Contributions
Reward GitHub contributors:
{
"platform": "github",
"payments": [
{ "receiver": "contributor1", "amount": "$25" },
{ "receiver": "contributor2", "amount": "$50" },
{ "receiver": "contributor3", "amount": "$25" }
]
}
Contest Winners
Distribute prizes:
snackmoney batch-send x/winner1:$100,winner2:$50,winner3:$25
Prerequisites
-
Set private key:
export EVM_PRIVATE_KEY="0x..." # For Base
# OR
export SVM_PRIVATE_KEY="..." # For Solana
-
Sufficient USDC balance: Ensure your wallet has enough USDC for all payments plus network fees.
-
Valid recipients: All usernames must exist on the specified platform.
Error Handling
If a payment fails, the command continues with remaining payments:
[2/5] Sending 0.05 USDC to @invalid_user on X...
❌ Failed - User not found
[3/5] Sending 0.10 USDC to @valid_user on X...
✅ Success - txn: 0xabc...
The final summary shows success/failure counts.
Limits
- Minimum per payment: 0.01 USDC (1¢)
- Recommended batch size: Up to 100 payments per batch
- Rate limits: May apply for very large batches
Tips
- Test first: Start with a small batch to test your setup
- Check balance: Calculate total amount + fees before running
- Validate JSON: Ensure JSON files are properly formatted
- Save receipts: Keep the receipt URLs for records
- Use files: For large batches, JSON files are more manageable than comma-separated
- send - Send to a single user
- ai-agent - Use natural language for batch payments
Getting Help
snackmoney batch-send --help
Example Files
View example payment files on GitHub:
Additional Resources