On this page
- Prices are never edited. Add a price under Products; existing subscribers stay on the one they signed for.
- Ending the old plan cancels every subscriber on it at the end of their paid period. Nobody is moved across automatically, and Fianto emails no one.
- Up to 20 active prices per product, and ending cannot be undone, so decide between grandfathering and a full move before you click.
Can you change the price of an existing stablecoin subscription?
You cannot change the price of an existing subscription on Fianto, in either direction. A Fianto price, once created, never changes: the dashboard's Products page says "A price never changes; to change one, add a new price." For a recurring price the amount and the interval are also written into a plan on Solana once a customer subscribes, and the subscriber approved a cap based on that amount.
Card billing works differently. Stripe, as of 15 October 2026, tells developers that to change what a customer pays "you must change the subscription item to reflect the new selection", and its change-price guide adds prorations for the rest of the billing period. The merchant changes the subscription and the card is charged the new amount. On Solana the customer's approval is the limit, so the customer has to take part in any increase.
Why is a subscription price fixed on chain?
A subscription price is fixed because the customer approves a specific plan, and the Subscriptions program will not let anyone collect more than that plan allows. A plan is the on-chain record of the amount per period, the period length and the wallets the money may go to. Solana's announcement of the program describes plans as "fixed billing tiers onchain" with "immutable terms", and states the consequence plainly: "if the merchant wants to update pricing, they sunset the old plan and create a new one." Why that fixed amount is in USDC rather than SOL is in why price a subscription in USDC, not SOL.
That limit protects the customer: no merchant, and not Fianto, can raise what a wallet pays without its owner signing again. It is the main reason a stablecoin subscription can be trusted with an automatic charge in the first place. The cost is that every price change is a migration, not a setting.
The same rule applies to other plan terms. If your receiving wallet changes, or the network fee changes, Fianto creates a new plan for the next subscribers to that price, and existing subscribers keep paying the old wallet with the old fee.
Which option fits your price change?
Pick by what should happen to the people already paying.
| You want | Do this | Existing subscribers |
|---|---|---|
| A higher price for new customers only | Add a price, then point your link, shop or API at it | Keep the old price while it stays active |
| A lower price for new customers only | The same: add the lower price | Keep paying the higher one unless they rejoin |
| Everyone on the new price | Add the new price, then End plan on the old one | Cancelled at the end of their paid period; they must subscribe again |
| A temporary cut for new customers | A coupon, entered at checkout | Unchanged: coupons apply only to new checkouts |
| Monthly to yearly, or back | Add a price with the other interval | Keep their interval unless they rejoin |
Keeping early subscribers on their old price is usually the better trade for a small increase: nobody has to act, nobody lapses, and the old price disappears as people leave. A full move makes sense when the old price no longer covers your costs, or when you are changing what the plan includes.
How do you raise the price for new subscribers only?
- Under Products, open the product and click Add a price. Enter the new "Price in USDC", keep "Type" as Recurring and pick "Every month (30 days)" or "Every year (365 days)". The dialog notes: "Customers on the old price keep paying it. New checkouts use the price ID you send." Click Add price.
- Move every place that sells the old price. A payment link sells one price for life, so create a new link for the new price and Close link on the old one; closing stops new sign-ups and cancels nothing. In a shop, tick the new price under "Prices shown", untick the old one, and publish. In your own code, send the new
fian_id inprice_ price_.id - Leave the old price active. As long as it is, its subscribers renew at the old amount every period.
A product holds up to 20 active prices and 200 in all, ended ones included, so this works for years of increases. The products and prices docs list every limit and message.
How do you move every subscriber to the new price?
To move everyone, you add the new price and end the old plan, and then each subscriber chooses whether to subscribe again. Nothing moves them across: their approval was for the old plan.
- Add the new price and put it on your link, shop or checkout, as above.
- Tell your subscribers, with the new price, the date and a link to subscribe. Fianto sends payers no email, so this has to come from you, using the emails you collected at checkout.
- On the old price click End plan. The dialog, "End this plan?", says how many subscribers will be "cancelled at the end of the period they have paid for", and that it cannot be undone. Click End plan to confirm.
- Watch Subscriptions. Each old subscriber shows when their paid period ends; after that date they are Ended unless they subscribed again.
A worked example
Fenwhistle Gazette, a demo newsletter, charges 8 USDC a month and moves to 10 USDC. One reader subscribed on 10 October at 09:00 UTC and renewed on 9 November, so their paid period runs to 9 December at 09:00, because a month on Fianto is exactly 30 days. The Gazette ends the 8 USDC plan on 15 November.
- The reader keeps access until 9 December and is not charged again on the old plan.
- If they subscribe at the new price on 15 November, they pay 10.01 USDC that day (10.00 plus the 0.01 USDC network fee today) while their old period still has 24 days to run: they pay twice for those days.
- If they subscribe on 9 December instead, there is no overlap and, at most, a short gap.
- Subscribing again costs them rent for the new subscription account, about 0.00144 SOL as of 15 October 2026 (the checkout shows the exact live amount), which they get back by reclaiming it once that subscription ends. The one-time wallet setup is not charged again: it is paid only on a wallet's first subscription.
So the announcement should give each reader their own end date, or tell them to rejoin when their current period ends. A once-per-wallet discount code for the first charge of the new price is one way to make the step worth taking; the discounted charge still has to be at least 0.01 USDC.
Customers approve once, with a cap fixed on chain. You pay nothing, and there is no Fianto fee during the beta.
See how plans are billedWhat do subscribers and your webhooks see when a plan ends?
When you end a plan, a subscriber's portal shows "The shop cancelled this subscription." and they have nothing to sign. Their access runs to the end of the paid period, and no renewal is started after the moment you ended it, though a payment already on its way to Solana can still complete. Fianto then sets the plan on Solana to Sunset, usually within minutes, so it takes no new subscribers. A checkout for the old price that was open at that moment can no longer be paid, and every payment link on that price reads Unavailable.
If you run code, each subscriber on the old plan who has not already cancelled sends subscription. with cancel_ MERCHANT_ when you end it, and subscription. when their period runs out. Keep access open until subscription., not the first event. A subscriber who joins the new price sends subscription.. For checkouts your server creates, give the new subscription a fresh order_: an order ID whose subscribe has completed is refused with order_. How to map these events to access is in webhooks for access.
Which mistakes make a price change cost you subscribers?
- Ending the plan before telling anyone. Subscribers learn about it only when access stops, because Fianto sends them nothing.
- Ending the whole product. End product ends every price on it, the new one included, and there is no restore.
- Asking subscribers to remove the wallet approval. That is not a cancel: the approval is shared by every Subscriptions-program subscription the wallet pays in USDC, and removing it makes all of them fail and go past due.
- Expecting a coupon to lower an existing subscription. A discount code is typed at checkout, so it only reaches people who check out again.
- Raising a yearly price without warning. A yearly subscriber cancelled by an ended plan keeps access for up to 365 days, so plan the move a year ahead or keep them on the old price.
Choosing the interval in the first place is covered in monthly or yearly USDC pricing.