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

ActionTokensSOL Equivalent
Single transaction10.00005 SOL
Bundle (2-5 tx)50.00025 SOL
TPU submission (fire-and-forget)20.0001 SOL
RPC proxy call10.00005 SOL
Transaction/bundle simulation1 per tx0.00005 SOL

Tiers

TierRequirementsPer-TX CostFeatures
FreeNo deposit0.00005 SOLLimited daily tokens, HTTP only
StandardAny deposit0.00005 SOLAll protocols, auto-region, streams
ProDefault tier0.0001 SOLAll features, priority routing
EnterpriseCustomCustomVolume 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

  1. Go to AllenHark ConsoleSlipstreamBilling
  2. Click Deposit SOL
  3. Send SOL to the displayed deposit address
  4. 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