On this page
- Superfluid (docs, 15 October 2026): tokens flow at a per-second rate from a Super Token balance; opening a stream takes a buffer deposit of 4 hours of flow on the mainnets its liquidation page lists, with fixed minimums on Ethereum mainnet.
- Fianto: plain USDC on Solana stays in the customer wallet until each due date; one charge per 30 or 365 days, within an on-chain cap, with four attempts if the wallet is short.
- A stream pays for exactly the time used. A per-period charge is a discrete payment you can match to an invoice line, a webhook and an access period.
What is the difference between streaming payments and subscriptions?
A streaming payment moves money continuously, second by second, while a subscription moves a fixed amount once per billing period. Superfluid's docs define the first in one sentence: "Money Streaming is a process where tokens are continuously transferred from a sender to a receiver at a defined per-second rate." A per-period subscription, in the on-chain sense used here, is a standing permission: the customer approves once, and the merchant collects one charge per period, never more than the cap the customer agreed to.
Fianto publishes this post and builds the second kind, so weigh it accordingly. It does not compete with Superfluid on the same chain: Superfluid runs on EVM networks, and Fianto bills only USDC on Solana. The useful question is which model fits what you sell. The wider set of ways to bill on a schedule, from invoice links to capped pulls, is laid out in how crypto recurring payments work.
How does a Superfluid stream work?
A Superfluid stream is opened once and then runs without further transactions. The docs put it plainly: "Creating a stream is a one-time action. The balance is dynamically calculated and does not require continuous transactions." Each account's balance is computed from its last change plus its net flow rate multiplied by the seconds since then.
Four parts of the design matter to a business:
- Super Tokens. Streams move Super Tokens, an extension of the ERC-20 standard. A plain stablecoin is wrapped first. The docs describe it in one line, "Deposit ERC20 tokens into the Wrapper Super Token contract to mint an equivalent amount of Super Tokens.", and their streaming examples use USDCx, the Super Token for USDC. The receiver unwraps to get the original token back.
- The buffer. Opening a stream sets aside a deposit, which the sender stands to lose if the stream is left open after their balance runs out. Superfluid's liquidation page lists a 4-hour deposit for Polygon, Ethereum mainnet, Gnosis Chain, Optimism and Arbitrum; on Ethereum mainnet a minimum applies instead when it is larger, 69 tokens for USDCx.
- Running dry. When the sender's balance reaches zero the stream turns critical, and the docs say: "The sender's balance is now zero, and the permissions on the stream now allow anyone to close it." The receiver is paid out of the buffer until someone does. "By leaving their streams open for too long, stream creators stand to lose this buffer."
- Networks. Superfluid's own network list names Ethereum, Base, Polygon, Optimism, Arbitrum One, Avalanche C, BNB Smart Chain, Gnosis Chain, Celo, Scroll and Arc among its mainnets. Solana is not on it.
Superfluid adds automation on top. Auto-Wrap tops up a sender's Super Token balance from their plain tokens when it runs low, and the Stream Scheduler can start and stop a stream on set dates. Superfluid describes itself as bringing streams to more than payroll: "Superfluid is a revolutionary asset streaming and distribution protocol bringing subscriptions, salaries, vesting, and rewards to DAOs and crypto-native businesses worldwide."
How does a per-period USDC subscription work on Solana?
A per-period subscription on Solana is a capped permission that the Solana Foundation's Subscriptions program enforces each period. With Fianto, the customer signs one transaction at checkout. It records a cap per period, the price plus the fees, names the wallets the money may go to, and pays the first period at once. From then on, Fianto asks the program to collect one charge per period, two minutes into each new period, and the program refuses any amount above the cap or any destination the plan does not name.
Nothing is wrapped, and nothing is handed to Fianto in advance. The customer pays in plain USDC, and the USDC stays in their own wallet until each due date. A monthly plan renews every 30 days and a yearly plan every 365 days; those are the only intervals. The mechanics of the permission are in Solana token delegation explained, and the product page for this kind of billing is Solana subscriptions. Why the plan is priced in USDC rather than SOL is in why price a subscription in USDC, not SOL.
What does a 30 USDC monthly plan look like under each model?
A 30.00 USDC monthly plan as a stream runs at 30 / 2,592,000 seconds, about 0.0000116 USDCx per second, which is 1.00 a day. As a Fianto subscription it is one 30.00 USDC charge every 30 days. Here is the same customer under both, with the figures computed from the documented rules:
| Moment | Superfluid stream | Fianto subscription |
|---|---|---|
| Day 0, start | Customer wraps USDC into USDCx and opens the stream; a buffer of 4 hours of flow, about 0.17 USDCx, is set aside (69 USDCx on Ethereum mainnet, where the minimum applies) | Customer signs once and pays 30.00 USDC plus a 0.01 USDC network fee today; they also pay rent in SOL, shown on the checkout |
| Day 10 | 10.00 USDCx has reached the merchant, second by second | Nothing moves; the customer has paid for days 0 to 30 |
| Customer cancels on day 10 | The stream stops; the merchant has 10.00 and the customer keeps the rest | Cancelled in the portal; the subscription runs to day 30, and nothing is returned unless the merchant refunds by hand |
| Wallet runs dry on day 18 instead | The stream turns critical; anyone may close it, and the buffer pays the merchant until then; the customer loses what is left of the buffer | Nothing happens until day 30 |
| Day 30, two minutes in | (only if still funded) the flow simply continues | Fianto collects 30.00 plus the fee; if the wallet is short, nothing is taken and the subscription is past due |
| After a failed charge | Not applicable: there is no charge to retry | Fianto tries again about one hour, six hours and one day after the due time; after the fourth failure the subscription ends |
The rent on the Fianto side is a Solana rule, not a fee. As of 15 October 2026 the subscription account holds about 0.00144 SOL, returned when the customer reclaims it after the subscription ends, and a wallet's first subscription also sets up an account of about 0.00119 SOL that is not returned. Solana is cutting rent in phases, so the checkout reads the live amount and shows it before the customer signs. The 0.01 USDC network fee is today's amount on plans created since 6 October 2026, and the customer, never the merchant, pays it. What happens during the retries is in failed renewals and retries.
Sell a monthly or yearly plan in plain USDC. The customer approves once; the merchant pays nothing.
See how a plan is billedWhich model is easier to account for?
Per-period charges are easier to account for, because each one is a discrete payment with its own transaction signature, amount and date. On Fianto each charge appears in the dashboard Payments list, exports to CSV, and sends your server a signed webhook: subscription. for the first period, subscription. for each later one, subscription. when a charge fails and subscription. at the end. Access can follow the events directly: extend by one period on a renewal, remove it on an end. The states behind those events are on the docs page Subscription lifecycle.
A stream has no such moments. Revenue accrues every second, and the balance is a formula until someone wraps, unwraps or transfers. That is exact for pay-as-you-go use, but it means your books need a rule for when streamed income is recognised, and an invoice for "30 days of service" has no single payment to point at. What to record for each USDC payment is covered in accounting for USDC revenue.
When is streaming the better choice?
Streaming is the better choice when value is delivered continuously and either side may stop at any moment. Pick Superfluid, or another streaming protocol, if:
- You pay salaries, contractor retainers or token vesting, where paying by the second is the point.
- You sell metered or pay-as-you-go access and want the customer charged for exactly the time used, with no proration. Paying per API request is a separate model, compared in x402 vs subscriptions for APIs.
- Your customers and treasury are on Ethereum, Base, Polygon, Optimism, Arbitrum or another network Superfluid lists, and they are comfortable wrapping tokens.
Per-period billing is the better choice when you sell a plan by the month or year, want a fixed price on a fixed date, and want the customer's money to stay plain USDC in their own wallet until it is due. Fianto's limits are real: USDC on Solana only, monthly and yearly intervals only, no usage-based billing, no free trials, and no renewal reminders sent to subscribers. If you need per-second or metered billing, Fianto cannot do it. Prepaid credits are the usual workaround, as in accepting USDC for an AI app, and a monthly retainer is a natural per-period plan, as in getting paid in USDC as a freelancer.
- Superfluid docs: Money streaming (read 15 October 2026)
- Superfluid docs: What is Superfluid (read 15 October 2026)
- Superfluid docs: Super Tokens overview (read 15 October 2026)
- Superfluid docs: Wrap and unwrap Super Tokens (read 15 October 2026)
- Superfluid docs: Liquidations and TOGA (read 15 October 2026)
- Superfluid docs: Auto-Wrap (read 15 October 2026)
- Superfluid docs: Stream Scheduler (read 15 October 2026)
- Superfluid protocol-monorepo: network metadata (read 15 October 2026)
- Solana: reduced rent (SIMD-0437)
- Solana Foundation: the Subscriptions program (source and README)