Stellar Streams Protocol

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

Shippedstream + splits contracts, typed SDK, dashboard, 29 contract tests.
NextTestnet deployments, milestone escrow module, event indexer.
LaterMulti-token streams, Streams CLI, security audit.

Read the docs

Setup, contract interfaces, deployment, and the contribution guide live in the repository.

Open documentation