SAPI POS / Dokumentasi
Referensi API Masuk Coba Gratis

Dokumentasi Developer

API Pesan Mandiri

Endpoint untuk kanal pemesanan di luar aplikasi kasir — bot WhatsApp, alur n8n, halaman pesan sendiri, atau apa pun yang perlu memasukkan pesanan ke SAPI.

Autentikasi

Bearer token, dibuat pemilik usaha dari halaman Pengaturan. Sama seperti permukaan lain, token melekat pada satu usaha.

Authorization: Bearer {token}
Accept: application/json

Membaca katalog

GET /api/v1/products

Mengembalikan produk beserta varian, harga, dan modifier yang tersedia. Inilah yang dipakai bot untuk menyusun pilihan bagi pembeli.

Produk yang dinonaktifkan tidak ikut terkirim, jadi Anda tidak perlu menyaringnya sendiri.

Membuat pesanan

POST /api/v1/orders

Dibatasi 60 permintaan per menit.

Pesanan yang masuk lewat endpoint ini ditandai sebagai kanal pesan mandiri, sehingga di aplikasi kasir bisa dibedakan dari penjualan di konter.

Kirim item beserta varian, jumlah, dan modifier yang dipilih. Harga tidak dikirim dari sisi Anda — server memakai harga yang berlaku di katalog saat itu. Ini disengaja: kanal luar tidak boleh menentukan harga.

Memperbarui status penyiapan

PATCH /api/v1/orders/{id}/fulfillment

Untuk memberi tahu SAPI bahwa pesanan sudah disiapkan, diantar, atau selesai. Berguna bila alur penyiapan Anda berjalan di sistem lain — misalnya papan antrean dapur.

Webhook pembayaran

POST /api/xendit/webhook

Menerima pemberitahuan pembayaran dari Xendit. Tidak diversikan karena URL-nya dikonfigurasi di dashboard Xendit, di luar kendali kita.

Diverifikasi lewat header x-callback-token, bukan Bearer token. Endpoint ini tidak dimaksudkan untuk dipanggil aplikasi Anda.

Pola yang kami sarankan

Ambil katalog secukupnya, jangan tiap pesan. Katalog jarang berubah; menyimpannya beberapa menit di sisi Anda jauh lebih ramah daripada memanggil ulang tiap kali pembeli mengetik.

Tangani 429 dengan jeda, bukan pengulangan segera. Batas lajunya per menit; mencoba ulang seketika hanya memperpanjang penolakan.

Jangan menyimpan harga di sisi Anda sebagai kebenaran. Harga bisa diubah pemilik kapan saja. Tampilkan dari katalog yang baru Anda ambil, dan biarkan server yang menghitung total.

Pesanan yang belum dibayar tidak masuk laporan. Selama statusnya masih menunggu, ia tidak dihitung sebagai penjualan di mana pun — jadi jangan kaget bila angka di dashboard belum bergerak.