Subscriptions on Solana: the program, the fees, the wallets.
Solana has a public Subscriptions program, published by the Solana Foundation in 2026, that lets a customer approve recurring payments once and lets a merchant collect within a cap. Fianto runs the merchant side of it: the plan, the hosted checkout, the collection on each due date, the retries, the webhooks and the dashboard. The program does the enforcing.
Why subscriptions work on Solana
Two things make Solana a fit for recurring payments. A transaction costs well under a cent, so a monthly collection of a few USDC is not eaten by the fee. And since 2026 the network has a public Subscriptions program, so a merchant does not have to write or audit its own contract to collect on a schedule.
The Subscriptions program
The program is public: its source and README are on GitHub, its audit reports by Cantina are published in the same repository, and the program deployed on mainnet is a verified build of its public source. Its account on chain is De1egAFMkMWZSN5rYXRj9CAdheBamobVNubTsi9avR44. Fianto does not control it.
Before any collection moves money, the program checks:
- The amount is within the cap the customer approved for this period.
- The USDC goes only to the plan's destinations: the price to the merchant's receiving wallet, the network fee to Fianto's.
- This period has not already been collected.
- The subscription is still in place.
A request that fails any check is refused on chain and nothing moves. A charge either happens in full or not at all. The checks in detail are in how recurring USDC payments work.
What runs on chain, and what Fianto runs
| On chain, in the program | Off chain, in Fianto |
|---|---|
| The plan: amount per period, period length, the wallets it pays | Products and prices, the hosted checkout, the shop |
| The subscription: the cap and the link to the plan | Asking for each collection on the due date, and the retries |
| The checks on every collection | Signed webhooks, the dashboard, CSV exports |
| The USDC moving from wallet to wallet | The customer portal, where a customer sees and cancels |
Fees and rent on Solana
The merchant never pays a network fee. The customer's wallet pays the Solana network fee of the transaction it signs, under $0.01, and a flat network fee with every charge, 0.01 USDC today. A subscription also holds a small SOL balance as account rent, about 0.00197 SOL today, for as long as the subscription account exists; it comes back when the subscription ends and the customer reclaims it. The first time a wallet subscribes it also pays for a one-time setup account that is not returned. The checkout shows every line before the wallet opens. More in account rent and reclaim.
Wallets that work
Phantom, Solflare, Backpack and MetaMask, and other wallets through WalletConnect. The customer needs USDC for the price and the network fee, and a little SOL for the Solana network fee and the rent. Customers manage their subscriptions at fianto.xyz/my by signing a message, not a transaction.
For developers
One API call creates a checkout session with your own order ID. Signed webhooks, HMAC-SHA256 under the Standard Webhooks specification, report each payment: order.paid for a one-off payment; subscription.created, subscription.renewed, subscription.past_due and subscription.ended for a subscription. SDKs for Next.js, Hono and Express, and a command line to test webhooks locally. There is no test mode. See Developers and webhooks for access.
