1. Docs
  2. Products
  3. Payment streams

Products

Payment streams

Fund continuous payroll or service payments with clear claim, cancellation, and cost rules.

Revision 66 min read
On this page
  1. When to use it
  2. Before you start
  3. Create a stream or payroll batch
  4. Worked stream example
  5. Fees and costs
  6. Taxes, withholding, and payroll records
  7. Claim accrued value
  8. Cancellation rules
  9. Common problems

Payment streams lock one recipient's complete allocation at creation and make it claimable linearly between immutable UTC start and end timestamps. Payroll mode creates one independent stream and vault for every employee or service provider.

Payment stream creation form with token, recipient, amount, dates, and cancellation policy
Fig. 01Payment stream creation form with token, recipient, amount, dates, and cancellation policyFull size

When to use it#

Use payment streams for:

  • salaries or contractor payments accruing continuously;
  • grants paid over a service period;
  • one-recipient agreements with optional creator cancellation; or
  • allocations where the recipient should claim accrued value at convenient intervals.

Use multi-send for immediate payment, token locks for one fixed release date, or vesting for cliff and stepped schedules.

Before you start#

The creator needs the token metadata address, full stream allocation, recipient address, future UTC start and end times, and enough SUPRA for network gas. Choose the cancellation policy carefully: it cannot be changed after creation.

For payroll, prepare one address,amount row per recipient. Each row becomes a separate transaction, stream object, and vault—not one pooled payroll contract.

Create a stream or payroll batch#

  1. Open Payroll and payment streams (Create > Payroll stream in the dApp sidebar) and connect StarKey.
  2. Enter the Token metadata address of a standard, non-dispatchable Fungible Asset and confirm the verified token.
  3. Add one address,amount row per recipient in Recipients and stream totals, or upload a file. Duplicate recipients are rejected.
  4. Set Streams start (UTC) and Streams end (UTC) with the UTC date-time picker; the end can also be set as a duration from the start. The start needs at least two minutes of lead time plus one minute per stream, so every transaction can be signed before streaming begins.
  5. Leave Allow creator cancellation of unaccrued tokens off for non-cancellable streams, or turn it on explicitly.
  6. Select Review payroll and check the total allocation, token, recipients, transaction count, start, end, duration, combined accrual, each per-recipient stream total and daily rate, and the cancellation policy.
  7. Select Create followed by the stream count and sign each stream transaction in StarKey.
  8. Wait for every matching StreamCreated event and save each stream object address and hash.

The dApp journals confirmed payroll transactions. If a later row fails or confirmation is interrupted, Resume stream continues from the unfinished row and Recheck stream reconciles a submitted transaction, without recreating already verified streams. Always reconcile hashes before retrying.

Worked stream example#

An employer prepares this illustrative stream:

FieldExample value
TokenExample Payroll Token (EXR)
RecipientAlice's Supra wallet address
Total allocation3,000 EXR
StartDay 0 at 09:00 UTC
EndDay 30 at 09:00 UTC
Creator cancellationEnabled

The full 3,000 EXR enters Alice's isolated stream vault when the creation transaction succeeds. Tokens do not arrive automatically every second; the claimable amount grows on-chain and Alice submits a claim when she wants to receive it.

TimeWhat happensApproximate accounting
Day 0Stream starts0 EXR claimable
Day 10Alice claims1,000 EXR paid; 2,000 EXR remains accounted in the vault
Day 15Employer cancels500 EXR remains claimable by Alice; 1,500 EXR returns to the employer
After cancellationAlice makes her final claim500 EXR paid; accounted vault balance becomes zero

Actual results use whole token base units and exact on-chain timestamps, so an intermediate value may be slightly lower than the human-readable estimate. Without cancellation, Alice can claim the exact final remainder at day 30, including any integer-rounding dust.

Fees and costs#

ActionTrust Stack protocol feeWho paysOther cost
Create one streamNoneNobodyCreator supplies full allocation and pays network gas
Claim accrued valueNoneBeneficiarySupra network gas per claim
Cancel a cancellable streamNoneCreatorSupra network gas
Sweep accidental surplusNoneTransaction signerSupra network gas
Read a streamNoneNobodyNone

Payroll with ten recipients creates ten on-chain transactions, so it requires ten separate gas payments and may require ten wallet approvals. Claiming more frequently does not change a protocol fee—there is none—but it does create more network-gas transactions. See Fee governance.

Taxes, withholding, and payroll records#

Trust Stack is a token-streaming tool, not a payroll processor or tax service. It does not:

  • decide whether a payment is salary, contractor income, a grant, or another legal category;
  • calculate income tax, payroll tax, social contributions, VAT, or other withholding;
  • distinguish a gross amount from a net amount;
  • convert the streamed token amount to a fiat value;
  • send withheld value to a tax authority; or
  • prepare tax returns, payslips, or regulatory reports.

Whether stream creation, continuous accrual, a claim, or cancellation has a tax consequence depends on the parties, token, agreement, and applicable jurisdiction. Claim time and economic accrual time can also be treated differently. Obtain advice for every jurisdiction involved before funding a production payroll stream.

Before creating a payroll stream, decide and document off-chain:

  1. the worker or supplier classification and governing jurisdiction;
  2. whether the entered stream amount is gross or net under the agreement;
  3. the approved token-to-fiat valuation source and timestamp policy;
  4. who calculates, withholds, remits, and reports each required amount; and
  5. how cancellations, refunds, gas costs, and token-price changes will be recorded.

Keep the legal identity-to-wallet mapping in a private payroll system. For each stream, retain the token metadata address, beneficiary address, total allocation, start and end timestamps, cancellation policy, stream vault address, transaction hashes, claim and cancellation events, token amounts, contemporaneous fiat valuations, gas paid, and any separately remitted withholding. Never put names, tax identifiers, bank details, or confidential payroll files in public on-chain fields.

Claim accrued value#

Payment stream management workspace for verifying and claiming a stream
Fig. 02Payment stream management workspace for verifying and claiming a streamFull size
  1. Open Manage payment stream (Manage & claim > Stream claims in the dApp sidebar), or select Claim on the stream in My positions.
  2. Enter the Payment stream vault address emitted by StreamCreated and load authoritative on-chain state.
  3. Verify the total stream allocation, accrued, claimable-now, and claimed amounts, the vault balance, beneficiary, creator, start, end, and cancellation policy.
  4. Connect the beneficiary wallet.
  5. Select Claim followed by the claimable amount, sign in StarKey, and wait for the matching event and updated state.

Each claim transfers cumulative accrual minus prior gross claims. Claiming before any value has accrued, from another wallet, or after all earned value has been claimed is rejected.

Cancellation rules#

Cancellation is available only when the creator enabled it at creation. The creator connects on the same management page and selects Cancel stream:

  • only the immutable creator can cancel;
  • cancellation is terminal and cannot be repeated;
  • accrued, unclaimed value remains in the vault for the beneficiary;
  • only future, unaccrued value is refunded to the creator;
  • a completed stream cannot be canceled; and
  • the final beneficiary claim should reduce the accounted vault balance to zero.

A non-cancellable stream has no creator recovery path.

Common problems#

  • Start time rejected: allow enough future lead time for review and wallet signing.
  • Insufficient balance: the complete remaining payroll total is checked again before every row.
  • Multiple wallet prompts: each employee stream is an independent transaction.
  • Nothing claimable: no new value has accrued since the previous claim or cancellation.
  • Cancel unavailable: the stream is non-cancellable, completed, already canceled, or the wrong wallet is connected.
  • Uncertain payroll progress: use the recorded hashes and resume flow instead of recreating the whole batch.