Add Selection to Discount Basket (Redemptions 2.0)

  • A single discount basket will be active at a time. If there is no active discount basket, the system will create a new active discount basket along with selected discounts passed in the request parameters.
  • The Punchh system will not have any validation based on points adjustments as discounts are added.
  • When a guest adds multiple discounts, and one is invalid for some reason, the entire request will fail with an error message. The guest will then be required to remove the invalid discount and resubmit.
  • If a discount expires after being added to the discount basket, it is removed from the discount basket. When you make a call to the API, it validates the offers added to the discount basket. If one or more discounts are found to be honored, expired, perished, or archived, the API returns an error message indicating that these discounts cannot be honored. The API lists the invalid discounts in the discount_basket_items object with a message stating that the discount is invalid and returns a null value in the discount_details object.
Headers
  • Content-Type
    Type: string
    required

    Set this header to application/json.

  • User-Agent
    Type: string
    required

    For details, see User Agent.

  • Authorization
    Type: string
    required

    This is a combination of unique API location key as well as business key (UUID) as the Authorization header.

  • Accept
    Type: string
    required

    Advertises which content types the client is able to understand

  • Accept-Language
    Type: string

    Preferred language. Punchh supports multiple languages for the redeemable name, redeemable description, meta data for coupon, subscription plan name, and subscription description in the API response as per the locale specified in the Accept-Language request header. Possible values: es for Spanish, fr for French, fr-ca for French-Canada, en-CY for English-Cyprus, ro for Romania, es-US for Spanish United States, etc.
    The locales for a business are configured in the Punchh platform under Administration > Business Profile > Address > Alternate Languages. In the Punchh platform, the admin of a business has to configure in the relevant language(s) 1) the redeemable name and redeemable description when creating/editing a redeemable under Offers > All Redeemables, 2) meta data for coupons when creating/editing a coupon campaign under Marketing Automation > Campaign Management, and 3) subscription plan name and subscription description when creating/editing a subscription plan under Wallets and Passes > Subscription Plans.

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

    List of discounts to add to basket

  • user_id
    Type: integer
    required

    Guest user ID

  • external_uid
    Type: string

    Unique identifier generated by the system to lock the discount basket and prevent duplicate transactions. This parameter is optional when reward locking is enabled for the business in the Punchh platform. Note: Contact your Punchh representative to update this configuration setting.

Responses
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for post/api/pos/discounts/select
curl https://SERVER_NAME_GOES_HERE.punchh.com/api/pos/discounts/select \
  --request POST \
  --header 'Content-Type: application/json' \
  --header 'User-Agent: IntegratorName/IntegrationType/VersionNumber' \
  --header 'Authorization: Token token=LOCATION_KEY_GOES_HERE, btoken=BUSINESS_KEY_GOES_HERE' \
  --header 'Accept: application/json' \
  --data '{
  "discount_basket_items_attributes": [
    {
      "discount_id": "41049646877",
      "discount_type": "reward"
    },
    {
      "discount_id": "41378920421",
      "discount_type": "reward"
    },
    {
      "discount_id": "41049646856",
      "discount_type": "reward"
    }
  ],
  "user_id": 11111111,
  "external_uid": "EXTERNAL_UID_GOES_HERE"
}'
{
  "redemption_ref": "REDEMPTION_REF_GOES_HERE",
  "locked": false,
  "location_id": 20,
  "created_at": "2024-05-21T15:14:02Z",
  "discount_basket_items": [
    {
      "discount_basket_item_id": 469363,
      "discount_type": "reward",
      "discount_id": "41049646877",
      "discount_value": null,
      "created_at": "2024-05-24T08:36:52Z",
      "discount_details": {
        "item_id": 41049646877,
        "name": "Sandwich Test | AK",
        "campaign_name": "Mass Campaign Offer",
        "image": "IMAGE_URL_GOES_HERE",
        "points": null,
        "base_amount": null,
        "description": "",
        "item_properties": "",
        "meta_detail": null,
        "start_date_tz": "2024-05-24T08:34:24Z",
        "end_date_tz": "2024-06-30T03:15:00Z",
        "created_at": "2023-08-18T08:29:36Z",
        "auto_select": false
      }
    },
    {
      "discount_basket_item_id": 541689,
      "discount_type": "reward",
      "discount_id": "41378920421",
      "discount_value": null,
      "created_at": "2024-06-11T12:56:33Z",
      "discount_details": {
        "item_id": 48188,
        "name": "Sandwich Test | AK",
        "campaign_name": "Mass Campaign Offer",
        "image": "IMAGE_URL_GOES_HERE",
        "points": null,
        "base_amount": null,
        "description": "",
        "item_properties": "",
        "meta_detail": null,
        "start_date_tz": "2024-05-31T13:25:08Z",
        "end_date_tz": "2024-06-30T03:15:00Z",
        "created_at": "2023-08-18T08:29:36Z",
        "auto_select": false
      }
    }
  ]
}