Update Loyalty Check-in

​

Updates a loyalty check-in in the pending state based on external_uid. Requires all parameters to be sent again (no deltas).

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

  • 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

  • Employee ID. In case of a system order, it can be a system-generated ID.

  • Employee who took the order. In case of a system order, it can the be name of the system.

  • Unique ID generated by your system. We use this to prevent duplicates in case the same transaction gets triggered twice.

  • Properties: 8
  • 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.

    ⚠️ Important: Loyalty points and visits are calculated based on the individual item amounts in the menu_items array, not directly from receipt_amount. To ensure discounts are reflected correctly in loyalty calculations, include the discount as a separate line item in menu_items with a menu_item_type: D. The system evaluates D line items as negative amounts when calculating the order total. If the discount line item is omitted, points will be calculated based on the original item prices, resulting in more points being awarded than intended.

    For example, if a guest purchases an item for $12.99 and a $3.00 discount is applied, receipt_amount should be $9.99, and a discount line item of $3.00 must be included in menu_items. If the discount line item is omitted, the system will calculate points based on $12.99 instead of $9.99.

  • Timestamp of the receipt as per ISO 8601, in YYYY-MM-DDTHH:MM:SSZ format

  • 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

Responses

  • application/json
  • Sending missing/incorrect params, bad encoding etc

  • Sending invalid credentials

  • Sending invalid Signature

  • Sending invalid Entity

Request Example for put/api/auth/checkins/online_order
curl https://SERVER_NAME_GOES_HERE.punchh.com/api/auth/checkins/online_order \
  --request PUT \
  --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 '{
  "receipt_amount": 14.72,
  "cc_last4": 4387,
  "employee_id": "7",
  "employee_name": "FIRST_NAME_GOES_HERE LAST_NAME_GOES_HERE",
  "menu_items": [
    {
      "item_name": "White rice",
      "item_qty": 1,
      "item_amount": 4.86,
      "menu_item_type": "M",
      "menu_item_id": "3419",
      "menu_family": "800",
      "menu_major_group": "152"
    },
    {
      "item_name": "Brown rice",
      "item_qty": 1,
      "item_amount": 9.86,
      "menu_item_type": "M",
      "menu_item_id": "3418",
      "menu_family": "800",
      "menu_major_group": "152"
    }
  ],
  "subtotal_amount": 14.72,
  "receipt_datetime": "2019-10-05T15:23:20+05:30",
  "transaction_no": 5090,
  "external_uid": "EXTERNAL_UID_GOES_HERE",
  "client": "CLIENT_GOES_HERE",
  "authentication_token": "AUTHENTICATION_TOKEN_GOES_HERE"
}'
{
  "first_name": "FIRST_NAME_GOES_HERE",
  "last_name": "LAST_NAME_GOES_HERE",
  "checkins": 3,
  "points": 183,
  "checkin": {
    "bar_code": "BARCODE_GOES_HERE",
    "created_at": "2019-10-07T12:09:06Z",
    "external_uid": "EXTERNAL_UID_GOES_HERE",
    "checkin_id": 235355451,
    "pending_points": 0,
    "pending_refresh": false,
    "points_earned": 11
  }
}