Lewati ke isi

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):

    {
      "status": "success",
      "message": "Sync completed successfully",
      "synced_count": 1,
      "errors": []
    }
    

5.2 POST /api/v1/pos/qris/generate-dynamic (QRIS Dinamis POS)

Menghasilkan QRIS dinamis di layar kasir berdasarkan nilai transaksi.

  • Request Body (JSON):

    {
      "transaction_id": "e8d6cb87-b903-4f91-88df-6ba4d31e9c20",
      "amount": 155400.00,
      "expiry_seconds": 180
    }
    

  • 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:
    {
      "store_code": "STR-JKT-01",
      "invoice_number": "INV/STR-JKT-01/20260521/0001",
      "grand_total": 155400.00,
      "cashier_name": "Budi Santoso",
      "timestamp": "2026-05-21T20:00:05+07:00"
    }