Commerce & compliance
POS Lite
Settle in-person sales through Paysasa, optionally with a product catalogue synced from your point-of-sale system.
Base URL
https://api.paysasa.com/api/v1Authx-api-keyFormatJSONPOS Lite settles sales through Paysasa, with optional product catalogs. Channels: Quick Sale, Paysasa Catalog, Xduka / Airsoko POS (API key sync), Custom/API, Other. Enable under Business → Products when POS is available for your account.
Quick sale#
curl -X POST "https://api.paysasa.com/api/v1/pos" \
-H "Content-Type: application/json" \
-d '{
"action": "complete_sale",
"business_id": "biz_xxxxxxxxxxxxxxxx",
"quick_sale": true,
"description": "Consultation",
"amount": 5000,
"payments": [{ "method": "cash", "amount": 5000 }]
}'Push catalog item (custom app)#
curl -X POST "https://api.paysasa.com/api/v1/pos" \
-H "Content-Type: application/json" \
-d '{
"action": "upsert_catalog_item",
"business_id": "biz_xxxxxxxxxxxxxxxx",
"connection_id": "conn_xxxxxxxxxxxxxxxx",
"external_item_id": "sku-100",
"name": "Widget",
"price": 1200
}'Xduka connect + sync#
Create an API key in Airsoko POS (Settings → API keys), then POS Lite Settings → Integrations → provider xduka, paste key, Sync. Catalog pull uses GET /api/products with x-api-key.
Sale feedback to catalog channels#
After a sale succeeds, Paysasa notifies the channel so it can adjust inventory. If the sale fails, nothing is sent. Void sends sale.voided to restore stock. Custom apps: set config.sale_webhook_url on the connection.
// Paysasa → Xduka POST /api/integrations/paysasa/sale
// (or your sale_webhook_url for custom_api)
{
"event": "sale.completed",
"external_reference": "pos_sale_id",
"receipt_number": "POS-000042",
"items": [
{ "product_id": "external_product_id", "quantity": 2, "name": "T-Shirt" }
]
}