Skip to content
Last updated

A redemption starts when the customer views a wallet balance or applies points to a cart. It ends when the hold is confirmed by an order-placed event or reverted after the allowed window.

Redemption lifecycle from wallet lookup and cart hold to order confirmation or timeout reversion
Figure 1: Cart redemption hold, confirmation, and timeout reversion

Request sequence

  1. Get the wallet balance: The storefront or POS requests the wallet balance using the Engage user ID.
  2. Resolve the customer: Engage calls the partner customer-search operation using the customer's mobile number.
  3. Return the available balance: The partner returns the current available balance.
  4. Map the wallet: Engage maps the provider response into the Engage wallet schema.
  5. Apply points: The storefront or POS applies points using the cart ID.
  6. Create the hold: Engage calls the provider redemption operation with action:perform and reference <salesChannelId>:<cartId>.
  7. Return the discount: The provider returns the discount and hold transaction.
  8. Apply the discount: Engage returns the mapped discount to the storefront or POS.

Hold outcomes

When Fynd Commerce emits the matching order-placed webhook within the allowed window, the partner confirms the hold using order.cart_info.cart_object_id to resolve the cart reference.

The order-placed event confirms the redemption. Earned points are credited later, after the applicable shipment reaches a terminal delivery status.

Explicit cancellation

Engage exposes POST /v2/order/transaction/cancel, which maps to the partner cancelOrder adapter method. The provider reverts the hold with action:revert using the original redemption reference.

Credit compared with hold

The order-placed event confirms the points spent by the customer. Earned points are credited only when a shipment reaches delivery_done or handed_over_to_customer. When a shipment is cancelled or a refund is initiated, reverse points against that shipment's loyalty_discount value

Idempotency requirements

  • Treat <salesChannelId>:<cartId> as the unique redemption reference.
  • Support perform, confirm, and revert operations against the same reference.
  • Return a consistent result when an event or request is retried.
  • Prevent a confirmed hold from being reverted by the timeout job.

Continue to Webhooks for event names, payload fields, and shipment status actions.