Store Receipt Details From POS
This API call requires the API key as well as the business key to be sent in the HTTP Authorization header in the following format:
Authorization: Token token=LOCATION_KEY_GOES_HERE, btoken=BUSINESS_KEY_GOES_HERE
where
LOCATION_KEY_GOES_HERE is the API key (which is unique for a location) and BUSINESS_KEY_GOES_HERE is the business key (which is unique for a business).
See cURL examples for more details.
1. The receipt_details endpoint can store the same receipt multiple times. If the POS client sends the same receipt (same punchh_key, same location_key) many times, we store all the versions of that same receipt, provided that the time between HTTP requests is 1 second or more. However, if the same receipt is received via multiple HTTP calls in about the same time (less than 1 second), the last one overwrites the previous version of that receipt.
2. The endpoint accepts parameters in JSON as well.
3. “isl receipt details” endpoint for ALL transactions.
4. “checkins” for registered Punchh users wanting credit at the register via email, phone, QR code, or card number
5. All transactions generate the barcode / Punchh key.
6. All transactions print a barcode (?) on the receipt with that Punchh key.
7. In the event of a network outage, we expect data that was to be sent to the ISL and check-in endpoints to be queued and sent later. We do not expect the redemptions to work in that case as there is no way to receive the amount from Punchh.
- Type: stringAuthorizationrequired
This is a combination of unique API key as well as business key (UUID) as the Authorization header.
- Type: numberFormat: doubleamountrequired
Order amount before any taxes (sum of all amounts minus any discounts). Same as
receipt_amountandsubtotal_amount. - 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
- 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 requiredVersion of the client software
- Type: stringpunchh
_key requiredPunchh key (barcode without parity bit) of the receipt as generated by the POS. Should be 11 or 12, 20 digits
- Type: numberFormat: doublereceipt
_amount requiredOrder 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, bothreceipt_amountandsubtotal_amountwill be 10. If a $2 discount is applied, both will be 8. - Type: stringreceipt
_datetime requiredTimestamp of the receipt per ISO 8601 format including TZ offset from UTC (e.g., YYYY-MM-DDThh:mm:ss-±hh:mm)
- Type: numberFormat: doublesubtotal
_amount requiredOrder amount before taxes (sum of all item amounts minus any discounts). Same as
receipt_amount. For historical reasons, include this parameter along withreceipt_amountin the API request. - Type: integertransaction
_no requiredTransaction number of the receipt
- Type: integercc
_last4 Last 4 digits of the user's credit card number
- Type: stringchannel
Channel through which the check-in was requested. Possible values are: online_order, pos, web, mobile, dashboard, chatbot, kiosk. Optional, though if not provided in the receipt details request, defaults to the value used in the associated check-in call.
- application/json
- application/json
- application/json
curl https://SERVER_NAME_GOES_HERE.punchh.com/receipt_details \
--request POST \
--header 'Authorization: Token token=LOCATION_KEY_GOES_HERE, btoken=BUSINESS_KEY_GOES_HERE' \
--header 'Content-Type: application/json' \
--data '{
"transaction_no": 20095,
"vendor_transaction_no": 1095,
"employee_id": "5208",
"employee_name": "EMPLOYEE_NAME_GOES_HERE",
"revenue_id": "Dine In",
"revenue_code": "4",
"amount": 15.99,
"receipt_datetime": "2015-03-20T15:23:20+05:30",
"cc_last4": 4321,
"receipt_amount": 15.99,
"subtotal_amount": 15.99,
"payable": 17.27,
"pos_version": "V03",
"menu_items": [
{
"item_name": "Capastrami",
"item_qty": 1,
"item_amount": "15.99",
"menu_item_type": "M",
"menu_item_id": "1015",
"menu_family": "52",
"menu_major_group": "52",
"serial_number": "1"
},
{
"item_name": "Drink",
"item_qty": 1,
"item_amount": 2.86,
"menu_item_type": "M",
"menu_item_id": "1234",
"menu_family": "800",
"menu_major_group": "152",
"serial_number": "1"
},
{
"item_name": "Free Drink with White Rice",
"item_qty": 1,
"item_amount": 2.86,
"menu_item_type": "D",
"menu_item_id": "5678",
"menu_family": "801",
"menu_major_group": "153",
"serial_number": "1"
}
],
"punchh_key": "PUNCHH_KEY_GOES_HERE",
"pos_type": "Aloha",
"channel": "POS"
}'
{}