Skip to main content
Payment streaming replaces lump-sum or scheduled transfers with a continuous, per-second USDC flow. The sender deposits USDC upfront into the streaming contract on Arc testnet, and the contract releases funds to the recipient at a fixed rate every second. Recipients can withdraw their vested balance at any time — they never have to wait until the end of the stream — and senders can stop the stream early to reclaim unstreamed USDC.

Use Cases

Contractor & Freelancer Payroll

Pay contributors by the second for time worked — no invoicing cycles, no delayed wire transfers.

Subscription Billing

Let subscribers pay continuously as they consume your service, with automatic stop if they cancel.

Grant Disbursement

Release grant funds over a defined vesting period so recipients earn as they deliver milestones.

AI Agent Compensation

Pay autonomous agents for completed compute tasks in real time, tied to their on-chain wallet.

How Streaming Works

  1. Deposit — The sender locks a total USDC amount into the streaming contract.
  2. Stream — The contract releases funds to the recipient at ratePerSecond every second.
  3. Withdraw — The recipient calls withdraw at any time to claim their vested balance.
  4. Stop — The sender can stop the stream; unstreamed USDC is returned to the sender.

Creating a Stream

REST API Parameters

string
required
The wallet address of the sender. This wallet must hold sufficient USDC to cover totalDeposited.
string
required
The wallet address of the recipient. They will withdraw vested USDC to this address.
string
required
USDC released to the receiver per second, expressed as a 6-decimal string, e.g. "0.000193".
string
required
Total USDC to lock into the stream, e.g. "500.00". The stream ends naturally when this balance is exhausted.
string
URL to receive stream lifecycle events. See Webhook Events below.

Managing a Stream

Stop a Stream

The sender calls the stop endpoint to halt the flow. Unstreamed USDC is returned to the sender’s wallet.

Withdraw Vested Balance

The recipient withdraws all USDC that has vested since the stream started (or since their last withdrawal).

List Streams

Query active or historical streams by sender, receiver, or status.
The response includes live metrics computed at request time:
number
USDC already streamed to the receiver as of now.
number
USDC still locked in the contract.
number
Estimated seconds until the stream exhausts the deposit.
number
Percentage of the total deposit that has been streamed.

Stream Lifecycle

Webhook Events

Example Payload — stream.created

Minimum deposit and rate precision. USDC on Arc testnet uses 6 decimal places. Express all amounts and rates to at most 6 decimal places. The minimum meaningful ratePerSecond is 0.000001 USDC/s (1 micro-USDC per second). Rates with more than 6 decimal places are truncated by the contract.