Create Redeemable

Allows a business to define one or more redeemables. You can bulk create a maximum of 20 redeemables per API call. If the request input contains more than 20 redeemables, only the first 20 are created, and the remaining are ignored.

For more information, see Offers Ingestion Management

To call this API, the offers ingestion option must be enabled for the business on the Punchh platform. Contact your Punchh representative to update this Punchh platform configuration.

For more information on redeemable settings, see the Redeemables article on the Support Portal.

Note: To view the Punchh product documentation on the Punchh Support Portal, you must log in to a Punchh platform production environment. If you already have access to a production environment, follow the instructions here to access the Punchh Support Portal.

Headers
  • Accept
    Type: string

    Set this header to application/json

  • Content-Type
    Type: string

    Set this header to application/json

  • Authorization
    Type: string
    required

    Bearer token for admin authorization, who is making a call on behalf of the customer. Send the API key in the following format: "Authorization: Bearer BUSINESS_ADMIN_KEY_GOES_HERE".

Body·
application/json
  • data
    Type: array object[]
    required

    A list of redeemables that needs to be created

Responses
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/api2/dashboard/offers/redeemable
curl https://SERVER_NAME_GOES_HERE.punchh.com/api2/dashboard/offers/redeemable \
  --request POST \
  --header 'Accept: ' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer BUSINESS_ADMIN_KEY_GOES_HERE' \
  --data '{
  "data": [
    {
      "name": "Redeemable offer 30",
      "alternate_locale_name": [
        {
          "language": "fr",
          "translation": "FR MarlOffer 0.25"
        },
        {
          "language": "en",
          "translation": "MarlOffer 0.25"
        },
        {
          "language": "es",
          "translation": "ES MarlOffer 0.25"
        }
      ],
      "external_id": "EXTERNAL_ID_GOES_HERE",
      "description": "description",
      "alternate_locale_description": [
        {
          "language": "fr",
          "translation": "FR $0.25 Marl sContent Delivery Loyalty Offer"
        },
        {
          "language": "en",
          "translation": "$0.25 Marl sContent Delivery Loyalty Offer"
        },
        {
          "language": "es",
          "translation": "ES $0.25 Marl sContent Delivery Loyalty Offer"
        }
      ],
      "note": "Notes here",
      "allow_for_support_gifting": true,
      "available_as_template": false,
      "distributable": true,
      "distributable_to_all_users": false,
      "segment_definition_id": null,
      "auto_applicable": true,
      "receipt_rule": {
        "qualifier_type": "new",
        "redeeming_criterion_id": null,
        "discount_amount": 10,
        "redeeming_criterion": {
          "name": "10% Off on Sandwich",
          "external_id": "EXTERNAL_ID_GOES_HERE",
          "amount_cap": 3,
          "percentage_of_processed_amount": 10,
          "qc_processing_function": "sum_amounts",
          "rounding_rule": "ceil",
          "max_discount_units": 2,
          "unit_discount": 10,
          "minimum_unit_rate": 0.01,
          "target_price": 1,
          "effective_location": "location:1234",
          "stack_discounting": false,
          "reuse_qualifying_items": false,
          "qualifying_expressions_operator": "All",
          "item_filter_expressions_operator": "Any",
          "discount_evaluation_strategy": "Min",
          "line_item_filters": [
            {
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "processing_method": "max_price",
              "quantity": 5
            },
            {
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "processing_method": "min_price",
              "quantity": 3
            },
            {
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "processing_method": "exclude",
              "quantity": null
            }
          ],
          "enable_menu_item_aggregator": false,
          "aggregator_grouping_attributes": {
            "item_name": false,
            "item_id": false,
            "item_major_group": false,
            "item_family": false,
            "line_item_type": false
          },
          "item_qualifiers": [
            {
              "expression_type": "line_item_exists",
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "net_value": null
            },
            {
              "expression_type": "line_item_does_not_exist",
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "net_value": null
            },
            {
              "expression_type": "net_quantity_greater_than_or_equal_to",
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "net_value": 2
            },
            {
              "expression_type": "net_amount_greater_than_or_equal_to",
              "line_item_selector_id": "LIS_ID_GOES_HERE",
              "net_value": 4
            }
          ],
          "receipt_qualifiers": [
            {
              "attribute": "total_amount",
              "operator": ">=",
              "value": "10"
            },
            {
              "attribute": "receipt_hour",
              "operator": "in",
              "value": "1"
            }
          ]
        }
      },
      "activate_now": false,
      "start_time": "2025-06-25T23:59:59",
      "indefinetely": false,
      "expiry_days": null,
      "end_time": "2025-06-28T23:59:59",
      "timezone": "Australia/Darwin",
      "remind_before": 3,
      "discount_channel": "all",
      "points": 12,
      "redemption_code_expiry_mins": 3,
      "applicable_as_loyalty_redemption": true,
      "expire_redemption_code_with_reward_end_date": false,
      "template": {
        "redemption_message": "Countdown Message text",
        "short_prompt": "Short Prompt text",
        "standard_prompt": "Standard Prompt text"
      },
      "lag_duration": {
        "value": 2,
        "units": "days"
      },
      "recurrence_schedule": {
        "occurrences": 10,
        "days_distance": 2
      },
      "effective_location": "location:12",
      "meta_data": "meta data"
    }
  ]
}'
{
  "results": [
    {
      "external_id": "EXTERNAL_ID_GOES_HERE",
      "success": true,
      "errors": [],
      "warnings": {
        "line_item_filters": [
          {
            "message": "Required parameters missing or invalid: line_item_selector_id, processing_method",
            "item": {
              "line_item_selector_id": "",
              "processing_method": "max",
              "quantity": 5
            }
          },
          {
            "message": "Required parameters missing or invalid: line_item_selector_id",
            "item": {
              "line_item_selector_id": "invalid",
              "processing_method": "max_price",
              "quantity": 5
            }
          }
        ],
        "item_qualifiers": [
          {
            "message": "Required parameters missing or invalid: line_item_selector_id, expression_type",
            "item": {
              "expression_type": "",
              "line_item_selector_id": "invalid",
              "net_value": 1
            }
          }
        ],
        "receipt_qualifiers": [
          {
            "message": "Required parameters missing or invalid: attribute",
            "item": {
              "attribute": "total",
              "operator": ">=",
              "value": "10"
            }
          },
          {
            "message": "Required parameter is duplicate: attribute",
            "item": {
              "attribute": "total_amount",
              "operator": "in",
              "value": "1"
            }
          }
        ],
        "qualifying_expressions_operator": [
          {
            "message": "Required parameters missing or invalid: qualifying_expressions_operator",
            "item": {
              "qualifying_expressions_operator": "an"
            }
          }
        ],
        "item_filter_expressions_operator": [
          {
            "message": "Required parameters missing or invalid: item_filter_expressions_operator",
            "item": {
              "item_filter_expressions_operator": "an"
            }
          }
        ],
        "discount_evaluation_strategy": [
          {
            "message": "Required parameters missing or invalid: discount_evaluation_strategy",
            "item": {
              "discount_evaluation_strategy": "ma"
            }
          }
        ]
      }
    },
    {
      "external_id": "EXTERNAL_ID_GOES_HERE",
      "success": false,
      "errors": [
        "ERROR MESSAGE"
      ],
      "warnings": {}
    }
  ]
}