Create Cart Promotion

Lets you create any type of cart promotion.



Notes

  • Mandatory fields are indicated with an asterisk
  1. The condition and action parameters exist in nested structures in the JSON:

    • Cart condition parameters are nested under condition.cartCondition
    • Product condition parameters are nested under condition.productCondition
    • Combo product condition parameters are nested under condition.comboProductCondition
    • Tender condition parameters are nested under condition.tenderCondition
    • Cart-based action parameters are nested under action.cartBasedAction
    • Product-based action parameters are nested under action.productBasedAction
    • Product-based condition parameters are nested under action.productBasedAction.productBasedCondition
    • Tender-based action parameters are nested under action.tenderBasedAction
  2. Tender condition must be paired with a tender action for consistency.

  3. Default value for maxIssuancePerCustomer is 1, with valid range from -1 to 50.

  4. Default value for isStackable is false.

  5. Default value for priority is 0.

  6. Priority values should be unique within a campaign for deterministic behavior.

  7. All datetime values are in milliseconds since epoch in UTC timezone.

  8. When stacking is enabled, the stacking strategy at the organization level determines how multiple promotions are applied.

  9. Read-only fields cannot be set in requests but are included in responses.

  10. For tender conditions, CARD type requires an identifier specifying the card network or bank.

  11. The combo product condition is satisfied when ALL individual product conditions in the array are met, creating a bundle or meal-deal type of promotion.

  12. This API is not currently exposed externally.

  13. Validation Rules:

    • Percentage values must be between 0 and 100
    • Amount values must be positive and have up to 2 decimal places
    • Dates must be valid future timestamps
    • Priority values must be unique within a campaign
    • Product quantities must be positive integers
  14. Error Handling:

    • Invalid combinations of conditions and actions will return a 400 Bad Request
    • Missing required fields will return a 400 Bad Request
    • Invalid parameter values will return a 400 Bad Request
    • System errors will return a 500 Internal Server Error

Request body Parameters

ParameterData TypeDescription
name*stringUnique name for this cart promotion (max 50 characters).
orgId*longYour organization’s ID.
priorityintDetermines apply order within a campaign (higher = higher). Must be unique per campaign. Default 0.
active*booleantrue = enabled; false = disabled (won’t apply even if conditions match).
messageLabel*stringCustomer‑facing message when promotion applies (e.g. “Holiday Sale 25% Off”).
type*enumPromotion context: POS, CODE, CUSTOMER, EARNING, or REWARD.
startDate*longStart time (ms since epoch UTC).
endDate*longEnd time (ms since epoch UTC).
campaignIdlong(Optional) Marketing campaign linkage.
createdBylongRead‑only ID of creator.
createdOnlongRead‑only creation timestamp.
lastUpdatedBylongRead‑only ID of last editor.
lastUpdatedOnlongRead‑only last‑update timestamp.
customerActivationRequiredbooleanIf true, customer must manually enable this promotion. Default false.
isLoyaltyOnly*booleanIf true, only loyalty‑program members can use.
mode*enumDISCOUNT (reduce price) or REWARD (grant reward).
maxIssuancePerCustomer*intTimes each customer may use (–1 = unlimited; max 50). Default 1.
isStackable*booleanIf true, can combine with other promotions on same item. Default false.
expiryDateChangeJobListarrayScheduled tasks updating end dates.
customFieldValuesobjectBusiness‑specific key/value pairs.
condition.cartCondition.kpienumWhat to measure: SUBTOTAL (cart value) or ITEMCOUNT (number of items).
condition.cartCondition.operatorenumComparison: EQUALS, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL.
condition.cartCondition.valuedecimalTarget amount or item count (positive, up to 2 decimals).
condition.productCondition.kpienumAMOUNT, QUANTITY, or NONE (just presence).
condition.productCondition.operatorenumSame operator list as cartCondition.
condition.productCondition.valuedecimalTarget amount/count.
condition.productCondition.criteriaListarrayList of filters (by SKU/CATEGORY/BRAND/TAG/ATTRIBUTE).
condition.comboProductCondition.productConditionsarrayArray of objects—each requires its own criteriaList, kpi, operator, value.
condition.comboProductCondition.productConditions[].criteriaListarrayFilters for that bundle piece.
condition.comboProductCondition.productConditions[].kpienumQUANTITY or AMOUNT.
condition.comboProductCondition.productConditions[].operatorenumEQUALS or GREATER_THAN_OR_EQUAL.
condition.comboProductCondition.productConditions[].valuedecimalRequired count or total.
condition.tenderCondition.typeenumCARD, CASH, or PAYMENT_VOUCHER.
condition.tenderCondition.identifierstringFor CARD only: card network/bank code (e.g. “VISA”).
action.cartBasedAction.typeenumDiscount type: PERCENTAGE or ABSOLUTE.
action.cartBasedAction.valuedecimalPercent (0–100) or fixed amount.
action.productBasedAction.typeenumSame as cartBasedAction.type.
action.productBasedAction.valuedecimalDiscount percent or amount.
action.productBasedAction.includeItemsFromConditionSetbooleanIf true, applies to trigger items. Default false = can target other items.
action.productBasedAction.productBasedCondition.typeenumCondition for which items get discounted: PRODUCT, CART, or COMBO_PRODUCT.
action.productBasedAction.productBasedCondition.productConditionobjectNested productCondition (see above).
action.productBasedAction.productBasedCondition.cartConditionobjectNested cartCondition.
action.productBasedAction.productBasedCondition.comboProductConditionobjectNested comboProductCondition.
action.tenderBasedAction.typeenumSame as cartBasedAction.type.
action.tenderBasedAction.valuedecimalPercent or amount for tender‑based discount.
loyaltyEarningExpiryDaysintDays until earned points expire (0 = never).
maxEarningPerCustomerintMaximum points one customer can earn.
earningCriteriaobjectRules for calculating loyalty points.
promotionRestrictionsobjectExtra limits on promotion usage.
earnLimitedToSpecificAudiencebooleanIf true, restrict earning to certain groups.
timeCriteriaobjectDays of week, hours, holidays when promo is valid.
storeCriteriaobjectStores where this promo applies.
supplementaryCriteriaobjectExtra loyalty‑program conditions.
redeemableFromCriteriaobjectRules for when earned promo can be redeemed.
ownershipCriteriaobjectWho may edit this promotion.
onEarnCommunicationChannelsobjectChannels (SMS/email/app) to notify when earned.
languagesConfiguredarraySupported languages list.
fixedPriceAction.valuedecimalIf type = FIXED_PRICE: price to charge instead of regular.
freeProductAction.productCriteriaobjectFilter rules for “free” items.
freeProductAction.quantitydecimalHow many free items to give.
perUnitAction.typeenumPer‑unit discount: PERCENTAGE or ABSOLUTE.
perUnitAction.valuedecimalDiscount per unit (%, fixed).
perUnitAction.unitTypeenumUnit type (e.g. EACH, LITER, GALLON).
Language
Credentials
Basic
base64
:
URL
Click Try It! to start a request and see the response here!