Escrow Safe Trade is live: protect your next high-value deal Learn more
ProductsPayment links & checkoutM-Pesa, cards, invoices, split payoutsEscrow Safe TradeMilestone and release-based escrowWallets & P2PPersonal and business walletsChama, Lengo & DeniGroup savings, goals and IOUsBusiness toolkitAccounting, payroll, POS, ticketingBulk payments & payrollPay many people in one uploadSubscriptions & billingRecurring plans and renewalsRent, loans & donationsCollections and campaignsAll products
SolutionsMerchantsBuyersChama groupsBusiness solutionsIndustries
Pricing
DevelopersDeveloper overviewQuickstart, auth and sandboxREST APIsCheckout, invoices and requestsWebhooksSigned, real-time eventsWallet-as-a-ServiceVirtual sub-accountsDocumentationGuides and API reference
Security
CompanyAbout usCareersPartnersBlogHelp centreContact us
Log in Get started Talk to sales
Commerce & compliance

POS Lite

Settle in-person sales through Paysasa, optionally with a product catalogue synced from your point-of-sale system.

Base URLhttps://api.paysasa.com/api/v1Authx-api-keyFormatJSON

POS 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
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
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.

JSON
// 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" }
  ]
}