Create Online Redemption (Redemptions 1.0)

​

Redeems a card, reward, redeemable, or discount specified in the discount_type parameter against a receipt.

Punchh evaluates eligibility during the Possible Redemptions call using the receipt details provided (item name, price, quantity, identifiers, etc.). During the Create Online Redemption API call, Punchh revalidates the same receipt to ensure the qualifying conditions are still met before honoring the redemption.

If any item attributes change between the two calls, Punchh may be unable to match the qualifying items, which can cause the Create Online Redemption API call to fail or return a different result—even if the Possible Redemptions call was successful.

NOTE: When processing a redemption, DO NOT include the query parameter in the API request. Use this parameter only to check for possible redemptions.

Headers

  • The signature for the API call

  • Set this header to application/json.

  • Advertises which content types the client is able to understand

  • You may pass the access_token instead of the authentication_token in Online Ordering endpoints to authorize the request. It must be supplied as Bearer ACCESS_TOKEN_GOES_HERE.

  • For details, see User Agent.

Body

application/json
  • Client key of the business

  • Any one of these values: card_completion || reward || redeemable || discount_amount || redemption_code || subscription. For details, see Getting Started With Online Ordering APIs.

    values
    rewardcard_completionredeemablediscount_amountredemption_codesubscription
  • Order amount before taxes, calculated as the sum of item_amount for M line items in menu_items minus the item_amount for D line items; S, T, and P line items are excluded. See the description of the D, S, T, and P items in the menu_items.menu_item_type request parameter. The value of this parameter should match subtotal_amount.

    Note: We do not recommend sending either brand or Punchh discounts as line items in any Redemptions 1.0 requests. See the description of the D item in the menu_item_type request parameter. For multiple redemptions, include previously applied offers as D line items in subsequent requests. See Multiple Redemptions Example for processing multiple discounts.

    ⚠️ Important: During create check-in or update check-in, loyalty points and visits are calculated based on the individual item amounts in the menu_items array, not directly from receipt_amount.

  • Timestamp of receipt as per ISO 8601, in YYYY-MM-DDThh:mm:ssZ format

  • The location where the redemption must be redeemed

  • Order amount before taxes, calculated as the sum of item_amount for M line items in menu_items minus the item_amount for D line items; S, T, and P line items are excluded. See the description of the D, S, T, and P items in the menu_items.menu_item_type request parameter. Same as receipt_amount. For historical reasons, include this parameter along with receipt_amount in the API request.

  • Receipt number or transaction number on the receipt

  • The authentication token of the user. You can retrieve this from the response of a successful sign-in API call or through the SSO process.

  • Last 4 digits of credit card number

  • Channel through which the redemption was requested. Possible values are: online_order, pos, web, mobile, dashboard, chatbot, and kiosk.

    values
    poswebonline_ordermobiledashboardchatbotkiosk
  • Email address of the user (required to be sent only in case of coupons and promos)

  • Employee ID

Responses

  • application/json
  • Sending invalid credentials

  • Sending invalid Signature

  • application/json
Request Example for post/api/auth/redemptions/online_order
curl https://SERVER_NAME_GOES_HERE.punchh.com/api/auth/redemptions/online_order \
  --request POST \
  --header 'x-pch-digest: SIGNATURE_GOES_HERE' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer ACCESS_TOKEN_GOES_HERE' \
  --header 'User-Agent: Punchh/OnlineOrder/1.0/Web/BrowserVersion/OS_Type' \
  --data '{
  "authentication_token": "",
  "query": true,
  "cc_last4": "",
  "employee_id": "",
  "employee_name": "",
  "store_number": "",
  "menu_items": [
    {
      "item_name": "",
      "item_qty": 1,
      "item_amount": 1,
      "menu_item_type": "",
      "menu_item_id": "",
      "menu_family": "",
      "menu_major_group": "",
      "serial_number": ""
    }
  ],
  "receipt_amount": 1,
  "subtotal_amount": 1,
  "receipt_datetime": "",
  "transaction_no": "",
  "external_uid": "",
  "client": "",
  "channel": "pos",
  "state": "",
  "discount_type": "reward",
  "reward_id": 1,
  "redeemable_id": "",
  "redeemed_points": "",
  "redemption_code": "",
  "subscription_id": "",
  "email": ""
}'
{
  "status": "Redeemed at Feb 26, 2026 10:49 by FIRST_NAME_GOES_HERE LAST_NAME_GOES_HERE at Naperville. Please HONOR it.",
  "redemption_amount": 8,
  "category": "redeemable",
  "qualified_menu_items": [
    {
      "item_name": "Sandwich",
      "item_qty": 1,
      "item_amount": 5,
      "menu_item_type": "M",
      "menu_item_id": "102000",
      "menu_family": "Sandwich",
      "menu_major_group": "Sandwich",
      "serial_number": "1.0"
    },
    {
      "item_name": "Coke",
      "item_qty": 1,
      "item_amount": 7,
      "menu_item_type": "M",
      "menu_item_id": "102000",
      "menu_family": "Coke",
      "menu_major_group": "Coke",
      "serial_number": "2.0"
    }
  ],
  "discount_distribution_items": [
    {
      "item_name": "Sandwich DISCOUNT",
      "item_qty": 1,
      "item_amount": -3,
      "menu_item_type": "R",
      "menu_item_id": "102000",
      "menu_family": "Sandwich",
      "menu_major_group": "Sandwich",
      "serial_number": 1
    },
    {
      "item_name": "Coke DISCOUNT",
      "item_qty": 1,
      "item_amount": -5,
      "menu_item_type": "R",
      "menu_item_id": "102000",
      "menu_family": "Coke",
      "menu_major_group": "Coke",
      "serial_number": 2
    }
  ],
  "max_applicable_quantity": 1,
  "campaign_name": "Mass Campaign Offer",
  "redemption_id": 21762,
  "redemption_code": "REDEMPTION_CODE_GOES_HERE"
}