Sentra Retail — API Documentation¶
Semua response standard menggunakan format REST JSON. Otorisasi menggunakan JWT bearer token.
5.1 POST /api/v1/pos/sync (Sinkronisasi Data POS Offline)¶
Digunakan oleh terminal POS lokal untuk mem-push transaksi yang dibuat saat offline.
-
Headers:
Content-Type: application/json
Authorization: Bearer <JWT_TOKEN>
X-Store-Code: STR-JKT-01 -
Request Body (JSON):
{ "batch_id": "8cbe6f76-0f72-47df-bc62-a7d519b7d8be", "transactions": [ { "id": "e8d6cb87-b903-4f91-88df-6ba4d31e9c20", "invoice_number": "INV/STR-JKT-01/20260521/0001", "shift_id": "a9a3b6f0-d9d1-419b-ab00-8804cb7d8db1", "member_id": "31fbc9c0-9a2c-47bc-926c-d2cbe234dcf1", "subtotal": 150000.00, "discount_amount": 10000.00, "tax_amount": 15400.00, "rounding_amount": 0.00, "grand_total": 155400.00, "payment_method": "QRIS", "created_at": "2026-05-21T20:00:00+07:00", "items": [ { "product_variant_id": "41c6f498-f2b7-4aeb-81fa-22345bc7d0e4", "qty": 2, "unit_price": 75000.00, "discount_amount": 10000.00, "tax_amount": 15400.00, "net_price": 140000.00, "commission_earned": 5000.00 } ] } ] } -
Success Response (200 OK):
5.2 POST /api/v1/pos/qris/generate-dynamic (QRIS Dinamis POS)¶
Menghasilkan QRIS dinamis di layar kasir berdasarkan nilai transaksi.
-
Request Body (JSON):
-
Response (200 OK):
{ "status": "success", "data": { "qris_string": "00020101021226580016ID.CO.QRIS.WWW0118936005210000000002030005211554005802ID5915SentraRetail POS6007Jakarta610512160620707081554006304CA21", "qr_code_image_url": "https://cdn.sentraretail.id/qris/e8d6cb87.png", "expiry_at": "2026-05-21T20:09:41+07:00" } }
5.3 WebSocket /ws/pos/realtime-sales (Push Notifikasi Penjualan)¶
Digunakan oleh Backoffice Cloud untuk menangkap event penjualan realtime dari seluruh cabang.
- Event Name:
sales_created - Payload: