> ## Documentation Index
> Fetch the complete documentation index at: https://help.lobyco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Coupon Redemption at POS

> Confirm which coupons were actually used so they cannot be redeemed twice.

This page describes the **coupon redemption lifecycle** — reserving, redeeming and cancelling coupons.

## Redeem and cancel

Once the coupons to apply have been determined, the redemption lifecycle has up to two steps. Redemption actually consumes the coupons, while cancellation is optionally used to make coupons available again immediately.

<Steps>
  <Step>
    ### Redeem

    [POST v2/customers/\{customerId}/coupons/redeem](/api-reference/promotion-platform/coupons-pos/post-v2-customers-customerid-coupons-redeem)

    Confirms that the purchase was finished and the coupons were used. Coupons can also be redeemed based on coupon ids sent along with transaction data. Include store id and total basket value for better reporting.
  </Step>

  <Step>
    ### \[Optional] Cancel reservation

    [POST /v1/customers/\{customerId}/coupons/cancel-reservation](/api-reference/promotion-platform/coupons-pos/post-api-v1-customers-customerid-coupons-cancel-reservation)

    Notifies Lobyco that the purchase was cancelled and the reserved-but-unused coupons should become available again on other POSes. Reservations automatically time out after 1 minute.
  </Step>
</Steps>

## Returns and refunds

In case of returns, Lobyco supports refunding used coupons and making them available again if they are still within the main campaign validity period. This needs to be done specifically to return the coupons — Lobyco does not automatically calculate which coupon should be returned. To refund the coupon, use [POST /v1/customers/\{customerId}/coupons/cancel-redeem](/api-reference/promotion-platform/coupons-pos/post-api-v1-customers-customerid-coupons-cancel-redeem)​

## Offline redemption

Currently Lobyco does not support offline flows for coupon selection and discount calculation. Coupon **redemption**, however, has an offline path.

If coupons were already applied and the purchase finished, but online notification of redemption is not possible, include the redeemed coupons in the `couponIds` field of the purchase in the [POST /v1/purchases](/api-reference/retail-master-data/purchases/post-v1-purchases) request.

For offline redemption to work properly, `receiptId` should match the `IdempotencyKey` used in calls to [POST v2/customers/\{customerId}/coupons/redeem](/api-reference/promotion-platform/coupons-pos/post-v2-customers-customerid-coupons-redeem).
