Create Check-in

Creates a check-in for a customer.

Headers
  • Authorization
    Type: string
    required

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

  • Accept-Language
    Type: string

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

Body
application/json
  • channel
    Type: string
    required

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

  • email
    Type: string
    required

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

  • menu_items
    Type: array object[] · Menu Items (Array Object)
    required

    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

  • payable
    Type: numberFormat: double
    required

    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).

  • pos_type
    Type: string
    required

    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
    Type: string
    required

    POS version

  • punchh_key
    Type: string
    required

    Unique Punchh key

  • receipt_amount
    Type: numberFormat: double
    required

    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.

  • receipt_datetime
    Format: date-timeenum
    const:  
    YYYY-MM-DDThh:mm:ssZ
    required

    Timestamp of receipt per ISO 8601 format including TZ offset from UTC (YYYY-MM-DDThh:mm:ss-±hh:mm)

    values
    • YYYY-MM-DDThh:mm:ssZ
  • revenue_code
    Type: string
    required

    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.).

  • revenue_id
    Type: string
    required

    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
    Type: string
    required

    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
}