POS Sync API
Sync products and orders between your POS system and PemyKonekt.
POST
/api/products/syncBulk create or update products. Products are matched by external_id - if it exists, the product is updated; otherwise a new one is created.
Request
curl -X POST https://etims.pemystack.com/api/products/sync \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"products": [
{
"external_id": "POS-001",
"name": "Nyama Choma",
"price": 850,
"category": "Mains",
"description": "Grilled meat with kachumbari"
},
{
"external_id": "POS-002",
"name": "Chai Maziwa",
"price": 50,
"category": "Drinks"
}
]
}'Response
{
"created": 1,
"updated": 1
}Fields
| Field | Type | Required | Description |
|---|---|---|---|
| external_id | string | Yes | Your POS product ID (unique per tenant) |
| name | string | Yes | Product name |
| price | number | Yes | Price in whole KES (converted to cents internally) |
| category | string | No | Product category |
| description | string | No | Product description |
| tax_type | string | No | A=16% VAT (default), B=8%, C=0%, D=Exempt |
| is_available | boolean | No | Whether product is active (default true) |
POST
/api/orders/syncImport orders from your POS system. Orders are tagged with source='pos' for tracking.
Request
curl -X POST https://etims.pemystack.com/api/orders/sync \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"orders": [
{
"reference": "POS-ORD-001",
"customer_phone": "254712345678",
"customer_name": "John Kamau",
"status": "paid",
"items": [
{
"name": "Nyama Choma",
"quantity": 2,
"price": 850,
"external_product_id": "POS-001"
}
],
"total": 1700,
"paid_at": "2026-07-09T12:00:00Z"
}
]
}'Response
{
"imported": 1
}Fields
| Field | Type | Required | Description |
|---|---|---|---|
| reference | string | No | POS order reference (stored in notes) |
| customer_phone | string | No | Customer phone number |
| customer_name | string | No | Customer name |
| status | string | No | "paid" (default) or "confirmed" |
| items | array | Yes | Order line items |
| total | number | Yes | Total in whole KES |
| paid_at | string | No | ISO 8601 payment timestamp |