APIs
APIs
Overview
Response
The common structure response should be:
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | array/object |
Taptouch uses conventional HTTP response code returned by ack to indicate the success or failure of an API request. In general: Codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, etc.). Codes in the 5xx range indicate an error with Taptouch's servers (these are rare).
Some 4xx errors that could be handled programmatically (e.g., the store is forbidden to access) include an error code that briefly explains the error reported.
HTTP status code:
| Code | Message | :-Description |
|---|---|---|
| 200 | OK | Everything worked as expected. |
| 401 | Unauthorized | Invalid token or incorrect credential. |
| 403 | Forbidden | Doesn't have permissions to perform the request. |
| 404 | Not Found | The requested resource doesn't exist. |
| 422 | Unprocessable Entity | The parameter is not valid. |
| 500 | Server Errors | Something went wrong on Taptouch Server's end. (These are rare.) |
Pagination
All top-level API request a list shared a common pagination mechanism, taking at least two parameters: index and count.
If you do not specify index parameter, the default value is 0, or you specify to 0 then you will receive the first page of list.
If you do not specify count parameter, the default value is 100, there should be no more page if the received list count less than the count parameter.
You can request the non-first page by adjust the index parameter.
Query Parameters:
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
| index | int32 | 0 | optional | The index of this query |
| count | int32 | 100 | optional | The expected count of this query. |
Store
List Stores
GET https://api.taptouch.net/integration/v1/stores
Allows to enumerate the stores that this token is authorized against.
Authorization:
This endpoint requires the OAuth 2.0 Bearer token with integration.store scope.
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| index | int32 | optional (default: 0) | The index of Pagination |
| count | int32 | optional (default: 100) | The count of Pagination |
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | array | |
| └─id | int64 | Id of store. |
| └─name | string | Name of store. |
| └─timezone | string | Timezone of store. |
Query Example:
curl --location --request GET 'https://api.taptouch.net/integration/v1/stores?index=0&count=100'' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json'
Response Example:
{
"status": {
"timestamp": 1676707717,
"ack": 200,
"errors": null
},
"data": [
{
"id": 883038488584363,
"name": "Intouch H1",
"timezone": "Australia/Sydney"
},
{
"id": 883038489362333,
"name": "Intouch Retail",
"timezone": "Australia/Sydney"
}
]
}
Activate Integration
POST https://api.taptouch.net/integration/v1/store/{store_id}/activate
Activate the store integration.
Authorization:
This endpoint requires the OAuth 2.0 Bearer token with integration.store scope.
Path Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| store_id | int64 | required | The store Id |
Query Parameters:
None
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | object | |
| └─id | int64 | Id of store. |
| └─name | string | Name of store. |
| └─timezone | string | Timezone of store. |
| └─scope | string | Scope. |
Query Example:
curl --location --request GET 'https://api.taptouch.net/integration/v1/store/883038488584363/activate' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json'
Response Example:
{
"status": {
"timestamp": 1676707717,
"ack": 200,
"errors": null
},
"data": [
{
"id": 883038488584363,
"name": "Intouch H1",
"timezone": "Australia/Sydney"
},
{
"id": 883038489362333,
"name": "Intouch Retail",
"timezone": "Australia/Sydney"
}
]
}
Order
List Orders
GET https://api.taptouch.net/integration/v1/orders
Allows to get orders of store.
Authorization:
This endpoint requires the OAuth 2.0 Bearer token with integration.order scope.
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| store_id | int64 | required | The store ID. |
| start_date | datetime | required | The start date, in UTC time and yyyy-MM-dd HH:mm:ss format |
| end_date | datetime | required | The end date, in UTC time and yyyy-MM-dd HH:mm:ss format |
| index | int32 | optional (default: 0) | The index of Pagination |
| count | int32 | optional (default: 100) | The count of Pagination, do not exceed 2000 |
Notes
The time range between start_date and end_date should not exceed 2 days.
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | array | |
| └─id | string | Id of order. |
| └─parent_id | string | Id of parent order. |
| └─order_number | string | Order number. |
| └─status | int8 | Status of order. 2: paid, 3: refunded, 11: partial refunded |
| └─created_at | datetime | The time of order created |
| └─updated_at | datetime | The time of order updated |
| └─scheduled_at | datetime | The scheduled time of pre-order |
| └─paid_at | datetime | The time of order paid or refund |
| └─source_type | int8 | Source Type |
| └─source | string | Source of Order |
| └─fulfillment_type | int8 | Fulfillment Type |
| └─fulfillment | string | Fulfillment |
| └─store_id | int64 | Store Id |
| └─device_id | int64 | Device Id |
| └─device_register_id | int32 | Register Id |
| └─device_name | string | Device Friendly Name |
| └─device_sn | string | Device SN |
| └─delivery_fee | int32 | Delivery Fee, in cents |
| └─service_surcharge_fee | int32 | Surcharge Fee, in cents |
| └─rounding | int32 | Rounding, in cents |
| └─subtotal | int32 | Subtotal, in cents |
| └─tax_total | int32 | Total tax amount, in cents |
| └─tax_calculated | int32 | Tax amount calculated for tax-excluded items, in cents |
| └─tips | int32 | Tips, in cents |
| └─carts | array | Order Cart Item |
| └─taxes | array | Order Tax |
| └─payments | array | Order Payment |
| └─promotions | array | Order Promotion |
Fulfillment:
| Type | Business | Fulfillment |
|---|---|---|
| 1 | Hospitality | Dine In |
| 2 | Hospitality | Table Service |
| 3 | Hospitality | Take Away |
| 4 | Hospitality | Delivery |
| 5 | Hospitality | Third Party |
Source of Order:
| Type | Source |
|---|---|
| 1 | Offline |
| 2 | Kiosk |
| 3 | Caller Id |
| 4 | Pay by Link |
| 11 | Offline Pre-Order |
| 30 | QR Table |
| 35 | QR Ordering |
| 36 | Venue Ordering |
| 40 | Online |
| 42 | Online Pre-Order |
| 48 | Online Gift Card |
| 53 | Uber Eats |
| 54 | HungryPanda |
| 55 | DoorDash |
Cart Item Type:
| Type | Source | Group |
|---|---|---|
| 2 | Product | No |
| 21 | Product Variant | No |
| 22 | Modifier | No |
| 101 | Set Menu | Yes |
| 102 | Combo | Yes |
Unit Type:
| Type | Name |
|---|---|
| 0 | PCS |
| 1 | KG |
| 5 | G |
| 11 | L |
| 15 | ML |
Payment Platform:
| Code | Platform |
|---|---|
| 0 | Local |
| 1 | Supay |
| 2 | Tyro |
| 3 | Linkly |
| 4 | Stripe |
| 6 | Deposit |
| 7 | Windcave |
| 9 | Tim |
| 41 | Uber |
| 42 | Menulog |
| 43 | Delivroo |
| 44 | Doordash |
| 45 | Easi |
| 46 | HunaryPanda |
| 47 | Chowbus |
| 48 | Buyhome |
| 49 | Eatclub |
| 100 | Cash |
| 101 | Taptouch Eftpos |
| 102 | Taptouch Pay |
Payment Type:
| Type | Payment Type |
|---|---|
| 1 | Cash |
| 2 | Debit Card |
| 3 | Credit Card |
| 6 | Pre-Payment |
| 8 | Member Account |
| 20 | Member Point |
| 22 | Voucher |
| 23 | Voucher Ext |
| 26 | Gift Card |
Promotion Type:
| Type | Promotion Type |
|---|---|
| 20 | Point |
| 21 | Discount |
| 22 | Voucher |
| 23 | Voucher Ext |
| 24 | Coupon |
| 25 | Promo Code |
Order Cart Item:
| Field Name | Type | Description |
|---|---|---|
type | int8 | Item type |
tid | int32 | Item id; uniquely identifies this line item within the cart |
group_no | int32 | Group number; 0 for non-group items, other it's used to associate items that belong to the same set menu or combo |
serial_no | int32 | Serial number; indicates the display or processing order within the same group |
name | string | Display name of the item |
code | string | Product code |
unit_type | int8 | Unit Type |
price | decimal | Original unit price before any discounts, in cents |
discount | decimal | Item discount amount applied per unit (can be zero if no discount), in cents |
net_price | decimal | Net unit price after item discount and order discount, in cents |
count | decimal | Quantity ordered (supports fractional quantities, e.g., 1.5 kg) |
tax_total | decimal | Tax amount for unit item (`net_price), in cents |
tax_calculated | decimal | Calculated tax value if the item is tax-excluded item, in cents |
Order Tax:
| Field Name | Type | Description |
|---|---|---|
amount | decimal | Total tax amount (in cents) applied for this tax category (e.g., $2.50) |
rate | decimal | Tax rate as a decimal (e.g., 0.08 for 8%) |
name | string | Human-readable name of the tax (e.g., "Sales Tax", "VAT", "GST") |
base_subtotal | int32 | Subtotal amount (in cents) used as the base for calculating this tax. |
Order Payment:
| Field Name | Type | Description |
|---|---|---|
type | int8 | Payment Type |
platform | int8 | Payment Platform |
amount | int32 | Payment amount in cents (e.g., cents; 1500 = $15.00) |
surcharge | int32 | Additional fee (if any) applied for this payment method, in cents. |
name | string | Name of payment method |
reference | string | Unique transaction or reference ID from the payment processor (e.g., payment gateway transaction ID, receipt number, or authorization code) |
Order Promotion:
| Field Name | Type | Description |
|---|---|---|
type | int8 | Promotion Type |
discount_amount | int32 | Total discount amount, in cents. |
name | string | Name of the promotion (e.g., "Summer Sale 10% Off", "Buy 1 Get 1 Free", "Welcome Coupon"). |
reference | string | Reference ID (e.g., Voucher code) |
items | array | Order Promotion Item List of item-level applications of this promotion. Each entry links the promotion to specific cart items and specifies how much discount was applied to each. Initialized as an empty list by default for order discount. |
Order Promotion Item:
| Field Name | Type | Description |
|---|---|---|
type | int8 | Item type |
cart_no | int32 | Reference to the cart item number (use serial_no for group_no is 0, use group_no for group item) to which this promotion is applied |
discount_amount | int32 | Total discount amount for cart item, in cents. |
Query Example:
curl --location --request GET 'https://api.taptouch.net/integration/v1/orders?store_id=883038488584363&start_date=2023-02-07%2000%3A01%3A00&end_date=2023-02-08%2000%3A00%3A00&index=0&count=100' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json'
Response Example:
{
"status": {
"timestamp": 1676708429,
"ack": 200,
"errors": null
},
"data": [
{
"id": "195132111798419",
"parent_id": null,
"order_number": "S-001",
"status": 2,
"status_time": "2025-10-23 03:22:02",
"pay_time": "2025-10-23 03:22:02",
"source_type": 1,
"source": "Offline",
"fulfillment_type": 2,
"fulfillment": "Table Service",
"store_id": 883277338992641,
"device_id": 830218521329665,
"device_register_id": 1,
"device_name": "POS1",
"device_sn": "DA0419AP40718",
"delivery_fee": 0,
"service_surcharge_fee": 0,
"subtotal": 1300,
"tax_total": 112,
"tax_calculated": 0,
"tips": 0,
"shipping": null,
"carts": [
{
"type": 2,
"tid": 1168198,
"group_no": 0,
"serial_no": 120836642,
"menu_id": 0,
"name": "Lava Cake",
"code": null,
"unit_type": 0,
"price": 1300.0,
"discount": 0.0,
"net_price": 1235.0,
"count": 1.0,
"tax_total": 112.0,
"tax_calculated": 0.0
},
{
"type": 22,
"tid": 99094,
"group_no": 0,
"serial_no": 120836642,
"menu_id": 0,
"name": "No Hummus",
"code": null,
"unit_type": 0,
"price": 0.0,
"discount": 0.0,
"net_price": 0.0,
"count": 1.0,
"tax_total": 0.0,
"tax_calculated": 0.0
}
],
"taxes": [
{
"amount": 112.272727,
"rate": 112.2727,
"name": "GST",
"base_subtotal": 1235
}
],
"payments": [
{
"type": 1,
"platform": 100,
"amount": 1235,
"surcharge": 0,
"name": "Cash",
"reference": "2025-10-23 03:22:16"
}
],
"promotions": [
{
"type": 21,
"discount_amount": 65,
"name": "Special Cash",
"reference": "844",
"items": []
}
]
}
]
}
Inventory
Items
GET https://api.taptouch.net/integration/v1/inventory/items
Allows to get all items of store.
Authorization:
This endpoint requires the OAuth 2.0 Bearer token with integration.inventory scope.
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| store_id | int64 | required | The store ID. |
| updated_after | datetime | optional | The date to filter items updated after this date, in UTC time and yyyy-MM-dd HH:mm:ss format |
| index | int32 | optional (default: 0) | The index of Pagination |
| count | int32 | optional (default: 100) | The count of Pagination |
Recommends
We strongly recommend that you use the updated_after parameter when you get the items again, which filters items by update time to reduce data loading.
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | array | |
| └─id | int64 | Id of item. |
| └─status | int8 | Status of item. 2 indicates normal, 4 indicates deleted. |
| └─name | string | Name of item. |
| └─category_name | string | Category of item. |
| └─price | int32 | Price of item, the unit is cents. |
Query Example:
curl --location --request GET 'https://api.taptouch.net/integration/v1/inventory/items?store_id=883038488584363&updated_after=2023-02-07%2001%3A01%3A37&index=50&count=50' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json'
Response Example:
{
"status": {
"timestamp": 1676708429,
"ack": 200,
"errors": null
},
"data": [
{
"id": 854612509303795,
"status": 2,
"name": "Soda",
"category_name": null,
"price": 500
},
{
"id": 854613422489401,
"status": 2,
"name": "Watermelon",
"category_name": null,
"price": 399
}
]
}
Sales
GET https://api.taptouch.net/integration/v1/inventory/sales
Allows to get item sales of store.
Authorization:
This endpoint requires the OAuth 2.0 Bearer token with integration.inventory scope.
Query Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| store_id | int64 | required | The store ID |
| start_date | datetime | required | The start date, in UTC time and yyyy-MM-dd HH:mm:ss format |
| end_date | datetime | required | The end date, in UTC time and yyyy-MM-dd HH:mm:ss format |
| index | int32 | optional (default: 0) | The index of Pagination |
| count | int32 | optional (default: 100) | The count of Pagination |
Response Fields:
| Field | Type | Description |
|---|---|---|
| status | object | |
| └─timestamp | int64 | Response Unix timestamp |
| └─ack | int32 | HTTP response code |
| └─errors | string/object | Error messages if ack is not 200 |
| data | array | |
| └─item_id | int64 | Id of item. |
| └─count | int8 | Quantity sold. |
Query Example:
curl --location --request GET 'https://api.taptouch.net/integration/v1/inventory/sales?store_id=883038488584363&start_date=2023-02-10%2001%3A01%3A37&end_date=2023-02-10%2010%3A01%3A37&index=0&count=100' \
--header 'Authorization: Bearer $TOKEN' \
--header 'Content-Type: application/json'
Response Example:
{
"status": {
"timestamp": 1676619693677,
"ack": 200,
"errors": null
},
"data": [
{
"item_id": 859995948122124,
"count": 2
}
]
}
