Endpoints for managing the point-of-sale system including products, categories, transactions, and register operations.
Point of Sale
Get POS inventory items
GET /pos/inventory
Retrieves all POS inventory items for a location
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | query | string | Yes | Location ID to get inventory for |
Responses
| Code | Description |
|---|---|
200 | List of inventory items |
400 | Missing locationId parameter |
500 | Server error |
Create inventory item
POST /pos/inventory
Creates a new POS inventory item
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
name | string | Yes | |
category | string | No | |
taxRate | number | No | |
image | string | No | |
variants | array | No | |
tags | array | No |
Responses
| Code | Description |
|---|---|
201 | Item created successfully |
400 | Invalid request body |
500 | Server error |
Update inventory item
PUT /pos/inventory
Updates an existing POS inventory item
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
itemId | string | Yes | |
name | string | No | |
category | string | No | |
taxRate | number | No | |
variants | array | No |
Responses
| Code | Description |
|---|---|
200 | Item updated successfully |
400 | Missing required fields |
500 | Server error |
Update variant quantity
PATCH /pos/inventory
Updates the quantity of a specific variant in an inventory item
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
itemId | string | Yes | |
variantId | string | Yes | |
quantity | number | Yes | Quantity change (can be negative) |
Responses
| Code | Description |
|---|---|
200 | Variant quantity updated |
400 | Missing required fields |
404 | Item or variant not found |
500 | Server error |
Delete inventory item
DELETE /pos/inventory
Deletes a POS inventory item
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
itemId | string | Yes |
Responses
| Code | Description |
|---|---|
200 | Item deleted successfully |
400 | Missing required fields |
500 | Server error |
Get current gas price
GET /pos/gas-price
Retrieves the current gas price for a location
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | query | string | Yes | Location ID to get gas price for |
Responses
| Code | Description |
|---|---|
200 | Gas price returned successfully |
400 | Missing locationId parameter |
404 | Gas item not found |
500 | Server error |
Update till-specific inventory
PATCH /pos/inventory/till
Updates inventory quantity for a specific till/register
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
itemId | string | Yes | |
tillId | string | Yes | |
variantId | string | Yes | |
quantity | number | Yes |
Responses
| Code | Description |
|---|---|
200 | Till inventory updated |
400 | Missing required fields |
404 | Item not found |
500 | Server error |
Get folders
GET /pos/folders
Retrieves all product folders for a location
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | query | string | Yes | Location ID |
Responses
| Code | Description |
|---|---|
200 | List of folders |
400 | Missing locationId parameter |
500 | Server error |
Create folder
POST /pos/folders
Creates a new product folder
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
name | string | Yes | |
color | string | No | |
tillId | string | No |
Responses
| Code | Description |
|---|---|
201 | Folder created successfully |
400 | Missing required fields |
500 | Server error |
Update folder
PUT /pos/folders
Updates an existing product folder
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
folderId | string | Yes | |
name | string | No | |
color | string | No | |
favorite | boolean | No |
Responses
| Code | Description |
|---|---|
200 | Folder updated successfully |
400 | Missing required fields |
500 | Server error |
Delete folder
DELETE /pos/folders
Deletes a product folder and removes folder association from all products in it
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
folderId | string | Yes |
Responses
| Code | Description |
|---|---|
200 | Folder deleted successfully |
400 | Missing required fields |
500 | Server error |
Reorder folders
PUT /pos/folders/reorder
Updates the sort order of folders
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
folderOrder | array | Yes |
Responses
| Code | Description |
|---|---|
200 | Folders reordered successfully |
400 | Missing required fields |
500 | Server error |
Duplicate folders
POST /pos/folders/duplicate
Duplicates folders from a source till to a target till
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
sourceTillId | string | Yes | |
targetTillId | string | Yes |
Responses
| Code | Description |
|---|---|
200 | Folders duplicated successfully |
400 | Missing required fields |
404 | No folders found for source till |
500 | Server error |
List transactions
GET /pos/transaction
Retrieves all POS transactions for a location, optionally filtered by till
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
locationId | query | string | Yes | Location ID |
tillId | query | string | No | Filter by specific till/register |
Responses
| Code | Description |
|---|---|
200 | List of transactions |
400 | Missing locationId parameter |
500 | Server error |
Create transaction
POST /pos/transaction
Creates a new POS transaction with items, discounts, taxes, and payment information
Request body
| Field | Type | Required | Description |
|---|---|---|---|
items | array | Yes | Array of items in the transaction |
locationId | string | Yes | |
userId | string | Yes | |
paymentType | string | No | |
accountId | string | No | |
discountPercentage | number | No | |
discountAmount | number | No | |
settleBooking | boolean | No |
Responses
| Code | Description |
|---|---|
201 | Transaction created successfully |
400 | Invalid request body |
500 | Server error |
Get transaction by ID
GET /pos/transaction/{transactionId}
Retrieves a specific POS transaction by its ID
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transactionId | path | string | Yes | Transaction ID |
Responses
| Code | Description |
|---|---|
200 | Transaction details |
400 | Missing transactionId parameter |
404 | Transaction not found |
500 | Server error |
Get all POS transactions for a rental
GET /pos/transactions/rental/{rentalId}
Retrieves all POS transactions associated with a specific rental/booking ID
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
rentalId | path | string | Yes | The rental/booking ID |
Responses
| Code | Description |
|---|---|
200 | List of transactions for the rental |
400 | Missing rental ID |
500 | Server error |
Refund transaction
POST /pos/transaction/refund
Processes a full or partial refund for a POS transaction
Request body
| Field | Type | Required | Description |
|---|---|---|---|
transactionId | string | Yes | |
refundType | string | Yes | |
amount | number | No | Required for partial refunds |
Responses
| Code | Description |
|---|---|
200 | Refund processed successfully |
400 | Invalid request or transaction already settled |
404 | Transaction not found |
500 | Server error |
Settle single transaction
PUT /pos/transaction/settle
Marks a single transaction as settled
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
transactionId | query | string | Yes | Transaction ID to settle |
Responses
| Code | Description |
|---|---|
200 | Transaction settled successfully |
400 | Missing transactionId or already settled |
404 | Transaction not found |
500 | Server error |
Settle transactions in date range
PUT /pos/transaction/settle-range
Settles all transactions within a date range, typically used for cash drawer closing
Request body
| Field | Type | Required | Description |
|---|---|---|---|
locationId | string | Yes | |
startDate | string | No | |
endDate | string | No | |
drawerId | string | No | |
countedCash | number | No | |
expectedCash | number | No | |
difference | number | No | |
cashBreakdown | object | No |
Responses
| Code | Description |
|---|---|
200 | Transactions settled successfully |
400 | Missing locationId |
500 | Server error |
Create Stripe payment intent
POST /pos/create_payment
Creates a Stripe payment intent for card-present payments
Request body
| Field | Type | Required | Description |
|---|---|---|---|
amount | integer | Yes | Amount in cents |
currency | string | No |
Responses
| Code | Description |
|---|---|
200 | Payment intent created |
400 | Error creating payment |
Create Stripe account link
POST /pos/account_link
Creates a Stripe Connect account onboarding link
Request body
| Field | Type | Required | Description |
|---|---|---|---|
account | string | Yes | Connected account ID |
stripeRegion | string | No | Stripe region (US or CA) |
Responses
| Code | Description |
|---|---|
200 | Account link URL returned |
500 | Server error |
Charge saved customer
POST /pos/charge_customer
Charges a saved customer using their stored payment method
Request body
| Field | Type | Required | Description |
|---|---|---|---|
amount | integer | Yes | Amount in cents |
currency | string | No | |
stripe_customer_id | string | Yes | |
payment_method | string | Yes | |
fee_amount | number | No | |
connect_id | string | No |
Responses
| Code | Description |
|---|---|
200 | Payment successful |
500 | Server error |
Create Stripe Connect account
POST /pos/account
Creates a new Stripe Express connected account
Request body
| Field | Type | Required | Description |
|---|---|---|---|
country | string | No | |
stripeRegion | string | No |
Responses
| Code | Description |
|---|---|
200 | Account created successfully |
500 | Server error |
Create Stripe account session
POST /pos/account_session
Creates a Stripe account session for embedded Connect components
Request body
| Field | Type | Required | Description |
|---|---|---|---|
account | string | Yes | Connected account ID |
stripeRegion | string | No |
Responses
| Code | Description |
|---|---|
200 | Account session client secret returned |
400 | Missing account parameter |
500 | Server error |
Create Stripe Express Dashboard login link
POST /pos/dashboard_link
Creates a login link for the connected account to access their full Stripe Dashboard with reports and analytics
Request body
| Field | Type | Required | Description |
|---|---|---|---|
account | string | Yes | Connected account ID |
stripeRegion | string | No |
Responses
| Code | Description |
|---|---|
200 | Dashboard login URL returned |
400 | Missing account parameter |
500 | Server error |
Create terminal connection token
POST /pos/connection_token
Creates a Stripe Terminal connection token for reader initialization
Responses
| Code | Description |
|---|---|
200 | Connection token secret returned |
500 | Server error |
Create payment intent for reader
POST /pos/create_payment_intent
Creates a Stripe payment intent for terminal reader payments with support for connected accounts
Request body
| Field | Type | Required | Description |
|---|---|---|---|
amount | integer | Yes | Amount in cents |
currency | string | No | |
connected_account_id | string | No | |
fee_in_cents | integer | No | |
use_destination_charges | boolean | No |
Responses
| Code | Description |
|---|---|
200 | Payment intent created |
500 | Server error |

