BETA: Please note that the current endpoints are considered beta. It is possible there may be changes before these endpoints are finalised.
Cart
Get a Cart
This endpoint allows developers to fetch a previously created cart.
get /organizations/{organizationId}/locations/{locationId}/cart/{cartId}
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
cartId | string | path |
Responses
200: OK response.Cart
{
"adjustments": [
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
},
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
},
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
}
],
"createdAt": "2021-08-04T04:22:43Z",
"currency": "SGD",
"deliveryAddress": {
"apartment": "2B",
"coords": {
"latitude": -37.802,
"longitude": 144.988
},
"country": "Australia",
"locality": "Collingwood",
"postcode": "3066",
"region": "Victoria",
"streetAddress": "41 Derby Street"
},
"fulfillAt": "2022-01-12T21:00:00.000Z",
"id": "20e543f0-ddcd-4059-aaf3-7b21952c06f9",
"items": [
{
"amount": 1100,
"id": "FOOD001",
"note": "No tomato please",
"options": [
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
},
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 1,
"title": "Burger"
},
{
"amount": 1100,
"id": "FOOD001",
"note": "No tomato please",
"options": [
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
},
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 1,
"title": "Burger"
},
{
"amount": 1100,
"id": "FOOD001",
"note": "No tomato please",
"options": [
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
},
{
"choices": [
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
},
{
"id": "SAUCE001",
"options": [
{},
{},
{},
{}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 2,
"title": "BBQ Sauce"
}
],
"id": "OPTSAUCE",
"title": "Sauce Selection"
}
],
"price": {
"amount": 2300,
"taxIncluded": 250,
"taxRate": 0.05
},
"quantity": 1,
"title": "Burger"
}
],
"notes": "Red coloured house with black stripes.",
"serviceRef": "5",
"status": "VALID",
"total": 10000,
"validatedAt": "2021-08-04T04:23:09Z"
}
Accept a Cart
This endpoint allows the pos to validate and make modifications to the contents of a customer's cart.
put /organizations/{organizationId}/locations/{locationId}/cart/{cartId}/valid
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
cartId | string | path |
Request Body
CartValidationPayload
{
"adjustments": [
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
},
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
},
{
"amount": -500,
"id": "DISC001",
"label": "Taco Tuesday 2-for-1 Deal",
"taxIncluded": -65
}
]
}
Responses
204: No Content response.
409: conflict: Conflict response.
Reject a Cart
This endpoint allows the pos to reject a customer's cart
put /organizations/{organizationId}/locations/{locationId}/cart/{cartId}/invalid
Parameters
Name | Type | In | Description |
---|---|---|---|
organizationId | string | path | Organization ID |
locationId | string | path | Location ID |
cartId | string | path |
Responses
204: No Content response.
409: conflict: Conflict response.
Models
Cart
Name | Type | Description |
---|---|---|
id | string | A Unique ID for the cart. |
createdAt | string | When this cart was created |
fulfillAt | string | (optional) Timestamp to be attached to the cart for scheduled pickup orders |
validatedAt | string | (optional) When this cart was marked valid |
currency | string(enum) | (optional) The currency used amounts specified in this cart "AUD", "SGD", "GBP", "NZD", "USD" |
notes | string | (optional) Optional customer provided note to be attached to the order or instructions for delivery |
serviceRef | string | (optional) Table or Room number, may not always be numeric |
status | string(enum) | (optional) Validation status of the cart "PENDING", "VALID", "INVALID", "EXPIRED" |
total | integer | Total value of the cart. |
deliveryAddress | DeliveryAddress | (optional) |
adjustments | Adjustment[] | (optional) Any POS-supplied adjustments to the cart, for example 2-for-1 and combo adjustments |
items | CartItem[] | The contents of the customer's cart |
Adjustment
Name | Type | Description |
---|---|---|
id | string | Identifier of the source of this adjustment |
amount | integer | The amount of the adjustment. Discounts should be negative, and surcharges positive. This is a tax-inclusive amount. |
label | string | Descriptive text to be displayed to the customer for this adjustment |
taxIncluded | integer | (optional) The tax amount of the adjustment. Discounts should be negative, and surcharges positive. |
DeliveryAddress
Name | Type | Description |
---|---|---|
apartment | string | (optional) Apartment / Suite / Unit |
country | string | Country |
locality | string | Suburb / Sub-region |
postcode | string | Postcode / Postal code |
region | string | Region / Province / State |
streetAddress | string | Street address (number + name) |
coords | Coords | (optional) |
Coords
Name | Type | Description |
---|---|---|
latitude | number | Latitude |
longitude | number | Longitude |
CartItem
Represents a single line item on an order or bill
Name | Type | Description |
---|---|---|
id | string | The ID of the item provided by the external system |
title | string | Display name for this product |
amount | integer | The per-quantity base-amount of this item (ie excluding options) |
note | string | (optional) Optional note to be attached to this item |
quantity | integer | The quantity of items on this order line item |
price | Price | |
options | CartItemOption[] | The options with selected choices provided by the user |
CartItemOption
Set of options for an item
Name | Type | Description |
---|---|---|
id | string | The option set ID |
title | string | Display name of the option set |
choices | CartItemOptionChoice[] | The choices selected by the user for this option |
CartItemOptionChoice
Represents a choice or selection on an option set
Name | Type | Description |
---|---|---|
id | string | The choice ID |
title | string | Display name of this choice |
quantity | integer | The quantity of this choice on this order line item |
price | Price | |
options | CartItemOption[] |
Price
Specifies the price to charge for ordering a product.
Name | Type | Description |
---|---|---|
amount | integer |
Specifies the price to charge for ordering the product including tax.
Price is in the lowest denomination (e.g., cents).
Price should always be integer value (never decimals).
Price should always be set even if price is 0.
|
taxIncluded | integer | (optional)
Specifies the tax, in the lowest denomination (e.g., cents), that was added to the product.
This can be null if tax is unknown.
All price.taxIncluded fields on all products can either all be of type int or all be undefined/null.
If price.taxRate is a float then price.taxIncluded is required.
|
taxRate | number | (optional)
Specifies the tax rate, as a decimal value (e.g., 5% = 0.05), that was applied to the product.
This can be null if tax rate is unknown.
All price.taxRate fields on all products can either all be of type float or all be undefined/null.
When a price.taxRates is a float price.taxIncluded is required.
|
CartValidationPayload
Name | Type | Description |
---|---|---|
adjustments | Adjustment[] | (optional) |