BlogStripe campaigns

How to generate Stripe promo codes in batches for campaigns

Short answer: define the campaign, choose the coupon settings, set usage and expiration rules, generate unique Stripe promo codes, then export the list before the campaign goes live.

Bulk Promo Code GeneratorExplore Workestic's planned workflow for campaign-ready Stripe promotion-code batches.

View planned workflow

Promo codes are useful for launches, partner offers, winback campaigns, conference giveaways, and renewal incentives. The hard part is not creating one code in Stripe. The hard part is creating a clean batch of unique codes with consistent rules, then handing that list to marketing without losing track of which codes belong to which campaign. Workestic's planned Bulk Promo Code Generator workflow is designed around that campaign-first process; request access to follow availability.

When batch promo codes make sense

Use a batch when each customer, partner, channel, or campaign placement needs its own code. One shared code can work for a public sale, but unique codes are easier to limit, distribute, and audit.

Step 1: Name the campaign before generating codes

Start with a campaign name that will still make sense later. A good name includes the audience, offer, or timing, such as summer_launch_2026 or partner_acme_q3. That name should connect the Stripe coupon, the promo code batch, and the spreadsheet or campaign tool that receives the exported list.

Step 2: Choose the coupon settings

Decide whether the offer is a percentage discount, fixed amount discount, or another coupon structure supported by your Stripe setup. The coupon is the financial rule. Promo codes are the customer-facing codes that redeem that rule.

Separate the offer from the code customers enter

In Stripe, a coupon holds the discount economics, while a promotion code is the customer-facing code that points to that offer. One approved coupon can therefore support separate codes for a public launch, a partner, or a winback list without changing the underlying discount. Choose the financial rule first, then decide which audience needs a distinct code and owner. Stripe documents the distinction, plus the Dashboard and API creation paths, in its coupons and promotion codes guide.

Stripe coupon and promo code campaign decisions
Setting Campaign question Example
Discount type Should the offer be percentage-based or fixed? 20% off
Duration Should it apply once, forever, or for a limited period? First 3 months
Code prefix How should campaign codes be recognized? SUMMER20
Quantity How many unique codes does the campaign need? 200 codes

Step 3: Add redemption limits

Limits keep campaign distribution under control. For individual outreach, single-use codes are usually cleaner. For partner or field campaigns, you may want a total redemption cap across the batch, plus an expiration date so unused codes do not linger forever.

Common controls include one redemption per code, a total maximum redemption count, a minimum purchase amount, and an end date. The more public the campaign, the more important these controls become.

Check the restriction hierarchy before sharing a code

A promotion code can narrow the coupon with a customer, first-time-transaction, minimum amount, expiration, or redemption limit, but it cannot outlast or exceed the matching coupon limit. Stripe also checks minimum-amount restrictions at redemption, and documents cases where those restrictions do not apply to subscription item, invoice item, subscription update, or future subscription-schedule uses. Record the intended checkout or billing path in the campaign brief so a valid-looking code is not distributed for an unsupported use.

Step 4: Preview the generated batch

Preview matters because code mistakes spread quickly. Check the prefix, number of codes, expiration date, discount value, and redemption limits before the codes are shared outside the billing team.

A useful preview shows the first few generated codes and summarizes the rules behind the batch. That gives marketing, finance, and support a fast way to confirm the offer before it reaches customers.

Test redemption, not just the exported list

Use Stripe test mode to exercise the same flow a recipient will use, including the eligible customer and any minimum amount. A first-time restriction can reject someone who has already started a PaymentIntent or a subscription trial, even if they never completed a payment. Check the code in the relevant Checkout or billing flow before live distribution; copying a syntactically valid code into a spreadsheet does not prove that it can be redeemed.

Step 5: Export the code list for campaign operations

Once the batch is approved, export the codes to the system that will send or track them. For email campaigns, that may be a CSV upload. For partner teams, it may be a shared list. For events, it may be a print or QR workflow.

Keep the campaign name, coupon settings, export date, and owner with the list. Those details make support questions easier when someone asks why a code did or did not work.

Give each campaign handoff enough context to audit

Keep the exported code value separate from internal notes and share it only with the team that needs it. The handoff should identify the coupon or promotion, audience, owner, distribution channel, expiration, redemption rule, and the time it was approved. For a regional campaign, include the currency and minimum-amount decision too. If the campaign uses Payment Links, pair the handoff with the team's Payment Link tracking plan; if it needs localized pricing review, use the multi-currency price guide.

Common mistakes to avoid

Manual workflow: generating campaign promo codes in Stripe

The manual workflow is to create a coupon, generate promotion codes, set redemption limits, define expiration dates, and export or copy codes for the marketing team. For a small test, that is fine. For a partner campaign, event, launch, or winback list, the code batch needs naming rules and review before it reaches customers.

Choose the Dashboard or API path before the campaign opens

Stripe supports creating promotion codes in the Dashboard and through the API. The Dashboard route suits a small, deliberately reviewed batch; an API route suits a team that already owns a secure Stripe integration and can record the result of every create request. In either case, start from the approved coupon or promotion, decide whether to provide a readable code or let Stripe generate one, and keep the returned Stripe promotion-code identifier with the campaign record. For recipient-specific campaigns, verify each code is unique before export and retain exclusions in the campaign record. Never pass a secret key through a spreadsheet, a marketing handoff, or a browser form. Stripe's Promotion Code creation reference lists the supported input fields and current code requirements.

A batch workflow should make the campaign rules visible: discount type, code prefix, number of codes, expiration, redemption limits, and whether each code can be used once or many times.

Where teams get stuck

How to troubleshoot a promo code batch before launch

Treat the preview as the stop point for campaign errors. If the discount, duration, expiration, or redemption limit is wrong, return to the coupon and campaign settings before creating or distributing the batch. If the codes are hard to identify, revise the naming pattern so support can connect a code to its campaign without guessing. Keep the campaign name, code, expiration, and redemption rule together in the exported handoff; a bare list of codes is difficult for marketing and support to audit later. A batch generator speeds up creation, but it does not choose the promotion economics or repair codes that have already been shared. Use one approver for the final preview and retain the approved export as the campaign record.

Promo code batch checklist

Planning campaign-ready code batches? Review Workestic's planned Bulk Promo Code Generator workflow, including the intended preview and handoff steps, before requesting access.

View planned workflow