- Generic coupons
- New unique coupons to a campaign.
- Existing coupons to update them.
When importing codes to a campaign, the system applies two simultaneous limits for the import file:
- Code count limit: Up to 100,000 codes.
- File size limit: Up to 10 MB CSV file size.
Important
- The start and expiration dates in the CSV file should be provided in compliance with the ISO 8601 norms, for example,
2020-03-11T09:00:00.000Z. - CSV columns mapped to custom attributes will be added as code metadata. The number of custom attributes you can import as metadata is unlimited.
- You cannot import two identical codes to a single Voucherify project.
- When importing existing incentives (discount coupons, referral codes, loyalty cards, or gift cards) into a campaign, only two fields can be updated: the active status (
true/false) and the category. All other attributes remain unchanged.
Preparing CSV file for generic coupons
Use these fields when importing standalone (generic) discount coupons. Generic coupons are not assigned to a campaign and work independently.Required fields
-
Code
A unique discount coupon code.
You cannot import two identical codes into a single Voucherify project. -
Voucher Type
Defines the voucher type.
For discount coupons, the value must beDISCOUNT_VOUCHER. -
Value
The discount value.
Must be provided as an integer number. -
Discount Type
Defines how the discount value is interpreted.
Supported values:AMOUNT– fixed amount discountPERCENT– percentage discountFIXED– fixed priceUNIT– discount applied per item unit
Optional fields
- Discount effect
Defines how the discount is applied to the order.
Supported values:APPLY_TO_ORDER– applies the discount to the entire order totalAPPLY_TO_ITEMS– applies the discount to selected items onlyAPPLY_TO_ITEMS_PROPORTIONALLY– distributes the discount proportionally across item valuesAPPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY– distributes the discount proportionally based on item quantitiesAPPLY_TO_ITEMS_BY_QUANTITY– applies the discount to a specific number of eligible items
-
Validation rule ID
The ID of a validation rule that governs how and when the coupon can be redeemed.
The rule is automatically applied to the imported coupon. -
Category
A custom tag assigned to the coupon.
Categories help you filter and organize coupons in the Dashboard. -
Active
Enables or disables the coupon.
Accepted values:TRUEorFALSE.
An inactive coupon cannot be redeemed, even if it is within its validity timeframe. -
Start date
The date when the coupon becomes valid.
Must follow the ISO 8601 format, for example:2022-09-19T00:00:00.000Z. -
Expiration date
The date when the coupon expires.
Must follow the ISO 8601 format, for example:2022-11-30T00:00:00.000Z. -
Redeemed quantity
The number of times the coupon has already been redeemed.
If omitted, the value defaults to0. -
Redeemed amount
The total discount amount already redeemed using this coupon. -
Redemption limit
The maximum number of redemptions allowed.
If omitted, the redemption limit is set to unlimited. -
Additional info
Any additional information you want to store with the coupon.
This field is informational only. -
Formula
A dynamic discount formula applied to the coupon.
Provide the Expression Output of an existing formula. -
Metadata (custom attributes)
Metadata allows you to add custom information to Voucherify objects. There are two ways to handle it:
- Metadata (Schema): These are fields you define in Project settings > Metadata schema. You choose the data type (like string or number) and if the field is mandatory. This ensures your metadata is consistent.
- Metadata (Unknown): These are fields sent to Voucherify without being defined first (through the API, imports, or manual entry). They are always treated as simple text strings. They are useful for one-time metadata, but they do not support advanced filtering or strict validation.
Fields other than the ones listed above will not be imported. Even if you provide them, they will be skipped.CSV generic coupon file template
Import generic coupons
Go to Campaign hub > Campaigns and Import CSV.Webhook sendout prerequisiteWhile importing, you can additionally select the checkbox to Create a webhook sendout for the vouchers created and updated during the import. This triggers a Voucher created or Voucher updated webhook when the coupons are processed.To enable webhook sendout during the voucher import, first configure webhooks in Project settings > Webhooks. Select the
voucher.created and voucher.updated events for the sendout to work.Read Project settings webhooks to learn more about configuring webhooks.Upload CSV file
Upload your prepared CSV file.Once uploaded, you’ll see an overview of first rows and columns of the file.
Map fields
In Map Fields, select for each CSV column:
- Do not map to skip that column.
- Voucherify fields to Select Voucherify properties, like Code, Voucher type, and so on.
- Metadata (Schema) to map a given column to custom attributes that are defined for vouchers.
- Metadata (Unknown) to map to an undefined custom attribute key.
For large imports, the process can take a significant amount of time.
Preparing CSV file for campaign discount coupons
Import coupons to campaign prerequisiteIf you don’t have a campaign for your codes yet, create a discount coupon campaign first.
Imported coupons inherit all campaign settings unless explicitly overridden.
Required fields
- Code
A unique discount coupon code.
Optional fields
-
Active
Enables or disables the coupon.
Accepted values:TRUEorFALSE. Import behavior:- If the campaign is Active and the
activefield is omitted, imported coupons are set toTRUE. - If the campaign is Expired and the
activefield is omitted, imported coupons are set toFALSE.
- If the campaign is Active and the
-
Category
A custom tag assigned to the coupon for filtering and organization. -
Redeemed quantity
The number of times the coupon has already been redeemed. -
Start date
The date when the coupon becomes valid.
Must follow the ISO 8601 format. -
Expiration date
The date when the coupon expires.
Must follow the ISO 8601 format. - Metadata (custom attributes)
- Metadata (Schema): These are fields you define in Project settings > Metadata schema. You choose the data type (like string or number) and if the field is mandatory. This ensures your metadata is consistent.
- Metadata (Unknown): These are fields sent to Voucherify without being defined first (through the API, imports, or manual entry). They are always treated as simple text strings. They are useful for one-time metadata, but they do not support advanced filtering or strict validation.
- If metadata columns are omitted, the coupon inherits the campaign’s metadata.
- If metadata columns are added and mapped, only those specific fields are overridden.
- Metadata that is not mapped remains unchanged.
Fields other than the ones listed above will not be imported. Even if you provide them, they will be skipped.CSV discount coupon file template
Import behavior for selected attributes
Some of the attributes work as follows when imported:- Active:
- If the campaign is Active and the
activefield is omitted in the CSV, theactiveattribute for the imported vouchers is set toTRUE. - If the campaign is Expired and the
activefield is omitted in the CSV, theactiveattribute for the imported vouchers is set toFALSE.
- If the campaign is Active and the
- Metadata:
- If metadata is omitted, the voucher inherits the campaign’s metadata.
- If metadata columns are added, the mapped metadata only overrides those specific fields.
Import discount coupons to a campaign
In Campaign hub > Campaigns, go to the discount campaign where you want to import the coupons. In the top right corner, use the three-dot menu to Import CSV file.Upload CSV file
Upload your prepared CSV file.Once uploaded, you’ll see an overview of first rows and columns of the file.
Map fields
In Map Fields, select for each CSV column:
- Do not map to skip that column.
- Voucherify fields to Select Voucherify properties, like Code, Voucher type, and so on.
- Metadata (Schema) to map a given column to custom attributes that are defined for vouchers.
- Metadata (Unknown) to map to an undefined custom attribute key.
For large imports, the process can take a significant amount of time.

