Early bird discounts live! Claim your offer

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 codeAccess code
How many peopleOne code, many peopleOne code, one person
What it doesReduces what they payGrants access outright
Who chooses the codeYouSubscriby generates it
They still payYes, the discounted amountNo
Limited in numberNo — issue as many as you likeYes, 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

ControlWhat it does
Percentage / fixedA percentage covers every currency; a fixed amount is tied to one.
Total redemptionsFirst 500 uses, then the code stops applying. Leave empty for unlimited.
Uses per subscriberOnce each by default.
Minimum purchaseStops a generous percentage being spent on your cheapest tier.
Restrict to plansSpecific plans — or leave empty and it covers every plan, including ones you add later.
When it runsA 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.
ActiveSwitch 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

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request