Promo Codes

Many promo codes types are supported by the WSHOP API. Here are the datas you'll need to send to create them.

Promo codes types

The slug is to be used in the type field.

TypeSlug
Percentage of reductionpct-discount
Fixed discountfixed-discount
Free shipping feesfree-shipping
Free specific productfree-product-specific
Buy X products, get a X% discountbuy-x-get-pct-off
Buy X amount, get X amount offspend-x-get-amount-off
Buy X amount, get a X% discountspend-x-get-pct-off
Buy X products, get X free productsbuy-x-get-x-free
Nth item at X amountnth-item-fixed-price
Nth item at X% discountnth-item-pct-off
Free selection with selectionfree-selection-with-selection
X% discount on shipping feesshipping-pct-discount
Customer service discountcs-discount
Dynamic discountdynamic-discount
Multi fixed discountmulti-fixed-discount
Buy X products, the Xth product is at a fixed pricebuy-x-get-nth-fixed-price

Promo codes fields

FieldData TypeMandatoryFor promo code typesAccepted ValuesDefault ValueDescriptionExample
labelstringAllThe name of the promo code
codestringAllThe code of the promo code
typeenumAllpct-discount, fixed-discount, free-shipping, free-product-specific, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, shipping-pct-discount, cs-discount, dynamic-discount, multi-fixed-discount, buy-x-get-nth-fixed-price, auto-tiered-discount, buy-x-get-amount-offThe type of the promo code
formatobjectAllThe format of the promo code
format.typeenumAllpermanent, single-use, first-order, first-order-service, first-order-productThe format type
format.unlimited_usageboolean️ ⚠️AllThe promo code can be used an infinite number of times. Required if format.type is permanent
format.max_usage_countinteger⚠️AllThe number of times the promo code can be used. Required if format.type is permanent and format.unlimited_usage is false
start_datedate⚠️AllYYYY-MM-DDThe date the promo code starts. Required if format.type is either permanent or single-use2026-04-24
end_datedate⚠️AllYYYY-MM-DDThe date the promo code ends. Required if format.type is either permanent or single-use2026-04-24
min_order_amountfloat❌️pct-discount, fixed-discount, free-shipping, free-selection-with-selection, shipping-pct-discount,cs-discount, dynamic-discount, multi-fixed-discount0The minimum amount in cart required to use the promo code
discount_valueintegerpct-discount, fixed-discount, shipping-pct-discount, cs-discount, dynamic-discountThe value of the promo code' discount
max_eligible_productsinteger❌️AllNo maximumThe maximum number of products in cart on which the promo code will be applied.
auto_appliedboolean❌️AllfalseWhen true, the promo code will be automatically added to the cart. Only one coupon can be automatically added to the cart in the same period
shipping_discountobject❌️pct-discount, fixed-discount, free-product-specific, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, cs-discount, dynamic-discount, multi-fixed-discount, buy-x-get-nth-fixed-price, auto-tiered-discount, buy-x-get-amount-offNo discountThe discount which will be applied to the shipping fees
shipping_discount.enableboolean⚠️pct-discount, fixed-discount, free-product-specific, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, cs-discount, dynamic-discount, multi-fixed-discount, buy-x-get-nth-fixed-price, auto-tiered-discount, buy-x-get-amount-offEnabling the discount which will be applied to the shipping fees. Required when shipping_discount is present
shipping_discount.discount_valuefloat❌️pct-discount, fixed-discount, free-product-specific, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, cs-discount, dynamic-discount, multi-fixed-discount, buy-x-get-nth-fixed-price, auto-tiered-discount, buy-x-get-amount-offNo paid shipping feesThe value discount which will be applied to the shipping fees. It is a fixed amount.
shipping_discount.carrier_scopeenum⚠️pct-discount, fixed-discount, free-product-specific, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, cs-discount, dynamic-discount, multi-fixed-discount, buy-x-get-nth-fixed-price, auto-tiered-discount, buy-x-get-amount-offall, standard-and-relay, standard, relay, large-itemThe scope of the discount which will be applied to the shipping fees. Required if shipping_discount.enable is true
apply_on_original_priceboolean❌️pct-discount, fixed-discount, free-shipping, free-product-specific, free-selection-with-selection, shipping-pct-discount, dynamic-discountfalseWhen there is a commercial operation, the discount will be applied on the original selling price
terms_and_conditionsstring❌️AllThe terms and conditions which will be displayed on the website
audienceobject❌️AllThe audience targeted by the promo code
audience.scopeenum⚠️Allall, email, newsletter-id, client-idThe scope of the audience. Required when audienceis present
audience.emailsarray⚠️AllA list of email addresses. Required when audience.scope is email['[email protected]', '[email protected]']
audience.newsletter_idsarray⚠️AllA list of newsletter IDs. Required when audience.scope is newsletter-id[12,58]
audience.client_idsarray⚠️AllA list of client IDs. Required when audience.scope is client-id
audience.send_alert_mailbooleanfixed-discountfalseSend an alert mail to the audience
audience.send_reclamation_mailbooleanmulti-fixed-discountfalseSend a reclamation mail (C5) to the audience
audience.send_replacement_mailbooleanmulti-fixed-discountfalseSend a replacement mail (C2, C3, C4) to the audience
apply_on_cheapestbooleannth-item-pct-offtrueApply the promo code on the cheapest products first
hide_on_websitebooleanfree-selection-with-selectiontrueThe tiers are cumulable
qty_in_cartintegernth-item-pct-off, nth-item-fixed-price, free-selection-with-selection, buy-x-get-nth-fixed-priceQuantity of products in cart
qty_freeintegerfree-selection-with-selectionQuantity of free products
selection_free_shippingenumfree-selection-with-selectionall, standard-and-relay, standard, relay, large-itemNo free shipping fees for the free productsIf the shipping must be free for the free products, determines the scope
free_selectionobjectfree-selection-with-selectionqty_free products from this selection will be free
free_selection.modeenum⚠️free-selection-with-selectiondepartment, sub_category, product, carrierThe selection mode. basket means the promo code will be applied to the whole basket, service means the promo code will be applied on the services only
free_selection.carriersenum⚠️free-selection-with-selectionall, standard-and-relay, large-itemThe carrier scope. Required if product_selection.mode is carrier
free_selection.departmentsarray⚠️free-selection-with-selectionA list of department IDs. Required if product_selection.mode is department
free_selection.sub_categoriesarray⚠️free-selection-with-selectionA list of sub-category IDs. Required if product_selection.mode is sub-category
free_selection.productsarray⚠️free-selection-with-selectionA list of products internal references. Required if product_selection.mode is product["01W000125","01W000418"]
selling_pricefloatnth-item-fixed-price, buy-x-get-nth-fixed-priceThe price the products will be sold
pct_discountfloatnth-item-pct-offThe discount percentage applied to the products
up_to_x_timesintegernth-item-fixed-price, nth-item-pct-off, buy-x-get-nth-fixed-price1Repeat the discount up to X times
cumulable_tiersbooleanfree-product-specifictrueThe tiers are cumulable
free_productsarrayfree-product-specifictrueA list of free products
free_products[].conditionfloatfree-product-specifictrueThe minium amount for the free product to be added to the client's basket
free_products[].productsarrayfree-product-specifictrueA list of products that can be free. The first product of this list with enough inventory left will be added to the basket
free_products[].products[].referencestringfree-product-specifictrueThe internal reference of the product
free_products[].products[].hidebooleanfree-product-specifictrueHide this product on the website while the promo code is active
tiersarrayauto-tiered-discount, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, buy-x-cart-get-pct-off, buy-x-get-amount-offA list of tiers (up to 4)
tiers[].conditionnumericauto-tiered-discount, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, buy-x-cart-get-pct-off, buy-x-get-amount-offThe condition needed for the tier to be applied. Value for spend-x-get-amount-off, spend-x-get-pct-off is a float, integer otherwise
tiers[].valuenumericauto-tiered-discount, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, buy-x-cart-get-pct-off, buy-x-get-amount-offThe value applied for the tier. It must be a integer for buy-x-get-x-free, float otherwise
productarraymulti-fixed-discountA list of products with their external reference, new selling price and label ID
product[].external_referencestringmulti-fixed-discountThe external reference of the product
product[].pricenumericmulti-fixed-discountThe new selling price
product[].labelintegermulti-fixed-discountThe ID of the label which will be displayed on the product
eligible_countriesarrayAllA list of alpha-2 country ISO codes. The promo code will only work on the addresses of those countries["FR", "BE"]
eligible_carriersarrayAllA list of carrier IDs. The promo code will only work if the client chooses one of those carriers
product_selectionobject⚠️pct-discount, fixed-discount, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, cs-discount, dynamic-discount,auto-tiered-discountA selection of products. The promo code will only work on the products from this selection. Required when eligible_services is not present
product_selection.modeenum⚠️pct-discount, fixed-discount, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, cs-discount, dynamic-discount,auto-tiered-discountbasket, department, super-category, category, sub_category, brand, product for types pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, shipping-pct-discount, cs-discount, dynamic-discount, basket, department, super-category, category, sub_category, brand, product, service for type free-selection-with-selection,buy-x-get-nth-fixed-price, multi-fixed-discount, and department, product, carrier for types buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, auto-tiered-discount, buy-x-get-amount-offThe selection mode. basket means the promo code will be applied to the whole basket, service means the promo code will be applied on the services only
product_selection.super_categoriesarray⚠️pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, shipping-pct-discount, cs-discount, dynamic-discount, buy-x-get-nth-fixed-price, multi-fixed-discountA list of super category IDs. Required if product_selection.mode is super-category
product_selection.carriersenum⚠️buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, auto-tiered-discount, buy-x-get-amount-offall, standard-and-relay, large-itemThe carrier scope. Required if product_selection.mode is carrier
product_selection.categoriesarray⚠️pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, shipping-pct-discount, cs-discount, dynamic-discount, buy-x-get-nth-fixed-price, multi-fixed-discountA list of category IDs. Required if product_selection.mode is category
product_selection.departmentsarray⚠️pct-discount, fixed-discount, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, cs-discount, dynamic-discount,auto-tiered-discountA list of department IDs. Required if product_selection.mode is department
product_selection.sub_categoriesarray⚠️pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, shipping-pct-discount, cs-discount, dynamic-discount, buy-x-get-nth-fixed-price, multi-fixed-discountA list of sub-category IDs. Required if product_selection.mode is sub-category
product_selection.brandsarray⚠️pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, free-selection-with-selection, shipping-pct-discount, cs-discount, dynamic-discount, buy-x-get-nth-fixed-price, multi-fixed-discountA list of brand IDs. Required if product_selection.mode is brand
product_selection.productsarray⚠️pct-discount, fixed-discount, buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, nth-item-fixed-price, nth-item-pct-off, cs-discount, dynamic-discount,auto-tiered-discountA list of products internal references. Required if product_selection.mode is product["01W000125","01W000418"]
cart_selectionobject✅️free-selection-with-selection, buy-x-get-nth-fixed-priceA selection of products. The promo code will only work if the basket has some of the products from this selection
cart_selection.modeenum️✅️free-selection-with-selection, buy-x-get-nth-fixed-pricebasket, department, super-category, category, sub_category, brand, product for types pct-discount, fixed-discount, free-shipping, nth-item-fixed-price, nth-item-pct-off, shipping-pct-discount, cs-discount, dynamic-discount, basket, department, super-category, category, sub_category, brand, product, service for type free-selection-with-selection,buy-x-get-nth-fixed-price, multi-fixed-discount, and department, product, carrier for types buy-x-get-pct-off, spend-x-get-amount-off, spend-x-get-pct-off, buy-x-get-x-free, auto-tiered-discount, buy-x-get-amount-offThe selection mode. basket means the promo code will work on the whole basket, service means the promo code will be applied on the services only
cart_selection.super_categoriesarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of super category IDs. Required if product_selection.mode is super-category
cart_selection.carriersenum⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceall, standard-and-relay, large-itemThe carrier scope. Required if product_selection.mode is carrier
cart_selection.categoriesarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of category IDs. Required if product_selection.mode is category
cart_selection.departmentsarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of department IDs. Required if product_selection.mode is department
cart_selection.sub_categoriesarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of sub-category IDs. Required if product_selection.mode is sub-category
cart_selection.brandsarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of brand IDs. Required if product_selection.mode is brand
cart_selection.productsarray⚠️free-selection-with-selection, buy-x-get-nth-fixed-priceA list of products internal references. Required if product_selection.mode is product["01W000125","01W000418"]
discounted_selectionobject✅️buy-x-get-nth-fixed-priceA selection of products. The promo code will only be applied on the products from this selection
discounted_selection.modeenum⚠️free-selection-with-selectiondepartment, sub_category, product, carrierThe selection mode. basket means the promo code will be applied to the whole basket, service means the promo code will be applied on the services only
discounted_selection.carriersenum⚠️free-selection-with-selectionall, standard-and-relay, large-itemThe carrier scope. Required if product_selection.mode is carrier
discounted_selection.departmentsarray⚠️free-selection-with-selectionA list of department IDs. Required if product_selection.mode is department
discounted_selection.sub_categoriesarray⚠️free-selection-with-selectionA list of sub-category IDs. Required if product_selection.mode is sub-category
discounted_selection.productsarray⚠️free-selection-with-selectionA list of products internal references. Required if product_selection.mode is product["01W000125","01W000418"]
eligible_servicesarray⚠️pct-discount,fixed-discount,free-shipping,free-product-specific,buy-x-get-pct-off,spend-x-get-amount-off,spend-x-get-pct-off,buy-x-get-x-free,nth-item-fixed-price,nth-item-pct-off,dynamic-discount,multi-fixed-discount,buy-x-get-nth-fixed-price,auto-tiered-discountA list of service IDs. Required if product_selection is not present
siteinteger❌️All1The site ID