Payment streaming primitive · Built on Canton

Stream money continuously on Canton.

OpenFluid is the shared infrastructure Canton teams use to move money over time, without rebuilding streaming logic for every product.

Product surface
Example stream state
Demo state
StreamAgreement
Treasury to contractor
Active
Sender
Treasury
Recipient
Contractor
Rate
125 units / day
Buffer
14 days
Pause
Top up
Settle
Cancel
One stream state stays visible across the app, the operator, and support tools.
App state
Active

The product view reflects the same stream state the contract uses.

Ledger state
Active

The ledger and product UI are reading from the same source of truth.

Ops state
Ready

Operators can act without creating a separate state model.

Lifecycle actions
CreatePauseResumeTop upSettleCancel
One primitive

Create, pause, resume, top up, cancel, and settle one reusable stream.

Shared state

App, ledger, and ops read the same live stream status.

Built for Canton

Private-by-default contract logic stays close to the network.

Problem

Teams keep rebuilding the same payment plumbing

OpenFluid turns stream logic into one reusable protocol primitive instead of a custom feature for every payroll, billing, or grants app.

One contract model is easier to maintain than five one-off builds.
State drift
App UI
Active

Shows the stream as active and ready.

Ledger
Paused

The contract state has already changed.

Ops
Investigating

The team is checking logs and support tools.

Common failures
Repeated plumbing

Every product rebuilds the same stream lifecycle, read surface, and controls.

Ledger and UI drift

The app says active while the ledger is already paused.

Funding gaps

Top-ups land late and the stream runs dry.

Stale cancellations

A cancelled stream still shows up as live.

How it works

Define the stream once, then reuse it everywhere

Create a stream, let money flow, then settle on demand without recreating contract logic for every product.

Step 01
Wrap your asset

Make any CIP-56 asset streamable with StreamToken.

Define
Step 02
Define your flow

Use one contract model for payroll, subscriptions, grants, and vesting.

Flow
Step 03
Keep product state synced

Read live balances and actions without shadow state or manual reconciliation.

Settle
One stream model, reused across app flows and operator flows.
Use cases

Payment workflows OpenFluid supports

The same primitive covers payroll, subscriptions, grants, vesting, revenue sharing, and treasury-controlled release on one reusable rail.

Primary workflow

Payroll and contractor payouts

Launch payroll products on Canton in days, not months.

Talk to the team
DistributionPool

Pay teams or revenue-share groups from one treasury flow.

StreamAgreement

Start, pause, top up, settle, and cancel from one contract state.

Workflows

Subscriptions and recurring billing

Ship billing that follows live payment state, not invoice polling.

Read layer

Expose live balances, status, and lifecycle state to the product.

SDK

Create and manage streams from product code, not custom admin tools.

Workflows

Grants and vesting

Release funds on milestones or schedules without manual reconciliation.

ConditionalStream

Gate release on approvals or external signals.

StreamVault

Support cliffs, unlocks, and treasury-controlled release.

Protocol primitives

The contract surface behind OpenFluid

StreamToken, StreamAgreement, DistributionPool, ConditionalStream, StreamVault, and policy hooks give Canton builders a reusable streaming layer for payroll, billing, grants, vesting, and treasury release.

Daml is the contract language. CIP-56 is the asset standard that StreamToken makes streamable.

StreamAgreement

Core two-party contract for sender, recipient, asset, rate, buffer, and lifecycle actions.

Create / pause / resumeTop up / settleOperator state

StreamToken

CIP-56-compatible wrapper that makes a Canton asset streamable.

CIP-56 compatibleFlow-rate accountingLazy settlement

DistributionPool

One sender, many recipients for payroll, revenue share, and batch payout.

One-to-many streamingPool membership

ConditionalStream

Milestone-gated or oracle-conditioned release with programmable triggers.

Oracle thresholdsMilestone gates

StreamVault

Escrow-backed release for vesting, grants, and treasury-controlled unlocks.

Vesting periodsCliffs

Policy hooks

Optional allowlists, operator controls, and external checks for teams that need them.

AllowlistsOperator controls
Capabilities

Proof in the product

Payroll, subscriptions, and grants all use the same stream primitive. We can walk you through the workflow live.

Request a walkthrough
Why it matters
One flow model can serve payroll, billing, and disbursement.
Payroll

Launch compensation streams without shadow state

Subscriptions

Keep access aligned to live payment state

Grants

Release funds on milestones or approvals

Request a demo

See OpenFluid running on Canton

Come with a Canton use case and we’ll show you exactly how OpenFluid fits.

We keep the form simple and only ask for the basics.

We only use this to respond about OpenFluid.