ON-CHAIN TREASURY · SOLANA

Put your treasury
on a rail.

Open an on-chain SOL vault, fund it, and let your backend pay out to any address — through delegated operator keys that never touch your admin wallet.

Launch app →How it works
✓ Many treasuries per wallet✓ Single & batch payouts✓ API-ready
PAYOUT RAILLIVE
VAULT · TREASURY #1042
12.40 SOL
◆ 0.05
7xQ…k2 · winner0.049
9aB…m1 · referral0.098
+10 players · batch2.058
signed by operator keyfee 2% · on-chain
10
RECIPIENTS / BATCH
5
OPERATOR KEYS / TREASURY
TREASURIES / WALLET
HOW IT WORKS

From wallet to automated payouts.

Four moves. No custodian, no admin key on your server.

1

Connect & create

Connect a wallet and open a treasury. You're the admin. Open as many as you need.

2

Fund the vault

Deposit SOL into the treasury vault. Anyone can top it up, anytime.

3

Delegate operators

Authorize backend keys so your server pays out — without ever touching your admin key.

4

Pay out

Send single or batched payouts to any address — from the app or your own code.

BUILT FOR GAME ECONOMIES

A treasury that runs itself.

01

Admin + operators

One admin owns each treasury and delegates up to five operator keys for hands-off, automated payouts.

02

Batch payouts

Reward up to ten players in a single transaction. One signature, many drops.

03

API-ready SDK

A TypeScript client mirrors every instruction — wire payouts straight into your game backend.

04

Pause & transfer

Freeze payouts in one click or hand admin to a new wallet. The treasury address never changes.

05

Transparent fee

A flat protocol fee is taken per payout, on-chain and predictable. No hidden spread.

06

PDA-secured vaults

Funds live in program-derived vaults. Only authorized signers can move a single lamport.

SDK / AUTOMATION

Wire payouts into
your backend.

Your server holds only a delegated operator key. The admin registers it once — then your code signs payout and batchPayout with zero admin exposure.

Open the dashboard →
payout.ts
import { TreasuryClient } from "droprail";
const rail = TreasuryClient.fromKeypair(conn, operator);
await rail.payout(treasury, winner, 50_000_000); // 0.05 SOL

Spin up your first treasury.

Live on Solana. Connect a wallet, pick mainnet or devnet, and run the full flow in under a minute.

Launch app →