Create Check-in

​

Creates a check-in for a customer.

Headers

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

  • Short code for locale variant (e.g., fr-ca, es-ES, en-EN, etc.)

Body

application/json
  • Channel through which the check-in was requested. Possible values are: online_order, pos, web, mobile, dashboard, chatbot, kiosk.

  • Email address of the user. In the case of single scan flow, email is not a required parameter.

  • The array contains one or more menu item objects added to an order. You send one of these arrays per API call. See How To Send Menu Items to Punchh

    Properties: 8
  • Amount paid after applying discounts and adding any taxes or service charges. For example, if the order amount is $10, the values of the receipt_amount and subtotal_amount parameters will be $10. If a $2 discount is applied, subtotal_amount becomes $8. However, if there are $3 service charges and $1 tax, the value of the payable parameter becomes $12 (10 – 2 + 3 + 1 = 12).

  • Name of the POS client that is sending the receipts.

    Possible values: A1 POS, Adora POS, Aloha, Aloha (Secure), Appetize, Auphan, Bite Kiosk, Brink, Comtrex, DataPoint, EPoint, Focus, Focus POS Systems, FoodTec, FoodTec V2, Gilbarco, GJS Kiosk, Granbury, Grubburr Kiosk, HoneyBakedHam POS, Hooters Hoa, HungerRush POS (Formerly Revention), InfoKING, Itwercs POS, iVend POS, Maitre’D, Marble Kiosk, Marblepos, Micros RES 3700, Micros Simphony, NCR ISS45 POS, NCR kiosk, NCR RPOS, NCR Silver, NCR Silver Essential, NCR Silver Pro, NCR Storepoint, Nextep kiosk, Onetap, PAR, PiZMET, Plum POS, Positouch, PosNet, Proprietary POS, Punchh Kiosk, Punchh Secure, QikServe Kiosk, Quardzilla, QuBeyond POS (Formerly Gusto), QuickServe, Ready (Pay-on-the-GO), Revel, SICOM, SpeedLine, Squirrel, Steak n Shake, TCPOS, Tevalis POS, Toast, Toast V3, Tray POS, Treatware, Verifone, VisualTouch POS, XPO Pay@Table, Xchangexec (Task retail), Xenial Cloud,  Xpient, Xpient (Secure), Zonal POS

  • POS version

  • Unique Punchh key

  • 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 receipt per ISO 8601 format including TZ offset from UTC (YYYY-MM-DDThh:mm:ss-±hh:mm)

  • Name of the POS function that designates order fulfillment method (e.g., dine-in, to-go/take-out, call-in pickup, call-in deliver, etc). Some POS call this Revenue Center, Order Method, Order Mode, etc. The values assigned here should represent the way the order is fulfilled for the customer, not the area in the restaurant where the order is placed (e.g., not bar, patio, dining room, etc.).

  • ID of the POS function that designates the order fulfillment method. Example: 1 for dine-in; 2 for to-go/take out; 3 for call-in pickup; 4 for call-in deliver, etc. Some POS call this revenue center, order method, order mode, etc. The values assigned here should represent the way the order is fulfilled for the customer, not the area in the restaurant where the order is placed (e.g., not bar, patio, dining room, etc.).

  • Single scan code of the user is a required parameter when a check-in is created through the single scan flow on the POS. The code identifies the user.

Responses

  • application/json
Request Example for post/api/pos/checkins
curl https://SERVER_NAME_GOES_HERE.punchh.com/api/pos/checkins \
  --request POST \
  --header 'Authorization: Token token=LOCATION_KEY_GOES_HERE, btoken=BUSINESS_KEY_GOES_HERE' \
  --header 'Accept-Language: en' \
  --header 'Content-Type: application/json' \
  --data '{
  "pos_version": "V03",
  "amp": null,
  "sequence_no": "2124",
  "transaction_no": "4488",
  "receipt_datetime": "2018-10-26T23:59:59-07:00",
  "revenue_id": "Dine In",
  "revenue_code": "4",
  "menu_items": [
    {
      "item_name": "White rice",
      "item_qty": 1,
      "item_amount": 2.86,
      "menu_item_type": "M",
      "menu_item_id": "3419",
      "menu_family": "800",
      "menu_major_group": "152",
      "serial_number": "1.0"
    },
    {
      "item_name": "Brown rice",
      "item_qty": 1,
      "item_amount": 7.86,
      "menu_item_type": "M",
      "menu_item_id": "3418",
      "menu_family": "800",
      "menu_major_group": "152",
      "serial_number": "2.0"
    },
    {
      "item_name": "Free rice",
      "item_qty": 1,
      "item_amount": 2.86,
      "menu_item_type": "D",
      "menu_item_id": "3419",
      "menu_family": "800",
      "menu_major_group": "152",
      "serial_number": "3.0"
    }
  ],
  "employee_id": "135",
  "employee_name": "EMPLOYEE_NAME_GOES_HERE",
  "subtotal_amount": 7.86,
  "receipt_amount": 7.86,
  "cc_last4": "0000",
  "punchh_key": "PUNCHH_KEY_GOES_HERE",
  "pos_type": "Micros Simphony",
  "external_uid": "a unique id",
  "process": "true",
  "channel": "pos",
  "email": "test@example.com"
}'
{
  "address_line1": "",
  "age_verified": false,
  "anniversary": null,
  "avatar_remote_url": null,
  "balance": {
    "banked_rewards": "3120.85",
    "expired_membership_level": null,
    "initial_visits": 0,
    "membership_level": null,
    "membership_level_id": null,
    "net_balance": 3120.85,
    "net_debits": 424.15,
    "pending_points": 434,
    "points_balance": 42,
    "signup_anniversary_day": "10/17",
    "total_credits": 19342,
    "total_debits": "424.15",
    "total_point_credits": 19342,
    "total_redeemable_visits": 187,
    "total_visits": 178,
    "unredeemed_cards": 0
  },
  "birthday": null,
  "city": "",
  "created_at": "2017-10-17T18:40:05Z",
  "discount_type": null,
  "email": "test@example.com",
  "email_verified": false,
  "fb_uid": null,
  "first_name": "FIRST_NAME_GOES_HERE",
  "gender": "",
  "id": 1107620,
  "last_name": "LAST_NAME_GOES_HERE",
  "phone": 1111111111,
  "points_earned": 113,
  "privacy_policy": false,
  "rewards": [
    {
      "created_at": "2019-07-30T10:36:23Z",
      "description": "Test Test",
      "discount_amount": 0,
      "end_date_tz": null,
      "id": 1380722,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test1",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2019-07-30T10:36:23Z",
      "status": "unredeemed",
      "updated_at": "2019-07-30T10:36:23Z"
    },
    {
      "created_at": "2019-09-28T07:05:50Z",
      "description": "",
      "discount_amount": 5,
      "end_date_tz": null,
      "id": 1399333,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test (basic)",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2019-09-28T07:05:50Z",
      "status": "unredeemed",
      "updated_at": "2019-09-28T07:05:50Z"
    },
    {
      "created_at": "2019-09-28T07:05:50Z",
      "description": "",
      "discount_amount": 5,
      "end_date_tz": null,
      "id": 1399334,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test (basic)",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2019-09-28T07:05:50Z",
      "status": "unredeemed",
      "updated_at": "2019-09-28T07:05:50Z"
    },
    {
      "created_at": "2019-09-28T07:05:50Z",
      "description": "",
      "discount_amount": 5,
      "end_date_tz": null,
      "id": 1399335,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test (basic)",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2019-09-28T07:05:50Z",
      "status": "unredeemed",
      "updated_at": "2019-09-28T07:05:50Z"
    },
    {
      "created_at": "2019-09-28T07:05:50Z",
      "description": "",
      "discount_amount": 5,
      "end_date_tz": null,
      "id": 1399336,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test (basic)",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2019-09-28T07:05:50Z",
      "status": "unredeemed",
      "updated_at": "2019-09-28T07:05:50Z"
    },
    {
      "created_at": "2020-01-30T13:26:40Z",
      "description": "",
      "discount_amount": 0,
      "end_date_tz": null,
      "id": 1425570,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test QC static discounrt",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2020-01-30T13:26:40Z",
      "status": "unredeemed",
      "updated_at": "2020-01-30T13:26:40Z"
    },
    {
      "created_at": "2020-01-30T13:41:40Z",
      "description": "",
      "discount_amount": 0,
      "end_date_tz": null,
      "id": 1425572,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test QC static discounrt",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2020-01-30T13:41:40Z",
      "status": "unredeemed",
      "updated_at": "2020-01-30T13:41:40Z"
    },
    {
      "created_at": "2020-01-30T13:57:07Z",
      "description": "",
      "discount_amount": 0,
      "end_date_tz": null,
      "id": 1425574,
      "image": "IMAGE_URL_GOES_HERE",
      "name": "Test QC static discounrt",
      "points": 0,
      "redeemable_properties": null,
      "start_date_tz": "2020-01-30T13:57:07Z",
      "status": "unredeemed",
      "updated_at": "2020-01-30T13:57:07Z"
    }
  ],
  "selected_card_number": null,
  "selected_discount_amount": null,
  "selected_reward_id": null,
  "state": "",
  "updated_at": "2020-03-23T13:37:20Z",
  "user_digest": "USER_DIGEST_GOES_HERE",
  "zip_code": null
}