Start building
in an afternoon.
Private payments, swaps and yield on Base and Robinhood Chain, with one SDK. Your users never hold gas, and you earn on every transaction.
$ npm install @senddy/client @senddy/core viemimport {
createSenddyClient, SHARED_CONTRACTS, V3_CONTRACTS, toUSDC,
} from '@senddy/client'
const senddy = createSenddyClient({
publicClient,
walletClient,
chainId: 8453,
pool: V3_CONTRACTS.Pool,
usdc: SHARED_CONTRACTS.USDC,
subgraphUrl: V3_CONTRACTS.Subgraph[0],
apiUrl: V3_CONTRACTS.ApiEndpoint,
apiKey: process.env.SENDDY_API_KEY,
})
await senddy.init()
// One signature in, no gas
await senddy.deposit(toUSDC('25'))
// Private: no amount, no names onchain
await senddy.transfer('senddy1…', toUSDC('10'), { memo: 'Dinner' })Your users can move money in and out on any of these networks.
11 networks, one private balance.
BaseBase. Deposit, withdraw and hold privately
EthereumEthereum. Deposit and withdraw USDCSolanaSolana. Deposit and withdraw USDC
ArbitrumArbitrum. Deposit and withdraw USDC
OptimismOptimism. Deposit and withdraw USDC
PolygonPolygon. Deposit and withdraw USDC
BNB ChainBNB Chain. Deposit and withdraw USDC
AvalancheAvalanche. Deposit and withdraw USDCHyperliquidHyperliquid. Fund and withdraw a trading account
LighterLighter. Withdraw to a trading account
Robinhood ChainRobinhood Chain. Deposit, withdraw, swap and hold privately
What are you
building?
Every guide starts from the job, not the protocol. Pick yours and ship it.
Choose
your integration
Three typed packages and an HTTP API. Start at the level that matches how much of the protocol you want to touch.
Keys, notes, Merkle cache and proof witnesses. The crypto layer.
import { deriveKeysFromSeed, encodeSenddyAddress } from '@senddy/core'
// Spending keys are derived locally and never leave the device
const keys = deriveKeysFromSeed(seed) // one seed per identity
// The address you share; balances live in private notes
const address = encodeSenddyAddress(keys.viewPub)Transfers, swaps, deposits and withdrawals orchestrated over viem.
import { createSenddyClient } from '@senddy/client'
import { ROBINHOOD_CONTRACTS as RH } from '@senddy/core'
const senddy = createSenddyClient({
publicClient, walletClient, assets, sessionToken,
chainId: RH.chainId,
pool: RH.Pool,
subgraphUrl: RH.Subgraph[0],
apiUrl: RH.ApiUrl,
})
await senddy.init()
// Quote includes every fee, yours too
const quote = await senddy.quoteSwap(HOODS, RH.USDG, amount)
// Private swap: balance hidden before and after
await senddy.swap(HOODS, RH.USDG, amount, { toleranceBps: 100 })Headless client for servers and AI agents. Seed-based keys.
import { createSenddyAgent, toUSDC } from '@senddy/node'
const agent = createSenddyAgent({
seed, // the agent's own keys, from your secret store
apiKey: process.env.SENDDY_API_KEY!,
})
await agent.init()
await agent.transfer('senddy1…', toUSDC('12.50'), { memo: 'Invoice 1042' })Attestation, relaying, swap quotes and bridging over HTTP.
$ curl https://api-rh.senddy.com/swap/quote \
-H "X-API-Key: $SENDDY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "token_in": "0x…", "token_out": "0x…",
"shares_in": "12500000000", "tolerance_bps": 100 }'
# Route, quoted output, floor and feesFree to build on.
You earn too.
Senddy takes a small fee on each operation, and nothing else. Add your own fee on transfers, swaps, deposits and withdrawals, and it's paid straight to the address you choose.
- No plans
- No monthly fee
- No minimums
- Gas covered for your users
| Operation | SenddySenddy. What Senddy takes on each operation. | You (optional, on top) (optional)You. Your optional fee on top, paid to your sink address. |
|---|---|---|
| Private transfer | ~$0.05 flat | Flat and/or % |
| Private swap | 0.15% | Flat and/or % |
| Deposit | ~$0.05 flat | Flat and/or % |
| Withdraw | ~$0.05 flat | Flat and/or % |
One rule shape for every fee: fee = flat + amount × bps / 10,000, either part may be zero. Set it per asset and per operation; your fees go to a sink address you choose, per asset.
Fee rules
Set once. Paid to you on every swap.
Need higher rate limits or a dedicated setup? Talk to us. Full pricing details
Builder questions
Your users can deposit and withdraw on Base, Ethereum, Solana, Arbitrum, Optimism, Polygon, BNB Chain, Avalanche, Hyperliquid and Robinhood Chain, and withdraw to Lighter. Private balances are held on Base and Robinhood Chain, and private swaps are live on Robinhood Chain, where HOODS runs on them. The SDK takes a chain ID, so one integration covers either.
Start building
today
Free for everyone. No plans, no card, no minimums.