APIs


APIs

Overview

Response

The common structure response should be:

Response Fields:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataarray/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:

CodeMessage:-Description
200OKEverything worked as expected.
401UnauthorizedInvalid token or incorrect credential.
403ForbiddenDoesn't have permissions to perform the request.
404Not FoundThe requested resource doesn't exist.
422Unprocessable EntityThe parameter is not valid.
500Server ErrorsSomething 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:

ParameterTypeDefaultRequiredDescription
indexint320optionalThe index of this query
countint32100optionalThe 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:

ParameterTypeRequiredDescription
indexint32optional (default: 0)The index of Pagination
countint32optional (default: 100)The count of Pagination

Response Fields:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataarray
└─idint64Id of store.
└─namestringName of store.
└─timezonestringTimezone 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:

ParameterTypeRequiredDescription
store_idint64requiredThe store Id

Query Parameters:

None

Response Fields:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataobject
└─idint64Id of store.
└─namestringName of store.
└─timezonestringTimezone of store.
└─scopestringScope.

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:

ParameterTypeRequiredDescription
store_idint64requiredThe store ID.
start_datedatetimerequiredThe start date, in UTC time and yyyy-MM-dd HH:mm:ss format
end_datedatetimerequiredThe end date, in UTC time and yyyy-MM-dd HH:mm:ss format
indexint32optional (default: 0)The index of Pagination
countint32optional (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:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataarray
└─idstringId of order.
└─parent_idstringId of parent order.
└─order_numberstringOrder number.
└─statusint8Status of order. 2: paid, 3: refunded, 11: partial refunded
└─created_atdatetimeThe time of order created
└─updated_atdatetimeThe time of order updated
└─scheduled_atdatetimeThe scheduled time of pre-order
└─paid_atdatetimeThe time of order paid or refund
└─source_typeint8Source Type
└─sourcestringSource of Order
└─fulfillment_typeint8Fulfillment Type
└─fulfillmentstringFulfillment
└─store_idint64Store Id
└─device_idint64Device Id
└─device_register_idint32Register Id
└─device_namestringDevice Friendly Name
└─device_snstringDevice SN
└─delivery_feeint32Delivery Fee, in cents
└─service_surcharge_feeint32Surcharge Fee, in cents
└─roundingint32Rounding, in cents
└─subtotalint32Subtotal, in cents
└─tax_totalint32Total tax amount, in cents
└─tax_calculatedint32Tax amount calculated for tax-excluded items, in cents
└─tipsint32Tips, in cents
└─cartsarrayOrder Cart Item
└─taxesarrayOrder Tax
└─paymentsarrayOrder Payment
└─promotionsarrayOrder Promotion

Fulfillment:

TypeBusinessFulfillment
1HospitalityDine In
2HospitalityTable Service
3HospitalityTake Away
4HospitalityDelivery
5HospitalityThird Party

Source of Order:

TypeSource
1Offline
2Kiosk
3Caller Id
4Pay by Link
11Offline Pre-Order
30QR Table
35QR Ordering
36Venue Ordering
40Online
42Online Pre-Order
48Online Gift Card
53Uber Eats
54HungryPanda
55DoorDash

Cart Item Type:

TypeSourceGroup
2ProductNo
21Product VariantNo
22ModifierNo
101Set MenuYes
102ComboYes

Unit Type:

TypeName
0PCS
1KG
5G
11L
15ML

Payment Platform:

CodePlatform
0Local
1Supay
2Tyro
3Linkly
4Stripe
6Deposit
7Windcave
9Tim
41Uber
42Menulog
43Delivroo
44Doordash
45Easi
46HunaryPanda
47Chowbus
48Buyhome
49Eatclub
100Cash
101Taptouch Eftpos
102Taptouch Pay

Payment Type:

TypePayment Type
1Cash
2Debit Card
3Credit Card
6Pre-Payment
8Member Account
20Member Point
22Voucher
23Voucher Ext
26Gift Card

Promotion Type:

TypePromotion Type
20Point
21Discount
22Voucher
23Voucher Ext
24Coupon
25Promo Code

Order Cart Item:

Field NameTypeDescription
typeint8Item type
tidint32Item id; uniquely identifies this line item within the cart
group_noint32Group number; 0 for non-group items, other it's used to associate items that belong to the same set menu or combo
serial_noint32Serial number; indicates the display or processing order within the same group
namestringDisplay name of the item
codestringProduct code
unit_typeint8Unit Type
pricedecimalOriginal unit price before any discounts, in cents
discountdecimalItem discount amount applied per unit (can be zero if no discount), in cents
net_pricedecimalNet unit price after item discount and order discount, in cents
countdecimalQuantity ordered (supports fractional quantities, e.g., 1.5 kg)
tax_totaldecimalTax amount for unit item (`net_price), in cents
tax_calculateddecimalCalculated tax value if the item is tax-excluded item, in cents

Order Tax:

Field NameTypeDescription
amountdecimalTotal tax amount (in cents) applied for this tax category (e.g., $2.50)
ratedecimalTax rate as a decimal (e.g., 0.08 for 8%)
namestringHuman-readable name of the tax (e.g., "Sales Tax", "VAT", "GST")
base_subtotalint32Subtotal amount (in cents) used as the base for calculating this tax.

Order Payment:

Field NameTypeDescription
typeint8Payment Type
platformint8Payment Platform
amountint32Payment amount in cents (e.g., cents; 1500 = $15.00)
surchargeint32Additional fee (if any) applied for this payment method, in cents.
namestringName of payment method
referencestringUnique transaction or reference ID from the payment processor (e.g., payment gateway transaction ID, receipt number, or authorization code)

Order Promotion:

Field NameTypeDescription
typeint8Promotion Type
discount_amountint32Total discount amount, in cents.
namestringName of the promotion (e.g., "Summer Sale 10% Off", "Buy 1 Get 1 Free", "Welcome Coupon").
referencestringReference ID (e.g., Voucher code)
itemsarrayOrder 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 NameTypeDescription
typeint8Item type
cart_noint32Reference 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_amountint32Total 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:

ParameterTypeRequiredDescription
store_idint64requiredThe store ID.
updated_afterdatetimeoptionalThe date to filter items updated after this date, in UTC time and yyyy-MM-dd HH:mm:ss format
indexint32optional (default: 0)The index of Pagination
countint32optional (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:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataarray
└─idint64Id of item.
└─statusint8Status of item. 2 indicates normal, 4 indicates deleted.
└─namestringName of item.
└─category_namestringCategory of item.
└─priceint32Price 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:

ParameterTypeRequiredDescription
store_idint64requiredThe store ID
start_datedatetimerequiredThe start date, in UTC time and yyyy-MM-dd HH:mm:ss format
end_datedatetimerequiredThe end date, in UTC time and yyyy-MM-dd HH:mm:ss format
indexint32optional (default: 0)The index of Pagination
countint32optional (default: 100)The count of Pagination

Response Fields:

FieldTypeDescription
statusobject
└─timestampint64Response Unix timestamp
└─ackint32HTTP response code
└─errorsstring/objectError messages if ack is not 200
dataarray
└─item_idint64Id of item.
└─countint8Quantity 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
    }
  ]
}