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 workflowCampaign settings
Code batch
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.
- Launch lists: send unique codes to a waitlist or product announcement audience
- Partner campaigns: issue partner-specific codes with a common prefix
- Winback offers: give inactive customers single-use discounts
- Events: hand out codes through badges, cards, or QR-linked landing pages
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.
| 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
- Using one public code for every channel: reporting and abuse controls become weaker
- Skipping expiration dates: old offers can be redeemed after the campaign is over
- Generating codes before the offer is approved: cleanup gets harder later
- Exporting without campaign context: support teams cannot trace what each batch means
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
- Code prefixes are inconsistent, making campaign attribution harder later.
- Marketing asks for more codes after the original batch rules are forgotten.
- Expiration and redemption limits are checked manually after codes are shared.
- Promo code campaigns are disconnected from Payment Link tracking.
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
- Name the campaign and code prefix before generating any codes.
- Set expiration and redemption limits in the same review step.
- Export the first batch with enough context for marketing operations.
- Use localized pricing review before running region-specific discount campaigns.
Planning campaign-ready code batches? Review Workestic's planned Bulk Promo Code Generator workflow, including the intended preview and handoff steps, before requesting access.