Expiring Codes

Expiring Codes for Kit: setup guide

Expiring Codes gives each subscriber their own one-use discount code, made in your Stripe or Paddle account, that stops working at a deadline you choose. Setup takes about five minutes.

You need a paid Kit plan (Visual Automations and apps are on Kit's paid plans) and a Stripe or Paddle Billing account.

1. Install the app

In Kit, open Apps, search for Expiring Codes and click Install. Kit asks you to allow access, then sends you to your Expiring Codes settings.

We ask Kit for access so we can save each code into the subscriber's custom fields. We never read your subscribers' emails or names.

2. Connect your checkout

In your settings, paste a key that can only make discounts:

The Expiring Codes settings page with Stripe connected
Your settings page shows the connected checkout, your monthly count and the latest codes.

3. Add the Expiring offer step

Open a Visual Automation (Automation, then Visual automations). Click the + where the offer should start, choose Action, then Expiring Codes by Tofu Labs, then Expiring offer.

The Expiring offer step and its settings in a Kit Visual Automation
The step sits right before the email that carries the offer.
SettingWhat it does
Offer nameA short name such as welcome. Each subscriber gets one code per offer name. If they pass the step again, they get the same code and deadline back. The name also starts the code, like WELCOME7KQ2MX.
CheckoutStripe or Paddle. Connect it in your settings first.
DiscountPercent off, or an amount off in the currency you pick.
Code works forHours from the moment the code is made, 1 to 720 (30 days). Each subscriber gets their own deadline.
Custom field prefixoffer unless you change it. Use a different prefix for each offer that can run at the same time.
Stripe coupon IDOptional. Use a coupon you already made in Stripe, for example one that only applies to certain products. Leave it empty and we create a coupon from the discount you set.

Kit runs app steps in batches, about every five minutes, so a subscriber can wait up to a few minutes at this step. They move on as soon as their code is saved.

4. Show the code in your email

In the email that follows the step, type / and pick the Expiring code block. It shows the code and the deadline in a dashed coupon box, with an optional button. In the editor you'll see the placeholders; your subscribers see their own code.

An email to Maya with her personal code WELCOMEU328ZC, which works until Sat, Oct 10, 12:03 PM EDT
What a subscriber sees.

You can also place the fields anywhere Kit takes personalization, including subject lines and links:

TagExample
{{ subscriber.offer_code }}WELCOME833XRV
{{ subscriber.offer_expires_text }}Sat, Oct 10, 11:05 AM EDT (your Kit time zone)
{{ subscriber.offer_expires_at }}2026-10-10T15:05:10.000Z
Stripe Payment Link? Add the code to the link so it's already filled in: https://buy.stripe.com/your-link?prefilled_promo_code={{ subscriber.offer_code }}. Turn on "Allow promotion codes" on the link.

5. Test it

  1. Add yourself as a subscriber and send yourself through the automation (for example with a test tag as the entry).
  2. Within about five minutes, check your subscriber profile in Kit: the three offer_ fields are filled in.
  3. Open the email and try the code at your checkout. Try it a second time: it's refused, because each code works once.

Want to try without real money? Connect a Stripe test-mode key (rk_test_) or a Paddle sandbox key first, then switch to your live key.

Plans and limits

The free plan makes 25 codes a month. Starter makes 1,000 and Pro 10,000. See pricing. Reusing an existing code (same subscriber, same offer) doesn't count.

When a code can't be made (the monthly limit is reached, or no checkout is connected), the subscriber waits at the Expiring offer step. Kit tries again about every five minutes, so as soon as you connect a checkout or upgrade, waiting subscribers get their code and move on. Nobody gets the email without a code. Keep an eye on your count in settings before a big launch.

Common questions

Can someone share their code?

Each code works once. The first person to use it uses it up.

What happens at the deadline?

Stripe or Paddle stops accepting the code. Nothing else changes: the code stays in Kit so you can see what was sent.

Can I run two offers at once?

Yes. Give them different offer names and different custom field prefixes, like welcome and winback.

How do I uninstall?

In Kit, open Apps, then Expiring Codes, then Uninstall. We stop at once and delete your data within 30 days. Codes already sent keep working until their deadline, unless you delete them in Stripe or Paddle.

Still stuck? Contact support. A person answers within one business day.