Skip to content

Store Router API

Store Router API menyediakan endpoint untuk operasional toko, termasuk POS, inventori, member, dan sync.

Base URL

http://localhost:8081/api

Catatan

Store Router API hanya dapat diakses dari jaringan lokal toko. Tidak bisa diakses dari luar tanpa VPN.

Endpoint Utama

POS

MethodEndpointKeterangan
POST/pos/transactionsBuat transaksi baru
GET/pos/transactions/:idDetail transaksi
POST/pos/transactions/:id/payProses pembayaran
POST/pos/transactions/:id/voidVoid transaksi
POST/pos/returnsProses retur
POST/pos/holdsHold transaksi
GET/pos/holdsDaftar hold
POST/pos/holds/:id/recallRecall hold

Shift

MethodEndpointKeterangan
POST/shifts/openBuka shift
POST/shifts/:id/closeTutup shift
GET/shifts/currentShift aktif
GET/shifts/:id/summaryRingkasan shift

Inventori

MethodEndpointKeterangan
GET/stockDaftar stok
GET/stock/:skuStok per produk
POST/receivingCatat receiving
POST/transfersBuat transfer
POST/adjustmentsBuat adjustment
POST/opnameMulai opname

Member

MethodEndpointKeterangan
GET/members/searchCari member
POST/membersDaftar member baru
GET/members/:idDetail member
GET/members/:id/pointsSaldo poin

Sync

MethodEndpointKeterangan
GET/sync/statusStatus sinkronisasi
POST/sync/forcePaksa sync sekarang

Contoh Request

Membuat Transaksi

POST /api/pos/transactions
Authorization: Bearer eyJhbGci...
Content-Type: application/json

{
  "items": [
    {"sku": "8991234567890", "qty": 3, "price": 3500},
    {"sku": "8997654321098", "qty": 2, "price": 5000}
  ],
  "member_id": "MBR-2026-001234",
  "shift_id": "shift-012"
}

Response:

json
{
  "success": true,
  "data": {
    "transaction_id": "TXN-001-20260322-0045",
    "subtotal": 20500,
    "discount": 0,
    "tax": 2255,
    "total": 20500,
    "points_earned": 2,
    "items": [...]
  }
}

Idempotency

Endpoint yang mengubah data mendukung idempotency key untuk mencegah duplikasi:

POST /api/pos/transactions
Idempotency-Key: unique-request-id-12345

RetailOS - Sistem ERP Retail Modern untuk Indonesia