Introducing Coupon Codes

Our own documentation used to say no to this, three separate times. Asked whether one code could be shared by many people, the honest answer was: that is a coupon, not an access code, and we do not support coupons. One of those pages even used the example a customer had written to us — BLACKFRIDAY2024.
Today we are shipping coupon codes. One string, as many subscribers as you allow, money off at checkout. Percentage or fixed amount, capped where you want it, restricted to the plans you choose, and scheduled to open and close on its own.
Why this is not just an access code with a bigger number
Subscriby has had access codes for a long time, and creators have been bending them into promotions because it was the only lever available. It does not fit, for two reasons.
An access code is one code for one person, and it grants access without payment. So 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 — 5, 200 or 500 — so the workaround gets more expensive the more it works.
A coupon is the opposite shape on both counts:
| 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 string | You | Subscriby generates it |
| They still pay | Yes, the discounted amount | No |
| Counts against a quota | No — unlimited codes | Yes, your tier’s allotment |
Both still exist, and they are both worth having. If you want to give somebody free access, that is still an access code.
What you can actually control
A discount with no fence around it is a liability, so the controls came first:
Percentage or fixed amount. 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” on a plan priced in euros is not a question we can answer honestly.
A total cap. First 500 redemptions, then the code stops applying. Or leave it uncapped.
A per-subscriber cap. Once each, by default.
A minimum purchase. Stop a percentage code being spent on your cheapest tier.
A plan restriction. Specific plans, or leave it empty and the code covers every plan in the project — including ones you add later.
A window. A start and an end, in your own timezone, so a Black Friday code opens and closes without you being awake for either.
The discount applies to the first payment
Renewals charge list price. That is deliberate, and it is worth explaining rather than filing under limitations.
Mechanically, only Stripe needs to enforce that, because only Stripe lets a discount be attached to the subscription itself: Subscriby creates a coupon on your connected account with duration: once, and Stripe applies it to the first invoice and no later one. Every other gateway takes a single amount at checkout, and one number cannot mean “less now, full price later” — so a coupon on a recurring plan is refused there rather than quietly charging full price. On a one-time plan or a pass there is no renewal to worry about, so all seven work.
The upshot for you is that nothing outlives a redemption. Once a discounted payment settles, the discount is history — which is exactly why the Coupons Addon can be dropped whenever you like, while the Passes Addon cannot.
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 everybody 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. Coupons and passes compose exactly as you would hope.
An abandoned checkout costs you nothing
This is the part we are most pleased with, and it is invisible when it works.
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 on its own and the use returns to the pool.
No sweeper job, no nightly reconciliation, no slots quietly lost to people who wandered off. The consequence is one behaviour worth knowing about: a capped code can report itself 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 quota being honest, not a bug.
Not every payment method can discount, and we say so
A coupon reduces what a payment provider is asked to charge, and the providers do not all offer the same hooks. Rather than quietly charging full price on one that cannot, Subscriby refuses and explains:
| Payment method | One-time plans and passes | Recurring plans |
|---|---|---|
| Stripe | Yes | Yes |
| PayPal, Skrill, Paystack, CoinPayments, CeyPay, Razorpay | Yes | No |
| Telegram Stars | Yes | Not applicable — Stars are one-time only |
Only Stripe exposes a discount object we can attach to a subscription. The others take a single amount at checkout, which is fine for a one-time charge and cannot be made to mean “first payment only” on a recurring one. Razorpay needed its own answer: its subscription checkout charges against a plan registered on Razorpay’s side, with no amount to reduce, so a discounted one-time purchase goes out as a Razorpay payment link priced at the discounted total. Buyers see an ordinary Razorpay payment page; creators see the sale under Payment Links rather than among their subscriptions. If a buyer applies a code and then picks a method that cannot carry it, they are told to choose another method or continue without the code. They are never charged the full amount believing a discount applied.
Two things the discount cannot do
An 80% off code on a $1 plan yields 20 cents, which every payment gateway rejects. So the discounted total is re-checked against the provider minimum, and the code is refused with a reason rather than sent to a gateway that would bounce it.
And a discount never reaches into 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 on 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.
Threading the real charged amount through the completion path also fixed a latent inaccuracy that predates coupons: any gateway that charged something other than list price was previously metered against list. That is now correct for every provider.
Redeeming, from either side
Subscribers apply codes in both places they already buy:
The portal. A Have a Coupon Code? field on the checkout screen. The summary updates immediately — old price struck through, new total beside it, and the saving named. Case does not matter.
The Telegram bot. A 🏷 Have a Coupon Code? button above the payment methods. Tap it, send the code as a message, and the bot replies with the old price, the new one and the saving.
The bot deliberately only reads your next message as a code, rather than treating every message as a redemption attempt. An access code is a UUID, which is also a syntactically valid coupon code, and guessing between them would be worse than asking.
The field only appears when the creator actually has a live code covering the plan being bought, so a checkout with no promotion running is not cluttered by a box nobody can fill.
Authoring from anywhere
Dashboard — the full editor under Coupon Codes in the project menu, with a Suggest button if you would rather not invent a string.
Telegram bot — Manage Coupon Codes walks you through code, name, discount and cap. You can also inspect, switch off and delete a code from your phone. Editing terms stays in the dashboard, because a seven-field edit is a form.
REST API — seven endpoints, documented in the Coupons API reference.
MCP — an agent can author and audit codes through create_coupon and list_coupons.
Seven new webhook events
Five describe the code — coupon.created, coupon.updated, coupon.activated, coupon.deactivated, coupon.deleted. Two describe money: coupon.redeemed fires once per settled checkout carrying the original, discount and final amounts, and coupon.exhausted fires the moment the last remaining use is taken — useful for pulling a code off a landing page or stopping an ad automatically.
All seven are available in Zapier and n8n as well as raw webhooks. See the coupon event reference.
And a card that tells you whether it worked
Passes shipped with no window-level analytics, which we regretted. Coupons ship with a Promotion Impact card on both your project dashboard and your overall dashboard: redemptions, discount given, revenue actually taken, the average depth of discount, and a per-code ranking.
It counts settled redemptions only — money that moved — so a campaign is never flattered by held-but-unpaid checkouts. And it stays hidden entirely until a code has been redeemed in the period you are looking at, so an empty dashboard is not decorated with a zeroed-out promotion panel.
Availability
Coupon codes are available on every plan. They are included in Growth. On Free and Starter you unlock them with the Coupons Addon, billed on the same cycle as your plan — $5 per month, or $50 per year on an annual Starter plan. Free is monthly-only, so the addon is always the monthly price there.
At $5 a month this is the cheapest thing we sell, and its whole job is to increase what you take. One extra $10 subscription in a month covers it twice over.
Unlike the Passes Addon, this one can be removed at any time. A coupon discounts one payment at the moment it is made, so once that payment settles there is nothing left for the capability to keep delivering — no lock, no “clear these first” message, no waiting.
The full walkthrough is in the Coupon Codes guide, and the billing rules are in the Coupons Addon page.
Hazır mısınız
Telegram İşletmenizi otomatikleştirmeye?
Kullanıcıları manuel olarak yönetmeyi bırakın. İmparatorluğunuzu inşa etmeye başlayın. Subscriby ile kanallarını zahmetsizce gelir elde eden binlerce içerik üreticisine katılın.