Punchh Redemptions 1.0 (Legacy) API - POS
For more information, see POS Module 6 - Redemptions. Published by PAR on the pos section of the PAR developer portal; 6 operations. Certification required.
For more information, see POS Module 6 - Redemptions. Published by PAR on the pos section of the PAR developer portal; 6 operations. Certification required.
info:
title: Redemptions 1.0 (Legacy) API - POS
version: '1.0'
contact:
name: Punchh Dev Support
url: https://developers.punchh.com
description: For more information, see [POS Module 6 - Redemptions](/docs/dev-portal-pos/tutorials/modules/6-redemptions/overview).
paths:
/api/pos/redemptions/possible:
post:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
category:
type: string
description: 'Category returned for the redemption requested where values can be:
`redeemable`, `processed`, `expired`, `invalid`, `unassigned`. Consider the redemption
valid only when the category is returned as `redeemable`.'
qualified_menu_items:
$ref: '#/components/schemas/qualified_menu_items'
discount_distribution_items:
$ref: '#/components/schemas/discount_distribution_items'
redemption_amount:
type: number
format: double
description: Total redemption amount that can be applied on the order
redemption_code:
type: string
description: Redemption code associated with the redemption
redemption_id:
type: integer
format: int64
description: 'Unique ID associated with the redemption. Save this in your system for
future reference.
Note: In case of coupons or promos, the redemption_id returned would be same as
the redemption_code.'
status:
type: string
description: Message that explains if the customer's redemption was successfully completed
or not
max_applicable_quantity:
type: string
description: 'Maximum quantity that can be discounted.
Note: This key will be returned for offers related to Price Rollback.'
campaign_name:
type: string
x-stoplight:
id: nay0zr8svppfc
description: Name of the campaign through which the guest received the offer
qualifying_conditions:
type: object
x-stoplight:
id: 2onqx9pg08p59
description: The object lists all qualification criteria (both receipt-level and line-item)
for submitted offers that failed while processing the redemption. This object is
returned in the response only if the option to return the qualifying conditions
for Redemption 1.0 APIs is enabled for the business in the Punchh platform. See
the `data` object under [Get Qualification Criteria Response](https://developers.partech.com/docs/dev-portal-platform-functions/97ec083d6cf57-get-qualification-criteria-qc-list#response-body)
in Platform Functions for descriptions of the parameters in `qualifying_conditions`.
examples:
default:
value:
status: Redeemed at February 23, 2026 13:02 by <user> at Punchh Demo. It can be honored.
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
'422':
description: Unprocessable Entity - Unauthorized attempt to redeem a discount at a restricted
location
content:
application/json:
schema:
type: array
items: {}
examples:
Unauthorized attempt to redeem a discount at a restricted location:
value:
- The location (location name) has been disabled for redemption. Please alert a staff
member if you think this is an error.
summary: Possible Redemptions (Redemptions 1.0)
description: "Use this API to verify that a redemption can be applied on a given check. \n\nNote:\
\ The API returns a 422 error message when a user attempts to redeem a loyalty/ non-loyalty discount\
\ at a location that is disabled for redemption by the business. This error message can be customized\
\ for the businesses in the Punchh platform to provide them greater flexibility and control over\
\ the user experience during redemption attempts at such locations. Contact your Punchh representative\
\ for more information about this Punchh platform configuration.\n\n## Rules To Select Discount\
\ Type\n\nFollowing are the rules to decide what `discount_type` to use in the Possible Redemptions\
\ and Create Redemption API requests:\n\n### `reward`\nIn the User Lookup and Fetch Balance API\
\ request, if any item in the `rewards` array has either `type` as `reward` or does not have a\
\ `type` key, use its `id` to pass in the `reward_id` parameter and use `discount_type` = `reward`\
\ in the Possible Redemptions and Create Redemption API requests.\n\n### `redeemable`\nIn the\
\ User Lookup and Fetch Balance API request, if any item in the `rewards` array has `type` as\
\ `redeemable`, use its `id` to pass in the `redeemable_id` parameter and use `discount_type`\
\ = `redeemable` in the Possible Redemptions and Create Redemption API requests.\n\n### `discount_amount`\n\
In the User Lookup and Fetch Balance API request, if the value of `banked_rewards` returned in\
\ the `balance` object is greater than 0, then pass a dollar amount in the `redeemed_points` parameter\
\ not exceeding the value of `banked_rewards` and use `discount_type` = `discount_amount` in the\
\ Possible Redemptions and Create Redemption API requests.\n\n### `card_completion`\nIn the User\
\ Lookup and Fetch Balance API request, if the value of `unredeemed_cards` returned in the `balance`\
\ object is greater than 0, then use `discount_type` = `card_completion` in the Possible Redemptions\
\ and Create Redemption API requests.\n\n### `redemption_code`\nWhen Redemption Code or Punchh\
\ Coupon Code is entered on the POS either by scanning it using the QR code scanner or by manually\
\ entering it, pass that code in the `redemption_code` parameter and use `discount_type` = `redemption_code`\
\ in the Possible Redemptions and Create Redemption API requests.\n\n### `fuel_reward`\nIt allows\
\ a user to use the fuel discount balance, and it can be redeemed when the user is identified\
\ on the check. Use `discount_type` as `fuel_reward` in API requests.\n\n### `subscription`\n\
It allows a user to redeem subscription related benefits. In the User Lookup and Fetch Balance\
\ API request, if the `subscriptions` object has `subscription_id`, use this ID to pass in the\
\ `subscription_id` parameter and use `discount_type` = `subscription` in the Possible Redemptions\
\ and Create Redemption API requests."
operationId: pos_redemption_possible
parameters:
- schema:
type: string
default: Token token=LOCATION_KEY_GOES_HERE, btoken=BUSINESS_KEY_GOES_HERE
in: header
name: Authorization
description: This is a combination of unique API key as well as business key (UUID) as the Authorization
header.
required: true
- schema:
type: string
default: en
in: header
name: Accept-Language
description: Short code for locale variant (e.g., fr-ca, es-ES, en-EN, etc.)
x-stoplight:
id: 1531b3adec3c5
requestBody:
content:
application/json:
schema:
type: object
properties:
discount_type:
type: string
description: 'The type of discount. Choose from the following: reward, redeemable, discount_amount,
card_completion, redemption_code, fuel_reward, subscription. See the top of this page
for more information about each type. '
reward_id:
type: integer
format: int64
description: Send this value when discount_type is reward. This is the ID of the reward
the user wants to redeem.
redeemable_id:
type: string
description: Send this value when discount_type is redeemable. This is the ID of the
redeemable the user wants to redeem.
redeemed_points:
type: string
description: Send this value when discount_type is discount_amount. This is the amount
of the banked rewards the user wants to redeem.
redemption_code:
type: string
description: Send this value when discount_type is redemption_code. This is the Redemption
Code or Punchh Coupon Code that is entered on the POS and is associated with redemption.
subscription_id:
type: string
description: Send this value when discount_type is subscription. This is a system-generated
unique ID of the subscription that is issued to the guest.
cc_last4:
type: integer
description: Last 4 digits of the user's credit card number
employee_id:
type: string
description: 'The ID of the employee involved in the transaction. Used in reporting
and Punchh Reviews module. '
employee_name:
type: string
description: 'The name of the employee involved in the transaction. Used in reporting
and the Punchh Reviews module. '
menu_items:
$ref: '#/components/schemas/menu_items'
receipt_amount:
type: number
format: double
description: Order amount before taxes, calculated as the sum of all item amounts minus
any discounts. This is the amount used to calculate loyalty points/visits. The value
of this parameter should match `subtotal_amount`. For example, if the order amount
is $10, both `receipt_amount` and `subtotal_amount` will be 10. If a $2 discount is
applied, both will be 8.
subtotal_amount:
type: number
format: double
description: Order amount before taxes (sum of all item amounts minus any discounts).
Same as `receipt_amount`. For historical reasons, include this parameter along with
`receipt_amount` in the API request.
receipt_datetime:
type: string
format: date-time
description: Timestamp of the receipt per [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)
format including TZ offset from UTC (e.g., YYYY-MM-DDThh:mm:ss-±hh:mm)
transaction_no:
type: string
description: The specific transaction from the POS
external_uid:
type: string
punchh_key:
type: string
description: Punchh key (barcode without parity bit) of the receipt as generated by
the POS. Should be 11 or 12, 20 digits
email:
type: string
description: The email address of the user. In the case of the single scan flow, email
is not a required parameter.
single_scan_code:
type: string
description: Single scan code of the user is a required parameter when the user redeems
a reward through the single scan flow. The code identifies the user requesting the
redemption.
channel:
type: string
description: 'Channel through which the redemption was requested. Possible values are:
online_order, pos, web, mobile, dashboard, chatbot, kiosk.'
required:
- discount_type
- reward_id
- redeemable_id
- redeemed_points
- redemption_code
- subscription_id
- menu_items
- receipt_amount
- subtotal_amount
- receipt_datetime
- transaction_no
- punchh_key
- email
- single_scan_code
examples:
Subscription:
value:
discount_type: subscription
subscription_id: '1111111'
cc_last4: 1111
employee_id: 7
employee_name: EMPLOYEE_NAME_GOES_HERE
menu_items:
- item_name: Whiterice
item_qty: 1
item_amount: 2.86
menu_item_type: M
menu_item_id: '12'
menu_family: '800'
menu_major_group: '152'
serial_number: '1.0'
subtotal_amount: 10.72
receipt_amount: 10.72
receipt_datetime: '2023-02-18T18:05:01+05:30'
transaction_no: 5678
external_uid: EXTERNAL_UID_GOES_HERE
punchh_key: PUNCHH_KEY_GOES_HERE
email: test@example.com
channel: pos
Reward:
value: "{\n \"discount_type\": \"reward\",\n \"reward_id\": 1399335,\n \"cc_last4\"\
: 4387,\n \"employee_id\": 7,\n \"employee_name\": \"EMPLOYEE_NAME_GOES_HERE\",\n\
\ \"menu_items\": [\n {\n \"item_name\": \"Whiterice\",\n \"item_qty\"\
: 1,\n \"item_amount\": 2.86,\n \"menu_item_type\": \"M\",\n \"menu_item_id\"\
: \"12\",\n \"menu_family\": \"800\",\n \"menu_major_group\": \"152\",\n \
\ \"serial_number\": \"1.0\"\n },\n {\n \"item_name\": \"Brownrice\"\
,\n \"item_qty\": 1,\n \"item_amount\": 7.86,\n \"menu_item_type\": \"\
M\",\n \"menu_item_id\": \"3418\",\n \"menu_family\": \"800\",\n \"menu_major_group\"\
: \"152\",\n \"serial_number\": \"2.0\"\n }\n ],\n \"subtotal_amount\": 10.72,\n\
\ \"receipt_amount\": 10.72,\n \"receipt_datetime\": \"2015-04-03T18:05:01+05:30\"\
,\n \"transaction_no\": 5678,\n \"external_uid\": \"a unique id\",\n \"punchh_key\"\
: \"PUNCHH_KEY_GOES_HERE\",\n \"email\": \"test@example.com\",\n \"channel\": \"pos\"\
\n}"
Card Redemption:
value: "{\n \"discount_type\": \"card_completion\",\n \"receipt_amount\": 12.72,\n \
\ \"cc_last4\": 4387,\n \"employee_id\": 7,\n \"employee_name\": \"EMPLOYEE_NAME_GOES_HERE\"\
,\n \"menu_items\": [\n {\n \"item_name\": \"White rice\",\n \"item_qty\"\
: 1,\n \"item_amount\": 2.86,\n \"menu_item_type\": \"M\",\n \"menu_item_id\"\
: \"3419\",\n \"menu_family\": \"800\",\n \"menu_major_group\": \"152\",\n\
\ \"serial_number\": \"1.0\"\n },\n {\n \"item_name\": \"Brown rice\"\
,\n \"item_qty\": 1,\n \"item_amount\": 7.86,\n \"menu_item_type\": \"\
M\",\n \"menu_item_id\": \"3418\",\n \"menu_family\": \"800\",\n \"menu_major_group\"\
: \"152\",\n \"serial_number\": \"2.0\"\n }\n ],\n \"subtotal_amount\": 12.72,\n\
\ \"receipt_datetime\": \"2015-04-03T18:05:01+05:30\",\n \"transaction_no\": 5678,\n\
\ \"external_uid\": \"a unique id\",\n \"punchh_key\": \"PUNCHH_KEY_GOES_HERE\",\n\
\ \"process\": true,\n \"email\": \"test@example.com\"\n}"
Discount Amount:
value: "{\n \"discount_type\": \"discount_amount\",\n \"redeemed_points\": \"REDEEMED_POINTS_GOES_HERE\"\
,\n \"receipt_amount\": 12.72,\n \"cc_last4\": 4387,\n \"employee_id\": 7,\n \"\
employee_name\": \"EMPLOYEE_NAME_GOES_HERE\",\n \"menu_items\": [\n {\n \"\
item_name\": \"White rice\",\n \"item_qty\": 1,\n \"item_amount\": 2.86,\n\
\ \"menu_item_type\": \"M\",\n \"menu_item_id\": \"3419\",\n \"menu_family\"\
: \"800\",\n \"menu_major_group\": \"152\",\n \"serial_number\": \"1.0\"\n\
\ },\n {\n \"item_name\": \"Brown rice\",\n \"item_qty\": 1,\n \
\ \"item_amount\": 7.86,\n \"menu_item_type\": \"M\",\n \"menu_item_id\":\
\ \"3418\",\n \"menu_family\": \"800\",\n \"menu_major_group\": \"152\",\n\
\ \"serial_number\": \"2.0\"\n }\n ],\n \"subtotal_amount\": 12.72,\n \"\
receipt_datetime\": \"2015-04-03T18:05:01+05:30\",\n \"transaction_no\": 5678,\n \"\
external_uid\": \"a unique id\",\n \"punchh_key\": \"PUNCHH_KEY_GOES_HERE\",\n \"\
process\": true,\n \"email\": \"test@example.com\"\n}"
Redemption Code:
value: "{\n \"discount_type\": \"redemption_code\",\n \"receipt_amount\": 12.72,\n \
\ \"cc_last4\": 4387,\n \"employee_id\": 7,\n \"employee_name\": \"EMPLOYEE_NAME_GOES_HERE\"\
,\n \"menu_items\": [\n {\n \"item_name\": \"White rice\",\n \"item_qty\"\
: 1,\n \"item_amount\": 2.86,\n \"menu_item_type\": \"M\",\n \"menu_item_id\"\
: \"3419\",\n \"menu_family\": \"800\",\n \"menu_major_group\": \"152\",\n\
\ \"serial_number\": \"1.0\"\n },\n {\n \"item_name\": \"Brown rice\"\
,\n \"item_qty\": 1,\n \"item_amount\": 7.86,\n \"menu_item_type\": \"\
M\",\n \"menu_item_id\": \"3418\",\n \"menu_family\": \"800\",\n \"menu_major_group\"\
: \"152\",\n \"serial_number\": \"2.0\"\n }\n ],\n \"subtotal_amount\": 12.72,\n\
\ \"receipt_datetime\": \"2015-04-03T18:05:01+05:30\",\n \"transaction_no\": 5678,\n\
\ \"external_uid\": \"a unique id\",\n \"punchh_key\": \"PUNCHH_KEY_GOES_HERE\",\n\
\ \"process\": true,\n \"redemption_code\": \"REDEMPTION_CODE_GOES_HERE\"\n}"
Fuel Reward:
value: "{\n \"discount_type\": \"fuel_reward\",\n \"payable\": \"112\",\n \"employee_id\"\
: \"2\",\n \"employee_name\": \"EMPLOYEE_NAME_GOES_HERE\",\n \"punchh_key\": \"PUNCHH_KEY_GOES_HERE\"\
,\n \"email\": \"test@example.com\",\n \"external_uid\": \"EXTERNAL_UID_GOES_HERE\"\
,\n \"subtotal_amount\": \"100\",\n \"receipt_amount\": \"100\",\n \"sequence_no\"\
: \"2215\",\n \"transaction_no\": \"00057647\",\n \"process\": \"true\",\n \"receipt_datetime\"\
: \"2019-05-12T09:22:47-08:00\",\n \"menu_items\": [\n {\n \"item_name\": \"\
Adult\",\n \"item_qty\": \"1\",\n \"item_amount\": \"100\",\n \"menu_item_type\"\
: \"M\",\n \"menu_item_id\": \"10\",\n \"menu_family\": \"10\",\n \"\
menu_major_group\": \"10\",\n \"serial_number\": \"1.0\"\n }\n ]\n}"
Redeemable:
value: "{\n \"discount_type\": \"redeemable\",\n \"redeemable_id\": \"REDEEMABLE_ID_GOES_HERE\"\
,\n \"cc_last4\": 4387,\n \"employee_id\": 7,\n \"employee_name\": \"EMPLOYEE_NAME_GOES_HERE\"\
,\n \"menu_items\": [\n {\n \"item_name\": \"Whiterice\",\n \"item_qty\"\
: 1,\n \"item_amount\": 2.86,\n \"menu_item_type\": \"M\",\n \"menu_item_id\"\
: \"3419\",\n \"menu_family\": \"800\",\n \"menu_major_group\": \"152\",\n\
\ \"serial_number\": \"1.0\"\n },\n {\n \"item_name\": \"Brownrice\"\
,\n \"item_qty\": 1,\n \"item_amount\": 7.86,\n \"menu_item_type\": \"\
M\",\n \"menu_item_id\": \"3418\",\n \"menu_family\": \"800\",\n \"menu_major_group\"\
: \"152\",\n \"serial_number\": \"2.0\"\n }\n ],\n \"subtotal_amount\": 10.72,\n\
\ \"receipt_amount\": 10.72,\n \"receipt_datetime\": \"2015-04-03T18:05:01+05:30\"\
,\n \"transaction_no\": 5678,\n \"external_uid\": \"a unique id\",\n \"punchh_key\"\
: \"PUNCHH_KEY_GOES_HERE\",\n \"email\": \"test@example.com\"\n}"
/api/pos/redemptions:
post:
responses:
'200':
description: ''
content:
application/json:
schema:
type: object
properties:
category:
type: string
description: 'Category returned for the redemption requested where values can be:
`redeemable`, `processed`, `expired`, `invalid`, `unassigned`. Consider the redemption
valid only when the category is returned as `redeemable`.'
qualified_menu_items:
$ref: '#/components/schemas/qualified_menu_items'
discount_distribution_items:
$ref: '#/components/schemas/discount_distribution_items'
redemption_amount:
type: number
format: double
description: Total redemption amount that can be applied on the order
redemption_code:
type: string
description: Redemption code associated with the redemption
redemption_id:
type: integer
format: int64
description: 'Unique ID associated with the redemption. Save this in your system for
future reference. Note: In case of coupons or promos, the redemption_id returned
would be same as the redemption_code.'
status:
type: string
description: Message that explains if the customer's redemption was successfully completed
or not
max_applicable_quantity:
type: string
description: 'Maximum quantity that can be discounted. Note: This key will be returned
for offers related to Price Rollback.'
qualifying_conditions:
type: object
x-stoplight:
id: o93tke6pzpsv6
description: The object lists all qualification criteria (both receipt-level and line-item)
for submitted offers that failed while processing the redemption. This object is
returned in the response only if the option to return the qualifying conditions
for Redemption 1.0 APIs is enabled for the business in the Punchh platform. See
the `data` object under [Get Qualification Criteria Response](https://developers.partech.com/docs/dev-portal-platform-functions/97ec083d6cf57-get-qualification-criteria-qc-list#response-body)
in Platform Functions for descriptions of the parameters in `qualifying_conditions`.
campaign_name:
type: string
x-stoplight:
id: i48yporb101bg
description: Name of the campaign through which the guest received the offer
examples:
default:
value:
status: Redeemed at February 23, 2026 13:02 by <user> at Punchh Demo. It can be honored.
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
'422':
description: Unprocessable Entity - Unauthorized attempt to redeem a discount at a restricted
location
content:
application/json:
schema:
type: array
items: {}
examples:
Unauthorized attempt to redeem a discount at a restricted location:
value:
- The location (location name) has been disabled for redemption. Please alert a staff
member if you think this is an error.
summary: Create Redemption (Redemptions 1.0)
description: "Redeems a card, reward, redeemable, or discount specified in the discount_type parameter\
\ against a receipt. Every request must have phone, email, card_number, or redemption_code as\
\ a parameter. \n\nPunchh evaluates eligibility during the Possible Redemptions call using the\
\ receipt details provided (item name, price, quantity, identifiers, etc.). During the Create\
\ Redemption call, Punchh revalidates the same receipt to ensure the qualifying conditions are\
\ still met before honoring the redemption. \n\nIf any item attributes change between the two\
\ calls, Punchh may be unable to match the qualifying items, which can cause the Create Redemption\
\ call to fail or return a different result—even if the Possible Redemptions call was successful.\n\
\nNote: The API returns a 422 error message when a user attempts to redeem a loyalty/ non-loyalty\
\ discount at a location that is disabled for redemption by the business. This error message can\
\ be customized for the businesses in the Punchh platform to provide them greater flexibility\
\ and control over the user experience during redemption attempts at such locations. Contact your\
\ Punchh representative for more information about this Punchh platform configuration.\n\n## Rules\
\ to Select Discount Type\n\nFollowing are the rules to decide what `discount_type` to use in\
\ the Possible Redemptions and Create Redemption API requests:\n\n### `reward`\nIn the User Lookup\
\ and Fetch Balance API request, if any item in the `rewards` array has either `type` as `reward`\
\ or does not have a `type` key, use its `id` to pass in the `reward_id` parameter and use `discount_type`\
\ = `reward` in the Possible Redemptions and Create Redemption API requests.\n\n### `redeemable`\n\
In the User Lookup and Fetch Balance API request, if any item in the `rewards` array has `type`\
\ as `redeemable`, use its `id` to pass in the `redeemable_id` parameter and use `discount_type`\
\ = `redeemable` in the Possible Redemptions and Create Redemption API requests.\n\n### `discount_amount`\n\
In the User Lookup and Fetch Balance API request, if the value of `banked_rewards` returned in\
\ the `balance` object is greater than 0, then pass a dollar amount in the `redeemed_points` parameter\
\ not exceeding the value of `banked_rewards` and use `discount_type` = `discount_amount` in the\
\ Possible Redemptions and Create Redemption API requests.\n\n### `card_completion`\nIn the User\
\ Lookup and Fetch Balance API request, if the value of `unredeemed_cards` returned in the `balance`\
\ object is greater than 0, then use `discount_type` = `card_completion` in the Possible Redemptions\
\ and Create Redemption API requests.\n\n### `redemption_code`\nWhen Redemption Code or Punchh\
\ Coupon Code is entered on the POS either by scanning it using the QR code scanner or by manually\
\ entering it, pass that code in the `redemption_code` parameter and use `discount_type` = `redemption_code`\
\ in the Possible Redemptions and Create Redemption API requests.\n\n### `fuel_reward`\nIt allows\
\ a user to use the fuel discount balance, and it can be redeemed when the user is identified\
\ on the check. Use `discount_type` as `fuel_reward` in API requests.\n\n### `subscription`\n\
It allows a user to redeem subscription related benefits. In the User Lookup and Fetch Balance\
\ API re
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/punchh/refs/heads/main/openapi/punchh-pos-redemptions-legacy-openapi.yml