No Fianto fee during the beta. Any fee comes with at least 30 days notice. See pricing
Solutions

USDC billing for SaaS, API and RPC plans.

Updated October 2026By Fianto

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_id of the plan, and your own order_id. Put your user ID in customer_reference 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:

EventWhenWhat your code does
subscription.createdThe first period is paidIssue the key at the plan's limits
subscription.renewedA renewal charge settledExtend access to the new period end
subscription.past_dueThe first renewal attempt failedYour call: keep the key during retries, or throttle it
subscription.endedCancelled, ended by you, or the fourth attempt failedRevoke 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_reason: "PAYMENT_FAILED". 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.paid 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.

Questions

SaaS and API billing questions.

Do my customers need SOL?

Yes, a little. Their wallet pays the Solana network fee of each transaction it signs, and Solana account rent when they subscribe. Every renewal also carries a flat network fee, 0.01 USDC today, inside the cap they approved.

Can I bill by usage?

Not after the fact. A subscription charges the same amount each period. Sell extra usage up front as a one-off payment.

Can I give a free trial?

Not through Fianto: the first period is paid when the customer subscribes. You can let users try your product before they subscribe.

How do I find a customer's subscription from my own records?

Every event carries your order ID and metadata. You can also look an order up by your own order ID with GET /v1/orders/lookup.

Bill your first plan in USDC this week.

One API call opens the checkout. Your server hears about every period.