Calculates the authoritative totals for a cart, including subtotal, tax, and the amount due, before an order is submitted. Use this endpoint to display accurate pricing to the guest and to confirm that taxes and charges are applied correctly prior to payment.
Request Headers
| Header | Required | Description |
|---|---|---|
| Authorization | Yes | Bearer YOUR_ACCESS_TOKEN |
| Content-Type | Yes | application/json |
Request Parameters
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | Base API URL (environment variable). |
version | string | Yes | API version (environment variable). |
location_id | string | Yes | Unique identifier for the location. |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
global_on_id | integer | Yes | Provided by SoftPoint. |
user_id | integer | Yes | Provided by SoftPoint. |
i18n | string | No | Language code for localized content, for example en. |
Request Body Fields
| Field | Type | Required | Description |
|---|---|---|---|
cart | object | Yes | Cart details. |
cart.employee_id_external | string | No | External employee ID. |
cart.items | array | Yes | List of cart items. |
cart.items[].category_id | integer | No | Category of the item. |
cart.items[].id | integer | Yes | Internal item ID. |
cart.items[].id_external | string | No | External item ID. |
cart.items[].modifiers | array | No | List of modifiers (if any). |
cart.items[].price | integer | Yes | Price of the item. |
cart.items[].price_per_unit | integer | No | Price per unit. |
cart.items[].quantity | integer | Yes | Quantity of the item. |
cart.items[].comment | string | No | Optional comment. |
cart.items[].name | string | No | Item name. |
cart.order_type_id_external | string | No | External order type ID. |
cart.revenue_center_id_external | string | No | External revenue center ID. |
global_on_id | string | Yes | Provided by SoftPoint. |
user_id | integer | Yes | Provided by SoftPoint. |
Request Example
{
"cart": {
"employee_id_external": "195",
"items": [
{
"category_id": 189588,
"id": 1672955,
"id_external": "30004",
"modifiers": [
{ "id": 494660, "id_external": "10011", "price": 0, "name": "*A LA MODE $$", "status": 1, "pos_id": "10011" }
],
"price": 429,
"price_per_unit": 429,
"quantity": 1,
"comment": "",
"name": "FR SILK(SLI)"
},
{
"category_id": 189587,
"id": 1672949,
"id_external": "23002",
"modifiers": [],
"price": 329,
"price_per_unit": 329,
"quantity": 1,
"comment": "",
"name": "CINNROLL"
}
],
"order_type_id_external": "2",
"revenue_center_id_external": "2"
},
"global_on_id": "12",
"user_id": 7
}
cURL Example
curl --request POST \
--url "https://sandbox-api.softpoint.io/interface/v1/locations/YOUR_LOCATION_ID/app/checkout/price_check?global_on_id=12&user_id=7&i18n=en" \
--header "Authorization: Bearer YOUR_ACCESS_TOKEN" \
--header "Content-Type: application/json" \
--data '{
"cart": {
"employee_id_external": "195",
"items": [
{ "category_id": 189588, "id": 1672955, "id_external": "30004", "modifiers": [], "price": 429, "quantity": 1, "name": "FR SILK(SLI)" },
{ "category_id": 189587, "id": 1672949, "id_external": "23002", "modifiers": [], "price": 329, "quantity": 1, "name": "CINNROLL" }
],
"order_type_id_external": "2",
"revenue_center_id_external": "2"
},
"global_on_id": "12",
"user_id": 7
}'
Success Response
{
"discounts": 0,
"due": 958,
"exclusive_tax": null,
"inclusive_tax": null,
"items": 852,
"other_charges": 0,
"paid": 0,
"service_charges": 0,
"sub_total": 852,
"tax": 106,
"tips": 0,
"total": 958
}
Response Fields
| Field | Type | Description |
|---|---|---|
| discounts | integer | Total discounts applied, in minor units. |
| due | integer | Amount due after payments, in minor units. |
| exclusive_tax | integer | Tax not included in item prices, in minor units. May be null when not applicable. |
| inclusive_tax | integer | Tax included in item prices, in minor units. May be null when not applicable. |
| items | integer | Combined price of all items, in minor units. |
| other_charges | integer | Additional charges, in minor units. |
| paid | integer | Amount already paid, in minor units. |
| service_charges | integer | Service charges applied, in minor units. |
| sub_total | integer | Subtotal before tax, in minor units. |
| tax | integer | Total tax, in minor units. |
| tips | integer | Tip total, in minor units. |
| total | integer | Grand total, in minor units. |
Error Responses
Price Check uses the standard error envelope. A missing channel identifier produces error code 10189, consistent with other ordering endpoints.
{
"error": {
"code": 10189,
"message": "Invalid global on id.",
"details": {
"error": "The parameter global_on_id is required"
}
}
}
Status Codes
| Code | Description |
|---|---|
| 200 | Cart priced successfully. |
| 400 | Invalid cart contents. |
| 401 | Missing or invalid access token, or missing channel identifier. |
Workflow Placement
Price Check sits between cart building and order submission:
-
Build a cart from menu items.
-
Call Price Check to obtain authoritative totals.
-
Submit the order with Pay & Create Order.
Notes
-
All amounts are expressed in minor units (cents).
-
The returned
totalanddueshould be used as the authoritative figures for display and payment, since taxes and charges are computed server-side. -
exclusive_taxandinclusive_taxmay be null when no tax of that type applies.
Common Mistakes
-
Summing item prices on the client instead of relying on the returned totals.
-
Omitting
global_on_id, which results in error code 10189. -
Sending prices in major units (dollars) rather than minor units (cents).

