Stablecoin auto renewal: how a subscription renews itself.
Auto renewal means the customer approves a subscription once and every later period is collected without them. On Solana the Subscriptions program makes that safe: the customer's one approval sets a cap, a period and the wallets the money may go to, and the program refuses any collection outside them. Fianto asks for each collection on the due date and retries when a wallet is short.
Why auto renewal was hard with stablecoins
A card can be charged by the merchant. A wallet cannot: it only moves money when its owner signs. So a stablecoin subscription used to mean a manual payment every period, chased by email, or a prepaid balance the merchant held. Neither is auto renewal.
The one approval
At checkout the customer signs one transaction from their own wallet. It pays the first period and sets up the subscription with three limits that are written on chain:
- The cap: the most that can be collected in one billing period. The price, plus any Fianto fee (none during the beta), plus the flat network fee each charge carries, 0.01 USDC today.
- The period: 30 days for a monthly plan, 365 days for a yearly plan, counted from the day it started.
- Where it goes: the price to the merchant's receiving wallet, the network fee to Fianto's, and nowhere else.
Changing any of them needs a new signature from the customer's wallet. Nobody can do it for them, Fianto included.
The renewal day
| When | What happens |
|---|---|
| Two minutes into the new period | Fianto asks the program to collect. The program checks the cap, the wallets and the period; if all pass, the price moves from the customer's wallet to the merchant's in that transaction, and the merchant's server gets a signed webhook. |
| If the wallet is short | Nothing is taken. The subscription is past due. |
| One hour, six hours, one day in | Fianto tries again. If the customer has topped up, that try collects. |
| After the fourth failure | The subscription ends. That period is never charged later. |
The full schedule and the failure reasons are in failed renewals and retries.
What can never happen
- A collection above the cap. The program refuses it on chain.
- A collection to any wallet the plan does not name.
- Two collections in one period.
- A partial collection. A charge either happens in full or not at all.
- A collection after the customer cancels, once the paid period ends.
Cancelling an auto renewal
The customer sees every subscription their wallet pays at fianto.xyz/my and cancels there with one signature. A cancelled subscription runs to the end of the paid period and then stops. Removing the permission inside the wallet is not a cancel: the permission is shared by every subscription the wallet pays through the program, so each next renewal fails, goes past due, and ends after the fourth failed attempt. The merchant can also end a subscription from the dashboard, now or at the end of the period.
Auto renewal versus manual renewal
| Manual renewal | Auto renewal on Fianto | |
|---|---|---|
| Each period | A reminder, then a payment the customer must make | Collected on the day, within the cap |
| When the customer forgets | Access lapses, or the merchant chases | Retried three times over a day, then ended |
| What the merchant does | Checks payments, updates access by hand | Reads the webhook |
| What the customer controls | Every payment | The cap, the period and the wallets they approve, and the cancel |
