Docs → Bulk Discount Codes

Bulk Discount Codes for Shopify

Generate large sets of unique, one-per-customer discount codes, export them for your campaign, and create sets from your own systems through the API.

On this page

Installing the app

Install from the Shopify App Store. The app asks for permission to manage discounts and nothing else, and it works immediately after install — there is no setup wizard, no configuration, and nothing to connect. You'll find it under Apps in your Shopify admin.

Creating your first code set

  1. Open the app from your Shopify admin.
  2. Choose how many codes you need and what the discount does — a percentage off, a fixed amount off, or free shipping.
  3. Set the options you care about: an expiry date, a prefix so the codes are recognisable, and whether each code may be used once per customer.
  4. Click Generate codes.

The codes are created as a real Shopify discount, so they work at checkout exactly like codes you'd create by hand — and they appear in your admin's own Discounts section too. Small sets are ready in seconds.

Code and discount options

OptionWhat it does
Discount typePercentage off, a fixed amount off the order, or free shipping.
Number of codesHow many unique codes to generate in this set.
Prefix or suffixPuts a recognisable marker on every code in the set — useful for telling an influencer batch apart from a print-insert batch at a glance.
Expiry dateThe codes stop working after this date.
One use per customerStops a single code being shared and reused across many orders.
Usage limitA total cap on how many times a code can be redeemed.

Every code in a set is unique and randomly generated, so codes can't be guessed from one another the way sequential codes can.

Large batches and progress

Very large sets are created by a background job rather than while you wait, and the app shows live progress as it goes. If Shopify rejects an individual request — a rate limit, a brief outage — the job retries it rather than dropping the code, and anything that still fails is reported to you. A batch never quietly comes out short.

You can close the page while a large set is running and come back to it; progress carries on server-side.

Exporting codes

Open a set and download it as CSV or XLSX. CSV suits email platforms and mail-merge tools; XLSX opens cleanly in Excel and Google Sheets without a text-import dialog and without long codes being mangled into scientific notation.

The export contains the codes for that set, so you can hand a file straight to a print supplier or upload it to your email tool.

Importing your own codes

If your codes are decided elsewhere — a printed batch, a partner's numbering scheme, a list you already hold — paste them in instead of generating them, and the app creates the discount with exactly those codes. Duplicates and codes that already exist in your store are reported rather than silently skipped.

API and webhooks

The API exists so that another system can create and read code sets without anyone opening the admin — a membership site issuing a code on signup, a warehouse tool pulling the next unused code onto a packing slip, a loyalty platform rewarding a milestone.

  1. Open the API page in the app and generate a key.
  2. Send the key with your requests as documented on that page, which lists the endpoints, their parameters and example requests.
  3. Optionally register a webhook so your system is notified when a set finishes generating, rather than polling for it.
Treat an API key like a password: it can create discounts in your store. Keys can be revoked from the same page at any time, and revoking one takes effect immediately.

Plans

FreeUnlimited
Codes per month500Unlimited
Export CSV and XLSXIncludedIncluded
Import your own codesIncludedIncluded
API and webhooksIncludedIncluded

Every feature is available on the free plan; the difference is volume. The paid plan is a flat monthly price with a free trial, billed by Shopify on your normal Shopify invoice, and you can cancel it from your admin at any time. Current prices are shown on the app's own plan page and on its App Store listing.

Permissions and data

The app requests permission to manage discounts, and no other scope. It does not read your customers, orders or products.

What it stores is the information needed to run and export your code sets: the sets you create, their codes and settings, your store's domain, and your plan status. It does not sell data, does not share it with advertisers, and does not use it to train anything. Full details, including retention and how to request deletion, are in the privacy policy.

Troubleshooting

A code isn't accepted at checkout

Check the set's expiry date and usage limit, and whether the code has already been redeemed once when one-use-per-customer is on. Discount combination rules in Shopify can also block a code when another discount is already on the cart.

My batch finished with some codes missing

The app reports failures rather than hiding them, and the usual cause is a code colliding with one that already exists in the store. Generate a top-up set with a different prefix to make up the numbers.

The export opens as one long column in Excel

That's Excel's CSV import behaviour. Download the XLSX version instead and it opens correctly with no import step.

An API request is rejected

Confirm the key hasn't been revoked and that it's being sent in the header exactly as shown on the API page. The response body says which field it objected to.

Support

Email support@stonewren.dev. Replies come from the person who built the app, normally within one working day (UK time). Including your store's domain and what you clicked makes a fix much faster.