List Sales
curl --request GET \
--url https://ipos.dev.nowbookit.com/Sales \
--header 'X-API-KEY: <api-key>'import requests
url = "https://ipos.dev.nowbookit.com/Sales"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://ipos.dev.nowbookit.com/Sales', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ipos.dev.nowbookit.com/Sales",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://ipos.dev.nowbookit.com/Sales"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ipos.dev.nowbookit.com/Sales")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ipos.dev.nowbookit.com/Sales")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"from": 123,
"to": 123,
"length": 123,
"items": [
{
"bookingId": "<string>",
"method": "<string>",
"bookingTime": "<string>",
"duration": 123,
"people": 123,
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
},
"phoneNational": "<string>",
"phone2": "<string>",
"birthdayDate": 123,
"birthdayMonth": 123,
"birthdayYear": 123,
"notes": "<string>",
"noShowCount": 123,
"tags": [
{
"id": "<string>",
"identifier": "<string>",
"name": "<string>"
}
],
"subscribed": true,
"lastModifiedDate": "<string>"
},
"tables": [
{
"tableId": "<string>",
"tableName": "<string>",
"sectionId": "<string>",
"sectionName": "<string>"
}
],
"tags": [
{
"tagType": "<string>",
"name": "<string>"
}
],
"status": {
"statusType": "<string>",
"code": "<string>",
"name": "<string>"
},
"notes": "<string>",
"serviceId": "<string>",
"lastModifiedDate": "<string>",
"serviceName": "<string>",
"serviceType": "<string>",
"saleDetail": {
"transactionId": "<string>",
"transactionDateTime": "2023-11-07T05:31:56Z",
"storeName": "<string>",
"posName": "<string>",
"posId": "<string>",
"staffId": "<string>",
"staffName": "<string>",
"discount": 123,
"total": 123,
"tax": 123,
"totalExTax": 123,
"tipAmount": 123,
"status": "<string>",
"actualStartTime": "2023-11-07T05:31:56Z",
"actualEndTime": "2023-11-07T05:31:56Z",
"payments": [
{
"terminalId": "<string>",
"paymentTransactionId": "<string>",
"type": "<string>",
"surchargeAmount": 123,
"tipAmount": 123,
"amount": 123,
"status": "<string>"
}
],
"items": [
{
"sku": "<string>",
"productId": "<string>",
"productName": "<string>",
"description": "<string>",
"discountAmount": 123,
"quantity": 123,
"unitPrice": 123,
"unitPriceExTax": 123,
"unitTax": 123,
"barcode": "<string>",
"category": "<string>"
}
]
}
}
]
}Sales
GET /Sales
Retrieve paginated sales data linked to bookings.
GET
/
Sales
List Sales
curl --request GET \
--url https://ipos.dev.nowbookit.com/Sales \
--header 'X-API-KEY: <api-key>'import requests
url = "https://ipos.dev.nowbookit.com/Sales"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://ipos.dev.nowbookit.com/Sales', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://ipos.dev.nowbookit.com/Sales",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://ipos.dev.nowbookit.com/Sales"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://ipos.dev.nowbookit.com/Sales")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://ipos.dev.nowbookit.com/Sales")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"from": 123,
"to": 123,
"length": 123,
"items": [
{
"bookingId": "<string>",
"method": "<string>",
"bookingTime": "<string>",
"duration": 123,
"people": 123,
"customer": {
"id": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"company": "<string>",
"email": "<string>",
"phone": "<string>",
"address": {
"line1": "<string>",
"line2": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"country": "<string>"
},
"phoneNational": "<string>",
"phone2": "<string>",
"birthdayDate": 123,
"birthdayMonth": 123,
"birthdayYear": 123,
"notes": "<string>",
"noShowCount": 123,
"tags": [
{
"id": "<string>",
"identifier": "<string>",
"name": "<string>"
}
],
"subscribed": true,
"lastModifiedDate": "<string>"
},
"tables": [
{
"tableId": "<string>",
"tableName": "<string>",
"sectionId": "<string>",
"sectionName": "<string>"
}
],
"tags": [
{
"tagType": "<string>",
"name": "<string>"
}
],
"status": {
"statusType": "<string>",
"code": "<string>",
"name": "<string>"
},
"notes": "<string>",
"serviceId": "<string>",
"lastModifiedDate": "<string>",
"serviceName": "<string>",
"serviceType": "<string>",
"saleDetail": {
"transactionId": "<string>",
"transactionDateTime": "2023-11-07T05:31:56Z",
"storeName": "<string>",
"posName": "<string>",
"posId": "<string>",
"staffId": "<string>",
"staffName": "<string>",
"discount": 123,
"total": 123,
"tax": 123,
"totalExTax": 123,
"tipAmount": 123,
"status": "<string>",
"actualStartTime": "2023-11-07T05:31:56Z",
"actualEndTime": "2023-11-07T05:31:56Z",
"payments": [
{
"terminalId": "<string>",
"paymentTransactionId": "<string>",
"type": "<string>",
"surchargeAmount": 123,
"tipAmount": 123,
"amount": 123,
"status": "<string>"
}
],
"items": [
{
"sku": "<string>",
"productId": "<string>",
"productName": "<string>",
"description": "<string>",
"discountAmount": 123,
"quantity": 123,
"unitPrice": 123,
"unitPriceExTax": 123,
"unitTax": 123,
"barcode": "<string>",
"category": "<string>"
}
]
}
}
]
}Retrieve paginated sales data linked to bookings. Filter by date range to narrow results.
Response is a paginated result with
saleDetail fields
Example 200 Response
string
required
Your API key
string
Filter by sale date (start). Format:
yyyy-MM-ddTHH:mm:ss.fffZstring
Filter by sale date (end). Format:
yyyy-MM-ddTHH:mm:ss.fffZinteger
Number of records to return
integer
Zero-based offset for pagination
curl --location '[BASE_URL]/Sales?StartDate=2024-03-20T00:00:00.000Z&EndDate=2024-03-20T23:59:59.000Z&Limit=20&StartIndex=0' \
--header 'X-API-KEY: your_api_key_here'
from, to, length, and items (array of SalesDataReport).
SalesDataReport fields
| Field | Type | Description |
|---|---|---|
bookingId | string | NowBookIt booking ID |
method | string | Booking method (e.g. online) |
bookingTime | string | UTC booking datetime |
duration | integer | Duration in minutes |
people | integer | Number of guests |
serviceId | string | Service ID |
serviceName | string | Service name |
serviceType | string | Service type |
notes | string | Booking notes |
lastModifiedDate | string | UTC last modified datetime |
customer | object | Customer details |
tables | array | Assigned tables |
tags | array | Booking tags |
status | object | { statusType, code, name } |
saleDetail | object | POS sale data — see below |
| Field | Type | Description |
|---|---|---|
transactionId | string | POS sale ID |
transactionDateTime | string | UTC close time |
storeName | string | Store/venue name |
posName | string | POS system name |
posId | string | POS system ID |
staffId | string | Staff member ID |
staffName | string | Staff member name |
total | number | Total amount (dollars) |
totalExTax | number | Total excluding tax |
tax | number | Tax amount |
discount | number | Discount amount |
tipAmount | number | Tip amount |
status | string | Sale status |
actualStartTime | string | Actual start time |
actualEndTime | string | Actual end time |
payments | array | Payment records |
items | array | Line items |
{
"from": 0,
"to": 1,
"length": 1,
"items": [
{
"bookingId": "abc-123",
"method": "online",
"bookingTime": "2024-03-20T19:00:00Z",
"duration": 90,
"people": 4,
"serviceId": "svc-101",
"serviceName": "Dinner Service",
"status": { "statusType": "standard", "code": "COMPLETED", "name": "Completed" },
"saleDetail": {
"transactionId": "pos-sale-9981",
"transactionDateTime": "2024-03-20T20:45:00Z",
"storeName": "Main Venue",
"total": 185.00,
"totalExTax": 168.18,
"tax": 16.82,
"payments": [{ "type": "EFTPOS", "amount": 185.00, "status": "APPROVED" }],
"items": [{ "productName": "Wagyu Steak", "category": "food", "quantity": 2, "unitPrice": 65.00 }]
}
}
]
}
| Status | Description |
|---|---|
200 | Sales returned |
400 | Filter dates null |
400 | StartDate invalid format |
400 | EndDate invalid format |
400 | API key not associated with a venue |
400 | No Venue Subscribed to your App. |
401 | X-API-KEY missing or invalid |
Authorizations
Headers
API Key authentication header
Query Parameters
The Sales Transactions Start Date. Format: 'yyyy-MM-ddTHH:mm:ss.fffZ'
The Sales Transactions End Date. Format: 'yyyy-MM-ddTHH:mm:ss.fffZ'
Max number of records to return, default is 100, max is 100.
Required range:
1 <= x <= 100Number of matching records to skip before returning the matches, default is 0.
⌘I