On this page
- Coupons take a percentage (1% to 99%) or a fixed USDC amount off, once, for a number of billing periods, or forever. They work on API, shop and payment link checkouts.
- You create and manage them in the dashboard only, with an optional expiry, a redemption limit and a once-per-wallet rule. The value never changes after creation.
- A discounted subscription stays on the same on-chain plan, whose cap is the full price. Fianto pulls the lower amount while the discount lasts, then the full price.
What is a discount code on a crypto checkout?
A discount code is a short code a payer types at checkout to pay a lower price. Fianto added them, as coupons, on 14 October 2026: the merchant creates a code in the dashboard, and the payer enters it on Fianto's hosted checkout page before signing. The page reprices, and the payer signs the lower amount.
A coupon has a value and a duration, fixed when you create it:
| Setting | Options | Notes |
|---|---|---|
| Percentage off | 1% to 99%, up to 2 decimals | There is no 100% coupon: Fianto cannot settle a free order |
| Fixed amount off | An amount in USDC | Taken off each discounted charge |
| Duration: once | The first charge only | A one-time payment is discounted once, whatever the duration |
| Duration: several billing periods | 1 to 120 charges | Counted from the first charge |
| Duration: forever | Every charge | For as long as the subscription runs |
The code itself is 3 to 32 letters, digits and hyphens. Fianto stores it in upper case, so payers can type it in either case. The dashboard can also generate a random 10-character code for you. A merchant can have up to 100 active coupons at once.
A coupon is not tied to one product. It applies to any of your prices, on every kind of checkout: one your server starts through the API, a purchase in your shop, or a payment link.
Where does the payer enter the code?
On the checkout page, in a discount code field in the order summary. The field appears only while you have at least one active coupon that has not expired; a merchant with no coupons shows payers no empty box to wonder about.
- The payer opens the checkout from your site, shop or link, and types the code.
- Fianto checks the code against your coupons and their limits, then reprices the checkout. The page shows the price before the discount, the discount, and the new total.
- The payer connects a wallet and signs the discounted amount. The USDC goes straight to your wallet, as with any other Fianto payment.
Every bad code gets the same answer, whether it never existed, has expired, was archived or is used up, so guessing codes reveals nothing about which ones exist. A code can be removed before paying, and once the payer has started paying with one code the checkout cannot switch to a different one.
How low can a discounted price go?
The discounted price must be at least 0.01 USDC, the same minimum as any Fianto price. If a coupon would bring it lower, the code is refused for that purchase and the payer pays the full price. Fianto never quietly clamps a discount to fit.
- A fixed 10 USDC off a 10 USDC product would leave nothing, so it is refused.
- 99% off a 0.50 USDC price would leave 0.005 USDC, below the minimum, so it is refused too.
- A percentage discount is rounded down to the smallest USDC unit, so any rounding falls in the merchant's favour.
Fees follow the discounted price. Fianto charges no fee during the beta; after it, the payer's Fianto fee is worked out on the discounted amount, not the list price. The merchant pays nothing either way. On a subscription, the flat network fee is not discounted: it stays 0.01 USDC with each charge today, paid by the payer. See the pricing page for the full list.
How do you limit a coupon?
Three optional limits stop a code from running further than you meant:
- Expiry. A date and time from one minute to five years ahead, read in the dashboard's time zone. After it, the code stops working.
- Maximum redemptions. From 1 to 1,000,000. Only paid redemptions count, never checkouts where the code was typed and nobody paid. You cannot lower the limit below the paid redemptions a coupon already has.
- Once per wallet. A wallet that has paid with the code cannot use it again. This is about wallets, not people: a payer with two wallets has two chances.
While a payer is paying, their place counts toward the redemption limit for 5 minutes, so two payers cannot both take the last use at the same moment. As with payment link limits, a payment that lands on Solana late is still settled, so a coupon can very occasionally end a little past its limit.
The value and the duration never change after you create a coupon. The name, expiry, redemption limit and once-per-wallet rule stay editable. Coupons are archived, never deleted, and archiving cannot be undone. To change a discount, archive the coupon and create another; an archived code can be used again on the new coupon.
Take USDC on a hosted checkout with discount codes built in. The merchant pays nothing, and there is no Fianto fee during the beta.
See the checkoutWhy does a discounted subscription keep the full-price cap?
A Fianto subscription runs on the Solana Foundation's Subscriptions program. Each recurring price has a plan on chain, shared by its subscribers. The plan fixes the most that can be collected per billing period: the price, plus the Fianto fee, plus the network fee. When a payer subscribes, their wallet approves that cap, and the program refuses any collection above it. The mechanism is explained in Solana token delegation explained.
A discounted subscriber joins that same plan. Their approval is for the full-price cap, and Fianto simply collects less while the discount lasts. The checkout shows both before anything is signed: what is charged now, and the most that can be taken per period at full price.
Take a 20 USDC monthly plan from Quillfern Labs with a coupon of 25% off for 3 billing periods, during the beta, with the network fee at 0.01 USDC today:
| Charge | Price charged | Network fee | Payer pays | Cap approved on chain |
|---|---|---|---|---|
| 1 (at checkout) | 15.00 USDC | 0.01 USDC | 15.01 USDC | 20.01 USDC |
| 2, 30 days later | 15.00 USDC | 0.01 USDC | 15.01 USDC | 20.01 USDC |
| 3 | 15.00 USDC | 0.01 USDC | 15.01 USDC | 20.01 USDC |
| 4 and after | 20.00 USDC | 0.01 USDC | 20.01 USDC | 20.01 USDC |
Why not a smaller cap for discounted subscribers? Because the discount ends. If the payer had approved only 15.01 USDC, the fourth charge would be refused and they would have to sign again. With the full cap approved up front, the return to full price needs no new signature.
Be clear with yourself and your customers about what each side guarantees. The program guarantees the cap: no more than 20.01 USDC per period, and only to the plan's wallets. The discount is applied by Fianto's billing, which collects once per period at the discounted amount.
How does a repeating coupon return to full price?
When you create a coupon for several billing periods, the number counts charges from the first one, the charge at checkout included. A coupon for 3 periods discounts charges 1, 2 and 3. From charge 4 the subscription is billed at its list price, automatically, inside the approval the payer already gave. A coupon that lasts once discounts only the first charge; one that lasts forever discounts every charge.
The discount is copied onto the subscription when it starts. Archiving the coupon later, or letting it expire, stops new payers from using the code, but subscriptions that already have the discount keep it for its full duration.
Your MRR in the dashboard follows what is actually charged: it counts the discounted amount while the discount lasts and the list price after. Retries for a failed renewal work exactly as for any USDC subscription.
Where do you manage coupons?
In the merchant dashboard only, under Billing, then Coupons. There is no API route or SDK method to create, list or apply a coupon. Each coupon's page lists its paid redemptions with the list price, the discount and the amount paid, and you can export the list as CSV. Discounted sales also show up in Orders, Payments, Subscriptions and reporting like any other.
If you run code, you still see discounts: v1 responses and webhook payloads for orders and subscriptions carry a discount object and a discount_ field. A one-time discounted payment still sends order., and a discounted subscription sends the usual subscription. events. There is no coupon event type. In a shop, the buyer's receipt and email show no amount; your own sale email shows the discounted amount paid.