Developer docs menu

API reference / Point of sale

Point of sale API

34 endpoints. Scopes: Scalar360.pos.READ, .CREATE, .UPDATE, .DELETE or .ALL. All calls need Authorization: Scalar360-oauthtoken <access_token> — see Authentication.

GET

Catalog

/api/v1/pos/catalog

Scope: Scalar360.pos.READ

ParameterInTypeRequired
registerIdquerystring (uuid)Yes
pagequeryinteger (default 0)No
sizequeryinteger (default 200)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/catalog" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Checkout

/api/v1/pos/checkout

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
registerIdstring (uuid)Yes
customerIdstring (uuid)
customerNamestring
linesarray of objectYesrequired
lines[].itemIdstring (uuid)
lines[].qtynumberYesrequired
lines[].ratenumber
lines[].discountnumber
tendersarray of objectYesrequired
tenders[].methodstringYesrequired
tenders[].amountnumberYesrequired
tenders[].referencestring
notesstring
idempotencyKeystring
couponCodestring
redeemPointsinteger
orderDiscountnumber
invoiceNostring
offlineboolean
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/checkout" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"registerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","lines":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","qty":100,"rate":100,"discount":100}],"tenders":[{"method":"string","amount":100,"reference":"string"}]}'
GET

Coupons

/api/v1/pos/coupons

Scope: Scalar360.pos.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/coupons" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create coupon

/api/v1/pos/coupons

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
codestringYesrequired, not blank
descriptionstring
discountTypestringYesrequired, not blank
valuenumberYesrequired
minAmountnumber
maxDiscountnumber
validFromstring (date)
validUntilstring (date)
maxRedemptionsinteger
activeboolean
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/coupons" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"string","discountType":"string","value":100}'
PUT

Update coupon

/api/v1/pos/coupons/{id}

Scope: Scalar360.pos.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
codestringYesrequired, not blank
descriptionstring
discountTypestringYesrequired, not blank
valuenumberYesrequired
minAmountnumber
maxDiscountnumber
validFromstring (date)
validUntilstring (date)
maxRedemptionsinteger
activeboolean
Example request
curl -X PUT "https://api.scalar360.com/api/v1/pos/coupons/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"string","description":"string","discountType":"string","value":100,"minAmount":100,"maxDiscount":100}'
GET

Validate coupon

/api/v1/pos/coupons/validate

Scope: Scalar360.pos.READ

ParameterInTypeRequired
codequerystringYes
amountquerynumberNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/coupons/validate" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Customers

/api/v1/pos/customers

Scope: Scalar360.pos.READ

ParameterInTypeRequired
qquerystringNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/customers" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Dashboard

/api/v1/pos/dashboard

Scope: Scalar360.pos.READ

ParameterInTypeRequired
fromquerystring (date)No
toquerystring (date)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/dashboard" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Reserve invoice numbers

/api/v1/pos/invoice-numbers

Scope: Scalar360.pos.CREATE

Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/invoice-numbers" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
GET

Items

/api/v1/pos/items

Scope: Scalar360.pos.READ

ParameterInTypeRequired
registerIdquerystring (uuid)Yes
qquerystringNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/items" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Loyalty config

/api/v1/pos/loyalty/config

Scope: Scalar360.pos.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/loyalty/config" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
PUT

Set loyalty config

/api/v1/pos/loyalty/config

Scope: Scalar360.pos.UPDATE

Body fieldTypeRequiredNotes
enabledboolean
earnRatenumber
redeemValuenumber
Example request
curl -X PUT "https://api.scalar360.com/api/v1/pos/loyalty/config" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"enabled":true,"earnRate":100,"redeemValue":100}'
GET

Customer points

/api/v1/pos/loyalty/points

Scope: Scalar360.pos.READ

ParameterInTypeRequired
customerIdquerystring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/loyalty/points" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Promotions

/api/v1/pos/promotions

Scope: Scalar360.pos.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/promotions" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create promotion

/api/v1/pos/promotions

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
namestringYesrequired
typestringYesrequired
priorityinteger
activeboolean
validFromstring (date)
validUntilstring (date)
weekdaysstring
timeStartstring
timeEndstring
warehouseIdstring (uuid)
registerIdsarray of string (uuid)
percentnumber
amountnumber
minAmountnumber
buyQtyinteger
getQtyinteger
rewardItemIdstring (uuid)
targetsarray of object
targets[].itemIdstring (uuid)
targets[].categorystring
targets[].qtynumber
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/promotions" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","type":"string"}'
PUT

Update promotion

/api/v1/pos/promotions/{id}

Scope: Scalar360.pos.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestringYesrequired
typestringYesrequired
priorityinteger
activeboolean
validFromstring (date)
validUntilstring (date)
weekdaysstring
timeStartstring
timeEndstring
warehouseIdstring (uuid)
registerIdsarray of string (uuid)
percentnumber
amountnumber
minAmountnumber
buyQtyinteger
getQtyinteger
rewardItemIdstring (uuid)
targetsarray of object
targets[].itemIdstring (uuid)
targets[].categorystring
targets[].qtynumber
Example request
curl -X PUT "https://api.scalar360.com/api/v1/pos/promotions/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","type":"string","priority":1,"active":true,"validFrom":"2026-10-12","validUntil":"2026-10-12"}'
DELETE

Delete promotion

/api/v1/pos/promotions/{id}

Scope: Scalar360.pos.DELETE

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X DELETE "https://api.scalar360.com/api/v1/pos/promotions/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Promotion lookup

/api/v1/pos/promotions/lookup

Scope: Scalar360.pos.READ

ParameterInTypeRequired
qquerystringNo
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/promotions/lookup" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Promotion snapshot

/api/v1/pos/promotions/snapshot

Scope: Scalar360.pos.READ

ParameterInTypeRequired
registerIdquerystring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/promotions/snapshot" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Registers

/api/v1/pos/registers

Scope: Scalar360.pos.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/registers" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Create register

/api/v1/pos/registers

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
namestringYesrequired, not blank
codestring
warehouseIdstring (uuid)Yes
activeboolean
receiptHeaderstring
receiptFooterstring
receiptPaperstring
showTaxBreakupboolean
allowLineDiscountboolean
allowPriceEditboolean
requireCustomerboolean
defaultCustomerstring
defaultTenderstring
openingFloatnumber
autoPrintboolean
allowDecimalQtyboolean
maxDiscountPctnumber
blindCloseboolean
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/registers" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","warehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'
PUT

Update register

/api/v1/pos/registers/{id}

Scope: Scalar360.pos.UPDATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
namestringYesrequired, not blank
codestring
warehouseIdstring (uuid)
activeboolean
receiptHeaderstring
receiptFooterstring
receiptPaperstring
showTaxBreakupboolean
allowLineDiscountboolean
allowPriceEditboolean
requireCustomerboolean
defaultCustomerstring
defaultTenderstring
openingFloatnumber
autoPrintboolean
allowDecimalQtyboolean
maxDiscountPctnumber
blindCloseboolean
Example request
curl -X PUT "https://api.scalar360.com/api/v1/pos/registers/{id}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"string","code":"string","warehouseId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","active":true,"receiptHeader":"string","receiptFooter":"string"}'
POST

Process return

/api/v1/pos/returns

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
registerIdstring (uuid)Yes
invoiceIdstring (uuid)Yes
reasonstring
refundCashboolean
itemsarray of objectYesrequired
items[].itemIdstring (uuid)
items[].itemNamestring
items[].quantitynumberYesrequired
items[].ratenumber
items[].gstRatenumber
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/returns" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"registerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","invoiceId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","items":[{"itemId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d","itemName":"string","quantity":100,"rate":100,"gstRate":100}]}'
GET

Lookup sale

/api/v1/pos/sales/{invoiceNo}

Scope: Scalar360.pos.READ

ParameterInTypeRequired
invoiceNopathstringYes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/sales/{invoiceNo}" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Email receipt

/api/v1/pos/sales/{invoiceNo}/email

Scope: Scalar360.pos.CREATE

ParameterInTypeRequired
invoiceNopathstringYes
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/sales/{invoiceNo}/email" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
GET

Sale receipt

/api/v1/pos/sales/{invoiceNo}/receipt

Scope: Scalar360.pos.READ

ParameterInTypeRequired
invoiceNopathstringYes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/sales/{invoiceNo}/receipt" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Recent sales

/api/v1/pos/sales/recent

Scope: Scalar360.pos.READ

ParameterInTypeRequired
registerIdquerystring (uuid)Yes
limitqueryinteger (default 20)No
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/sales/recent" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Cash movement

/api/v1/pos/sessions/{id}/cash

Scope: Scalar360.pos.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
typestringYesrequired
categorystring
amountnumberYesrequired
reasonstring
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/sessions/{id}/cash" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"string","amount":100}'
POST

Close session

/api/v1/pos/sessions/{id}/close

Scope: Scalar360.pos.CREATE

ParameterInTypeRequired
idpathstring (uuid)Yes
Body fieldTypeRequiredNotes
countedCashnumberYesrequired
notesstring
denominationJsonstring
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/sessions/{id}/close" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"countedCash":100}'
GET

Session report

/api/v1/pos/sessions/{id}/report

Scope: Scalar360.pos.READ

ParameterInTypeRequired
idpathstring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/sessions/{id}/report" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
GET

Current session

/api/v1/pos/sessions/current

Scope: Scalar360.pos.READ

ParameterInTypeRequired
registerIdquerystring (uuid)Yes
Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/sessions/current" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"
POST

Open session

/api/v1/pos/sessions/open

Scope: Scalar360.pos.CREATE

Body fieldTypeRequiredNotes
registerIdstring (uuid)Yes
openingFloatnumber
Example request
curl -X POST "https://api.scalar360.com/api/v1/pos/sessions/open" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"registerId":"3f1c2b9e-7a1d-4c3e-9b2a-1e5f6a7b8c9d"}'
PUT

Set settings

/api/v1/pos/settings

Scope: Scalar360.pos.UPDATE

Example request
curl -X PUT "https://api.scalar360.com/api/v1/pos/settings" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
GET

Status

/api/v1/pos/status

Scope: Scalar360.pos.READ

Example request
curl -X GET "https://api.scalar360.com/api/v1/pos/status" \
  -H "Authorization: Scalar360-oauthtoken $ACCESS_TOKEN"