Coupon Codes
Issue one code any number of subscribers can redeem for money off — percentage or fixed, capped, plan-restricted and scheduled, with a Promotion Impact card that measures what it earned.
A coupon code is one string any number of your subscribers can type at checkout for money off.
You choose the string — BLACKFRIDAY, not a generated UUID.
Not the same thing as an access code
An access code is one code for one person and grants access outright, without a payment. A coupon is one code for many people and reduces what they pay. Both exist, and both are worth having — if you want to give somebody free access, that is still an access code.
Coupon codes are included on Growth, or available on any plan through the Coupons Addon at $5 / month.
Why not just use access codes for a sale
Creators did, for a long time, because it was the only lever available. It does not fit:
| Coupon code | Access code | |
|---|---|---|
| How many people | One code, many people | One code, one person |
| What it does | Reduces what they pay | Grants access outright |
| Who chooses the code | You | Subscriby generates it |
| They still pay | Yes, the discounted amount | No |
| Limited in number | No — issue as many as you like | Yes, your plan's allowance |
Running a 20%-off sale with access codes means generating a code per buyer, collecting the money yourself somewhere else, and handing each person their own string — and access codes are capped per cycle by your tier, so the workaround gets more expensive the better the sale goes.
Creating one
Open Coupon Codes
In your project menu, choose Coupon Codes, then Create New Coupon Code.
Choose the code
Letters, numbers and dashes, 3 to 64 characters. Subscribers type this at checkout, so keep it short
and memorable. Case does not matter — it is stored and matched in uppercase, so BLACKFRIDAY and
blackfriday are the same code.
Use Suggest if you would rather not invent one.
Set the discount
A percentage works on every plan whatever its currency. A fixed amount needs a currency, and only applies to plans priced in it — because "$10 off" a plan priced in euros is not a question we can answer honestly.
Fence it in
Set a total cap, a per-subscriber cap, a minimum purchase, specific plans, and a start and end date. All optional. Every one of them exists because a discount with no fence around it is a liability.
Save
The code works immediately unless you gave it a future start date, or switched it off.
What you can control
| Control | What it does |
|---|---|
| Percentage / fixed | A percentage covers every currency; a fixed amount is tied to one. |
| Total redemptions | First 500 uses, then the code stops applying. Leave empty for unlimited. |
| Uses per subscriber | Once each by default. |
| Minimum purchase | Stops a generous percentage being spent on your cheapest tier. |
| Restrict to plans | Specific plans — or leave empty and it covers every plan, including ones you add later. |
| When it runs | A start and end, in your own timezone, so a sale opens and closes without you. If you have never confirmed that timezone, the section says so before you schedule against it. |
| Active | Switch off to stop new redemptions immediately, keeping the history. |
The discount applies to the first payment
Renewals charge list price. That is deliberate, and worth explaining rather than filing under limitations.
A code that kept discounting every renewal would be an ongoing promise to your customers — and it would have to be locked in place the way the Passes Addon is, so you could not drop the feature while people were still riding discounts you had granted. Keeping coupons to the first payment means the opposite: once a discounted payment settles, the discount is history, and the addon can be removed whenever you like.
It also matches what a sale usually means. "25% off" on a launch banner is understood as 25% off what you pay now, not a permanent price change for everyone who caught the promo.
On a one-time plan — a lifetime plan, or a time-limited pass — there is only a first payment, so the whole purchase is discounted.
An abandoned checkout costs you nothing
When somebody applies a code, Subscriby puts a temporary hold on one use. The hold counts towards your cap, which is what stops a hundred people simultaneously claiming the last of a hundred uses. If the payment never completes, the hold expires and the use returns to the pool.
So a capped code can report itself full, then free up again
A code capped at 100 can show as fully claimed while its last few uses are only held by checkouts in progress, and become available again minutes later when one of those is abandoned. That is the count being honest, not a bug — and it means no slots are ever quietly lost to people who wandered off.
Which payment methods can discount
Every payment method you can sell a one-time plan or a pass with carries a coupon. Only Stripe can discount a recurring plan — it is the only provider that lets a discount be attached to the subscription itself. The others take a single amount at checkout, and one number cannot mean "less now, full price later".
If a subscriber applies a code and then picks a method that cannot discount that plan, they are told to choose another method or continue without the code. They are never charged the full amount while believing a discount applied. The full matrix is on the Coupons Addon page.
Two things a discount cannot do
It cannot take the price below what a payment provider accepts. An 80%-off code on a $1 plan leaves 20 cents, which every payment provider rejects as too small. Subscriby checks the discounted total against that minimum first and tells the buyer why the code will not apply, rather than sending them to a payment page that would fail.
It cannot reach money that has already moved. Change a code's terms mid-campaign and subscribers who already redeemed keep exactly what they paid.
Your transaction fee follows the discount
Subscriby's transaction fee is taken on what was actually charged, not the plan's list price. Discount a $40 plan to $30 and the fee is calculated on $30. Your revenue figures and exports follow the same rule, so a discounted sale is never overstated on your dashboard.
Managing codes from Telegram
Manage Coupon Codes in your creator bot walks you through code, name, discount and cap, and lets you inspect, switch off and delete a code from your phone.
Editing terms stays in the dashboard — a seven-field edit is a form, not a chat.
Measuring what a campaign did
Both your project dashboard and your overall dashboard carry a Promotion Impact card: redemptions, discount given, revenue actually taken, the average depth of discount, and a per-code ranking.
It counts only the uses where the money actually arrived, so a campaign is never flattered by checkouts people started and walked away from. The card stays hidden until a code has been redeemed in the period you are looking at.
Retiring a code
Switch it off. New redemptions stop immediately and every redemption already recorded is kept. This is the safe option, and the one to reach for.
Delete it only if you want the record gone too — deleting removes the code's redemption history along with it. If a checkout using the code is still in progress, deleting is refused and you are asked to switch it off instead.
Either way, anyone who already redeemed keeps what they paid and their subscription is untouched.
Questions
Related
- Coupons Addon — pricing, and the full payment-method matrix.
- Redeeming a coupon code — what your subscribers see.
- Access Codes — one code, one person, grants access.
- Coupons API — author and audit codes programmatically.
coupon.*webhooks — seven events, including redemption and exhaustion.
How is this guide?