All Release Notes

Added support for discounting the Cart total

28 September 2023
Enhancement
Pricing and DiscountsCartsOrdersGraphQL

You can now create Cart Discounts that target the total price of a Cart. With this enhancement, you can configure promotions such as spend 200€ and get 5€ off the cart total. Previously, this discount configuration was not supported.

Changes:

  • [API] Added discountOnTotalPrice field to Cart and Order.
  • [API] Added DiscountOnTotalPrice and DiscountedTotalPricePortion to the Carts API.
  • [API] Added CartDiscountTotalPriceTarget type to the Cart Discounts API.
  • [GraphQL API] Added the following types to the GraphQL schema: DiscountOnTotalPrice, DiscountedTotalPricePortion, CartDiscountTotalPriceTarget.
  • [GraphQL API] Changed the CartDiscountTargetInput type:
    • Input field totalPrice was added to CartDiscountTargetInput type
  • [GraphQL API] Changed the Cart and Order type:
    • Added the discountOnTotalPrice field to the Cart and Order type.

The following changes were introduced in terms of GraphQL SDL:

extend type Cart {
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
discountOnTotalPrice: DiscountOnTotalPrice
}
extend type Order {
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
discountOnTotalPrice: DiscountOnTotalPrice
}
extend input CartDiscountTargetInput {
totalPrice: CartDiscountTotalPriceTargetInput
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type CartDiscountTotalPriceTarget implements CartDiscountTarget {
type: String!
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
input CartDiscountTotalPriceTargetInput {
dummy: String
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type DiscountOnTotalPrice {
discountedAmount: BaseMoney!
includedDiscounts: [DiscountedTotalPricePortion!]!
discountedNetAmount: BaseMoney
discountedGrossAmount: BaseMoney
}
"BETA: This feature can be subject to change and should be used carefully in production. https://docs.commercetools.com/api/contract#public-beta"
type DiscountedTotalPricePortion {
discount: CartDiscount
discountRef: Reference!
discountedAmount: BaseMoney!
}