Billing & Tokens
Slipstream uses a token-based billing system. Deposit SOL, receive tokens, and pay per action.
Token Rate
1 token = 50,000 lamports = 0.00005 SOL
1 SOL = 20,000 tokens
Pricing by Action
| Action | Tokens | SOL Equivalent |
|---|---|---|
| Single transaction | 1 | 0.00005 SOL |
| Bundle (2-5 tx) | 5 | 0.00025 SOL |
| TPU submission (fire-and-forget) | 2 | 0.0001 SOL |
| RPC proxy call | 1 | 0.00005 SOL |
| Transaction/bundle simulation | 1 per tx | 0.00005 SOL |
Tiers
| Tier | Requirements | Per-TX Cost | Features |
|---|---|---|---|
| Free | No deposit | 0.00005 SOL | Limited daily tokens, HTTP only |
| Standard | Any deposit | 0.00005 SOL | All protocols, auto-region, streams |
| Pro | Default tier | 0.0001 SOL | All features, priority routing |
| Enterprise | Custom | Custom | Volume discounts, dedicated workers, SLA |
Minimum deposit: $10 USD equivalent in SOL.
Checking Balance
Balance — Rust
1let balance = client.get_balance().await?;
2println!("Balance: {} SOL ({} tokens)",
3 balance.balance_sol, balance.balance_tokens);
4println!("Lamports: {}", balance.balance_lamports);
5println!("Grace remaining: {} tokens", balance.grace_remaining_tokens);
6println!("Tier: {:?}", balance.tier);Balance — TypeScript
1const balance = await client.getBalance();
2console.log(`Balance: ${balance.balanceSol} SOL (${balance.balanceTokens} tokens)`);
3console.log(`Tier: ${balance.tier}`);Balance — Python
1balance = await client.get_balance()
2print(f"Balance: {balance.balance_sol} SOL ({balance.balance_tokens} tokens)")
3print(f"Tier: {balance.tier}")Depositing SOL
Via Console
- Go to AllenHark Console → Slipstream → Billing
- Click Deposit SOL
- Send SOL to the displayed deposit address
- Tokens are credited automatically
Deposit Address via SDK — Rust
1let deposit = client.get_deposit_address().await?;
2println!("Send SOL to: {}", deposit.address);Deposit Address via SDK — TypeScript
1const deposit = await client.getDepositAddress();
2console.log("Send SOL to:", deposit.address);Deposit Address via SDK — Python
1deposit = await client.get_deposit_address()
2print(f"Send SOL to: {deposit.address}")Pending Deposits
Check if a deposit is being confirmed:
Pending — Rust
1let pending = client.get_pending_deposit().await?;
2println!("Pending: {:?}", pending);Pending — TypeScript
1const pending = await client.getPendingDeposit();
2console.log("Pending:", pending);Usage History
Usage — Rust
1use allenhark_slipstream::UsageHistoryOptions;
2
3let history = client.get_usage_history(UsageHistoryOptions::default()).await?;
4for entry in &history {
5 println!("{}: {} tokens", entry.date, entry.tokens_used);
6}Usage — TypeScript
1const history = await client.getUsageHistory();
2for (const entry of history) {
3 console.log(`${entry.date}: ${entry.tokensUsed} tokens`);
4}Usage — Python
1history = await client.get_usage_history()
2for entry in history:
3 print(f"{entry.date}: {entry.tokens_used} tokens")Deposit History
Deposits — Rust
1let deposits = client.get_deposit_history(DepositHistoryOptions::default()).await?;
2for entry in &deposits {
3 println!("{}: {} SOL → {} tokens", entry.date, entry.amount_sol, entry.tokens_credited);
4}Deposits — TypeScript
1const deposits = await client.getDepositHistory();
2for (const entry of deposits) {
3 console.log(`${entry.date}: ${entry.amountSol} SOL → ${entry.tokensCredited} tokens`);
4}Free Tier Usage
Free Tier — Rust
1let free = client.get_free_tier_usage().await?;
2println!("Used: {}/{} daily tokens", free.used, free.limit);Free Tier — TypeScript
1const free = await client.getFreeTierUsage();
2console.log(`Used: ${free.used}/${free.limit} daily tokens`);Next Steps
- Webhooks — Get notified of billing events
- Configuration — SDK settings
- Transactions — Submit transactions