Create Check-in
Creates a check-in for a customer.
Headers
- Type: stringAuthorizationrequired
This is a combination of unique API key as well as business key (UUID) as the Authorization header.
- Type: stringAccept
- Language Short code for locale variant (e.g., fr-ca, es-ES, en-EN, etc.)
Body
- Type: stringchannelrequired
Channel through which the check-in was requested. Possible values are: online_order, pos, web, mobile, dashboard, chatbot, kiosk.
- Type: stringemailrequired
Email address of the user. In the case of single scan flow, email is not a required parameter.
- Type:requiredProperties: 8
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
- Type: numberFormat: doublepayablerequired
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_amountandsubtotal_amountparameters will be $10. If a $2 discount is applied,subtotal_amountbecomes $8. However, if there are $3 service charges and $1 tax, the value of thepayableparameter becomes $12 (10 – 2 + 3 + 1 = 12). - Type: stringpos
_type requiredName 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
- Type: stringpos
_version requiredPOS version
- Type: stringpunchh
_key requiredUnique Punchh key
- Type: numberFormat: doublereceipt
_amount requiredOrder amount before taxes, calculated as the sum of
item_amountforMline items inmenu_itemsminus theitem_amountforDline items;S,T, andPline items are excluded. See the description of theD,S,T, andPitems in themenu_items.menu_item_typerequest parameter. The value of this parameter should matchsubtotal_amount.⚠️ Important: Loyalty points and visits are calculated based on the individual item amounts in the
menu_itemsarray, not directly fromreceipt_amount. To ensure discounts are reflected correctly in loyalty calculations, include the discount as a separate line item inmenu_itemswith amenu_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_amountshould be $9.99, and a discount line item of $3.00 must be included inmenu_items. If the discount line item is omitted, the system will calculate points based on $12.99 instead of $9.99. - Format: date-timeenumreceipt
_datetime const:YYYY-MM-DDThh:mm:ssZrequiredTimestamp of receipt per ISO 8601 format including TZ offset from UTC (YYYY-MM-DDThh:mm:ss-±hh:mm)
- Type: stringrevenue
_code requiredName 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.).
- Type: stringrevenue
_id requiredID 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.).
- Type: stringsingle
_scan _code requiredSingle 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
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
}