Programmable payments on Stellar
Continuous payment streams, linear vesting with cliffs, and proportional payment splits — implemented as audited-ready Soroban contracts with a typed SDK and an open dashboard.
What the protocol does
Continuous streams
Lock tokens once and let them vest by the ledger. Recipients withdraw whatever has vested, whenever they want.
Cliffs & vesting
Add a cliff for milestone-based grants, salaries, or token unlocks. Vesting is linear between start and end.
Payment splits
Route a payment to many recipients in proportional shares in a single transaction, with dust handling built in.
Cancel-safe
Cancelling refunds the unvested balance to the sender while the recipient keeps everything already vested.
A typed SDK
The @stellar-starter-kit/sdk package wraps the `stream` contract with a fully typed client. Reads simulate against Soroban RPC; writes are prepared, signed by a connected wallet, and polled to completion.
- →
createStream,withdraw,cancel - →
getStream,claimable,vested - → Vesting math helpers in
@stellar-starter-kit/utils
import { StreamsClient } from '@stellar-starter-kit/sdk';
const client = new StreamsClient({
contractId: STREAM_CONTRACT_ID,
rpcUrl: 'https://soroban-testnet.stellar.org',
networkPassphrase: 'Test SDF Network ; September 2015',
publicKey: address,
signTransaction,
});
const id = await client.createStream({
sender: address,
recipient,
token: XLM_TOKEN,
amount: '1000000000', // 100 XLM in stroops
startTime: now,
endTime: now + 30 * 86_400,
cliffTime: now,
});Roadmap
Read the docs
Setup, contract interfaces, deployment, and the contribution guide live in the repository.
Open documentation