---
title: "Add Voucher with Specific Code to Campaign"
method: POST
path: "/v1/campaigns/{campaignId}/vouchers/{code}"
tags: ["Campaigns"]
---

# Add Voucher with Specific Code to Campaign

`POST /v1/campaigns/{campaignId}/vouchers/{code}`

This method gives a possibility to add a new voucher to an existing campaign. The voucher definition will be inherited from the definition kept in the campaign profile. However, you are able to overwrite a few properties inherited from the campaign.

## Request body

- CampaignsVouchersCreateRequestBody
  - `category` string — The category assigned to the campaign. Either pass this parameter OR the `category_id`.
  - `metadata` object — The metadata object stores all custom attributes assigned to the voucher. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
  - `redemption` object — Stores the quantity of redemptions that can be applied to the voucher.
    - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
  - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
  - `start_date` string, date-time — Activation timestamp defines when the voucher starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
  - `expiration_date` string, date-time — Expiration timestamp defines when the voucher expires in ISO 8601 format. Voucher is *inactive after* this date.

## Response `200`

Returns a voucher object if the call succeeded.

- CampaignsVouchersCreateResponseBody — This is an object representing a voucher.
  - `id` string — Assigned by the Voucherify API, identifies the voucher.
  - `code` string — A code that identifies a voucher. Pattern can use all letters of the English alphabet, Arabic numerals, and special characters.
  - `campaign` string — A unique campaign name, identifies the voucher's parent campaign.
  - `campaign_id` string — Assigned by the Voucherify API, identifies the voucher's parent campaign.
  - `category` string — Tag defining the category that this voucher belongs to. Useful when listing vouchers using the List Vouchers endpoint.
  - `category_id` string — Unique category ID assigned by Voucherify.
  - `type` 'GIFT_VOUCHER' | 'DISCOUNT_VOUCHER' | 'LOYALTY_CARD' — Defines the type of the voucher.
  - `discount` union — Contains information about discount.
    - object
      - `type` 'AMOUNT', required — Defines the type of the voucher.
      - `amount_off` number, required — Amount taken off the subtotal of a price. Value is multiplied by 100 to precisely represent 2 decimal places. For example, a $10 discount is written as 1000.
      - `amount_off_formula` string — Formula used to dynamically calculate the discount.
      - `aggregated_amount_limit` integer — Maximum discount amount per order.
      - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' | 'APPLY_TO_ITEMS_PROPORTIONALLY' | 'APPLY_TO_ITEMS_PROPORTIONALLY_BY_QUANTITY' | 'APPLY_TO_ITEMS_BY_QUANTITY'
      - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
    - object
      - `type` 'UNIT', required — Discount type.
      - `unit_off` integer — Number of units to be granted a full value discount.
      - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
      - `effect` 'ADD_MISSING_ITEMS' | 'ADD_NEW_ITEMS' | 'ADD_MANY_ITEMS' | 'ADD_SAME_ITEMS'
      - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
      - `product` SimpleProductDiscountUnit
        - `id` string, required — Unique product ID, assigned by Voucherify.
        - `source_id` string — Product's source ID.
        - `name` string, required — Product name.
      - `sku` SimpleSkuDiscountUnit
        - `id` string, required — Unique SKU ID, assigned by Voucherify.
        - `source_id` string — Product variant's source ID.
        - `name` string, required — Sku name
      - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
    - object
      - `type` 'UNIT', required — Discount type.
      - `effect` 'ADD_MANY_ITEMS' — Defines how the discount is applied to the customer's order.
      - `units` DiscountUnitMultipleOneUnit[], required
        - `unit_off` number — Number of units to be granted a full value discount.
        - `unit_off_formula` string — Formula used to dynamically calculate the number of units.
        - `effect` 'ADD_NEW_ITEMS' | 'ADD_MISSING_ITEMS', required — Defines how the unit is added to the customer's order.
        - `unit_type` string, required — The product deemed as free, chosen from product inventory (e.g. time, items).
        - `product` SimpleProductDiscountUnit
          - `id` string, required — Unique product ID, assigned by Voucherify.
          - `source_id` string — Product's source ID.
          - `name` string, required — Product name.
        - `sku` SimpleSkuDiscountUnit
          - `id` string, required — Unique SKU ID, assigned by Voucherify.
          - `source_id` string — Product variant's source ID.
          - `name` string, required — Sku name
    - object
      - `type` 'PERCENT', required — Defines the type of the voucher.
      - `percent_off` number, required — The percent discount that the customer will receive.
      - `percent_off_formula` string — Formula used to dynamically calculate the discount.
      - `amount_limit` number — Upper limit allowed to be applied as a discount. Value is multiplied by 100 to precisely represent 2 decimal places. For example, a $6 maximum discount is written as 600.
      - `aggregated_amount_limit` integer — Maximum discount amount per order.
      - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
      - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
    - object
      - `type` 'FIXED', required — Defines the type of the voucher.
      - `fixed_amount` number, required — Sets a fixed value for an order total or the item price. The value is multiplied by 100 to precisely represent 2 decimal places. For example, a $10 discount is written as 1000. If the fixed amount is calculated by the formula, i.e. the `fixed_amount_formula` parameter is present in the fixed amount definition, this value becomes the **fallback value**. As a result, if the formula cannot be calculated due to missing metadata, for example, this value will be used as the fixed value.
      - `fixed_amount_formula` string — Formula used to dynamically calculate the discount.
      - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS'
      - `is_dynamic` boolean — Flag indicating whether the discount was calculated using a formula.
  - `gift` object — Object representing gift parameters. Child attributes are present only if `type` is `GIFT_VOUCHER`. Defaults to `null`.
    - `amount` integer — Total gift card income over the lifetime of the card. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
    - `subtracted_amount` integer — Total amount of subtracted credits over the gift card lifetime. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
    - `balance` integer — Available funds. The value is multiplied by 100 to represent 2 decimal places. For example `10000 cents` for `$100.00`.
    - `effect` 'APPLY_TO_ORDER' | 'APPLY_TO_ITEMS' — Defines how the credits are applied to the customer's order.
  - `loyalty_card` object — Object representing loyalty card parameters. Child attributes are present only if `type` is `LOYALTY_CARD`. Defaults to `null`.
    - `points` integer — Total number of points added to the loyalty card over its lifespan.
    - `balance` integer — Points available for reward redemption. This is calculated as follows: `balance` = `points` - `expired_points` - `subtracted_points` - `redemption.redeemed_points`.
    - `next_expiration_date` string, date — The next closest date when the next set of points are due to expire.
    - `next_expiration_points` integer — The amount of points that are set to expire next.
    - `pending_points` integer — Shows the number of pending points that will be added to the loyalty card when they are activated automatically or manually.
    - `expired_points` integer — Shows the total number of expired points over the lifetime of the loyalty card.
    - `subtracted_points` integer — Shows the total number of subtracted points over the lifetime of the loyalty card.
  - `start_date` string, date-time — Activation timestamp defines when the code starts to be active in ISO 8601 format. Voucher is *inactive before* this date.
  - `expiration_date` string, date-time — Expiration timestamp defines when the code expires in ISO 8601 format. Voucher is *inactive after* this date.
  - `validity_timeframe` ValidityTimeframe — Set recurrent time periods when the earning rule is valid. For example, valid for 1 hour every other day.`start_date` **required** when including the `validity_timeframe`.
    - `duration` string — Defines the amount of time an earning rule will be active in ISO 8601 format. For example, an earning rule with a `duration` of `PT1H` will be valid for a duration of one hour.
    - `interval` string — Defines the intervening time between two time points in ISO 8601 format, expressed as a duration. For example, an earning rule with an `interval` of `P2D` will be valid every other day.
  - `validity_day_of_week` integer[] — Integer array corresponding to the particular days of the week in which the voucher is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
  - `validity_hours` ValidityHours — Determines the hours of validity, e.g. to create a happy hours scenario.
    - `daily` object[] — Defines the recurring period(s) when the resource is active. The periods should not overlap.
      - `start_time` string, time — Defines the starting hour of validity in the HH:mm format. The resource is *inactive before* this time.
      - `days_of_week` integer[] — Integer array corresponding to the particular days of the week in which the resource is valid. - `0` Sunday - `1` Monday - `2` Tuesday - `3` Wednesday - `4` Thursday - `5` Friday - `6` Saturday
      - `expiration_time` string, time — Defines the ending hour of validity in the HH:mm format. The resource is *inactive after* this time.
  - `active` boolean, nullable — A flag to toggle the voucher on or off. You can disable a voucher even though it's within the active period defined by the `start_date` and `expiration_date`. - `true` indicates an *active* voucher - `false` indicates an *inactive* voucher
  - `additional_info` string — An optional field to keep any extra textual information about the code such as a code description and details.
  - `metadata` object — The metadata object stores all custom attributes assigned to the code. A set of key/value pairs that you can attach to a voucher object. It can be useful for storing additional information about the voucher in a structured format.
  - `assets` VoucherAssets — Stores links to images of QR and barcode that correspond to an encrypted voucher code.
    - `qr` object — Stores Quick Response (QR) representation of encrypted code.
      - `id` string — Encrypted voucher code ID.
      - `url` string — URL to QR code *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
    - `barcode` object — Stores barcode representation of encrypted code.
      - `id` string — Encrypted voucher code ID.
      - `url` string — URL to barcode *Optional:* Attach query parameters to base URL to customize the image of the encrypted voucher code. - `size`: integer value from `1` to `100` - `format`: string, either `png` (default) or `svg`
  - `is_referral_code` boolean, nullable — Flag indicating whether this voucher is a referral code; `true` for campaign type `REFERRAL_PROGRAM`.
  - `created_at` string, date-time — Timestamp representing the date and time when the voucher was created. The value is shown in the ISO 8601 format.
  - `updated_at` string, date-time — Timestamp representing the date and time when the voucher was last updated in ISO 8601 format.
  - `holder_id` string — Unique customer identifier of the redeemable holder. It equals to the customer ID assigned by Voucherify.
  - `referrer_id` string — Unique identifier of the referring person.
  - `object` string — The type of the object represented by JSON. Default is `voucher`.
  - `publish` object — Stores a summary of publication events: an event counter and endpoint to return details of each event. Publication is an assignment of a code to a customer, e.g. through a distribution.
    - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the `url` attribute.
    - `count` integer — Publication events counter.
    - `url` string — The endpoint where this list of publications can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/publications`
  - `redemption` object — Stores a summary of redemptions that have been applied to the voucher.
    - `quantity` integer — How many times a voucher can be redeemed. A `null` value means unlimited.
    - `redeemed_quantity` integer — How many times a voucher has already been redeemed.
    - `redeemed_points` integer — Total loyalty points redeemed.
    - `object` string — The type of the object represented is by default `list`. To get this list, you need to make a call to the endpoint returned in the url attribute.
    - `url` string — The endpoint where this list of redemptions can be accessed using a **GET** method. `/v1/vouchers/{voucher_code}/redemptions`
  - `categories` Category[] — Contains details about the category.
    - `id` string, required — Unique category ID assigned by Voucherify.
    - `name` string, required — Category name.
    - `hierarchy` integer, required — Category hierarchy. Categories with lower hierarchy are processed before categories with higher hierarchy value.
    - `object` 'category', required — The type of the object represented by the JSON. This object stores information about the category.
    - `created_at` string, date-time, required — Timestamp representing the date and time when the category was created. The value is shown in the ISO 8601 format.
    - `updated_at` string, date-time — Timestamp representing the date and time when the category was updated. The value is shown in the ISO 8601 format.
  - `validation_rules_assignments` ValidationRulesAssignmentsList — List of Validation Rules Assignments
    - `object` 'list', required — The type of the object represented by JSON. This object stores information about validation rules assignments.
    - `data_ref` 'data', required — Identifies the name of the attribute that contains the array of validation rules assignments.
    - `data` BusValRuleAssignment[], required — Contains array of validation rules assignments.
      - `id` string, required — The unique identifier for a assignment
      - `rule_id` string, required — The unique identifier for a rule
      - `related_object_id` string, required — The unique identifier for a related object
      - `related_object_type` string, required — The type of related object
      - `created_at` string, date-time — Timestamp representing the date and time when the object was created. The value is shown in the ISO 8601 format.
      - `updated_at` string, date-time — Timestamp representing the date and time when the object was last updated in ISO 8601 format.
      - `object` 'validation_rules_assignment', required — The type of the object represented by JSON.
      - `validation_status` 'VALID' | 'PARTIALLY_VALID' | 'INVALID' — The validation status of the assignment
      - `validation_omitted_rules` string[] — The list of omitted rules
    - `total` integer, required — Total number of validation rules assignments.

## Other responses

- `409` — Returns an error if a voucher with the same code already exists.

---

[API](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions.md) · [All operations](https://skmtc.net/voucherifyio/apis/voucherify-api-async-actions/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/voucherifyio/voucherify-api-async-actions/versions/4982266e0494/schema)
