USDC billing for SaaS, API and RPC plans.
Your customer subscribes from their Solana wallet once, with a cap per billing period. Fianto collects each period on its due date, straight to your wallet, and tells your server by signed webhook, so your code issues, pauses and revokes access by payment status.
Plans are products and prices
In the dashboard, each plan you sell is a product with a recurring price in USDC, billed every month (30 days) or every year (365 days). A Starter, Pro and Team tier are three prices you set once; a price must be at least 0.01 USDC.
A price cannot be edited after it is created. To charge new customers more, add a new price to the product. Existing subscribers keep the old price for as long as you leave it active; ending it cancels them at the end of their current period. See changing a price.
One API call per signup
When a signed-in user picks a plan, your server creates a checkout session with POST /v1/checkout-sessions, mode: "subscription", the price_ of the plan, and your own order_. Put your user ID in customer_ or metadata: they come back on every event about that subscription. Send the user to the returned url, or open it as a popup.
The customer sees your name, the amount and the cap, approves in Phantom, Solflare, Backpack, MetaMask or a WalletConnect wallet, and the first period is paid in the same step.
Keys follow payment
Map each subscription event to what your API does with the customer's key:
| Event | When | What your code does |
|---|---|---|
subscription. | The first period is paid | Issue the key at the plan's limits |
subscription. | A renewal charge settled | Extend access to the new period end |
subscription. | The first renewal attempt failed | Your call: keep the key during retries, or throttle it |
subscription. | Cancelled, ended by you, or the fourth attempt failed | Revoke the key |
Renewals are attempted two minutes into the new period, then again one hour, six hours and one day after it began. Only failures caused by the customer's wallet use up an attempt; if the fourth fails, the subscription ends with end_. Read more in failed renewals and retries.
Usage above the plan
A subscription charges the same amount every period: Fianto does not meter usage or bill overage after the fact. Sell extra capacity up front instead, as a one-off checkout session (mode: "payment") with an amount or line items, and add the credits when order. arrives with your order ID.
Changing plans
There is no plan switching or proration. To move a customer to another tier, they subscribe to the new price through a new checkout, and you cancel the old subscription with POST /v1/subscriptions/{id}/cancel, either now or at the end of its period. Nothing already paid is refunded automatically; a refund is a transfer you send from your own wallet.
