Xendit
Panduan lengkap menghubungkan Xendit Payment Gateway dengan Alusio: registrasi bisnis, Invoice Paid callback, Secret Key + Webhook Verification Token, dan memilih metode pembayaran di checkout.
Xendit adalah payment gateway lokal yang melayani Indonesia dan beberapa negara Asia Tenggara (Filipina, Malaysia, Thailand, Vietnam). Alusio terintegrasi dengan Xendit via Invoice API — halaman pembayaran hosted yang mendukung Virtual Account, eWallet, QRIS, kartu kredit/debit, retail outlet, sampai paylater dalam satu link.
Xendit bisa diaktifkan bersamaan dengan gateway lain (Midtrans, Duitku, Stripe, PayPal). Customer akan melihat semua opsi aktif di halaman checkout.
Prasyarat
- Akun bisnis Xendit — daftar di dashboard.xendit.co.
- Akses ke Dashboard Xendit (Test Mode untuk uji coba, Live Mode untuk produksi).
- Toko Alusio sudah aktif. Custom domain tidak diperlukan — Xendit bekerja di
[slug].alusio.commaupun custom domain.
Langkah 1 — Daftar & Verifikasi Bisnis
- Buka dashboard.xendit.co dan klik Sign Up.
- Lengkapi profil bisnis: nama legal, NPWP, dokumen pendukung (akta, SIUP/NIB), dan rekening pencairan (settlement).
- Tim Xendit akan memverifikasi dalam 1–5 hari kerja sebelum Anda bisa pakai Live Mode.
- Selagi menunggu, gunakan Test Mode — bebas verifikasi dan punya simulasi penuh untuk semua metode.
Langkah 2 — Salin Secret Key
- Login ke Dashboard Xendit. Toggle environment di pojok kanan-atas: Test Mode atau Live Mode.
- Buka Settings → API Keys (atau Developers → API Keys tergantung versi UI).
- Klik Generate Secret Key jika belum ada. Beri nama (misal: Alusio Production) dan centang permission minimal: Money-in Products (Invoice, Virtual Account, eWallet, dll).
- Salin Secret Key yang muncul (diawali
xnd_development_di Test Mode atauxnd_production_di Live Mode). Key ini hanya ditampilkan sekali — simpan baik-baik.
Penting: Secret Key adalah kredensial setara password. Jangan disimpan di repo Git atau dikirim lewat chat publik.
Langkah 3 — Atur Webhook (Invoice Paid Callback)
Webhook adalah notifikasi otomatis yang dikirim Xendit ke Alusio saat status invoice berubah (paid, expired). Tanpa ini, order tidak akan otomatis berubah ke status Paid.
- Di Dashboard Xendit, buka Settings → Callbacks (atau Developers → Webhooks).
- Cari section Invoices. Isi kolom Invoice Paid URL dengan (ganti
alus.iodengan domain instance Alusio Anda):https://alus.io/api/webhooks/xendit - Isi juga kolom Invoice Expired URL dengan URL yang sama agar order yang expired bisa otomatis ditandai.
- Klik Test & Save. Xendit akan mengirim sample payload — pastikan responsnya HTTP 200.
- Di section yang sama, salin Verification Token (kadang disebut Webhook Token) — ini berbeda dari Secret Key. Token ini dipakai Alusio untuk memverifikasi keaslian setiap webhook.
- Lakukan langkah yang sama untuk Live Mode setelah bisnis terverifikasi (Test Mode dan Live Mode punya callback URL & token terpisah).
Langkah 4 — Pasang Kredensial di Alusio
- Buka dashboard Alusio, masuk ke Settings → Payments.
- Pilih tab Xendit.
- Isi form:
- Secret Key — dari Langkah 2 (Test Mode atau Live Mode sesuai kebutuhan).
- Webhook Token — Verification Token dari Langkah 3 (bukan Secret Key).
- Klik Simpan Pengaturan Xendit.
Catatan: Xendit tidak punya toggle "Mode Produksi" terpisah di Alusio — environment otomatis ditentukan oleh prefix Secret Key (xnd_development_ = Test, xnd_production_ = Live). Pastikan Verification Token yang dipasang juga berasal dari environment yang sama.
Langkah 5 — Pilih Metode Pembayaran yang Ditawarkan
Di bawah form kredensial ada seksi Metode yang Ditawarkan di Checkout. Centang metode yang ingin ditampilkan di halaman Xendit Invoice:
- Virtual Account — BCA, BNI, BRI, Mandiri, Permata, BSI, Sahabat Sampoerna.
- eWallet — OVO, DANA, ShopeePay, LinkAja, Astrapay, JeniusPay.
- QRIS — terhubung ke semua wallet/bank yang mendukung QRIS.
- Kartu Kredit / Debit — Visa, Mastercard, JCB.
- Retail Outlet — Alfamart, Indomaret (bayar tunai di kasir).
- Paylater — Kredivo, Akulaku (tergantung ketersediaan di akun Anda).
- Direct Debit — BCA OneKlik, BRI Direct Debit, Mandiri Direct Debit.
Jika tidak ada yang dicentang, Xendit akan menampilkan semua metode yang aktif di akun bisnis Anda.
Langkah 6 — Uji Transaksi Test Mode
- Pastikan Secret Key yang dipasang diawali
xnd_development_. - Buka site Anda, tambahkan produk ke cart, lanjut ke checkout.
- Pilih salah satu metode Xendit — misal BCA Virtual Account.
- Di halaman Xendit Invoice (Test Mode), klik tombol Simulate Payment yang muncul untuk VA, atau gunakan kartu kredit test resmi Xendit (misal
4000 0000 0000 0002). - Kembali ke Alusio, buka Orders — status order harus berubah menjadi Paid dalam beberapa detik (via webhook).
Langkah 7 — Naik ke Live Mode
- Pastikan bisnis Anda sudah disetujui di Live Mode di Dashboard Xendit.
- Generate Secret Key baru di Live Mode (Langkah 2), dan salin Verification Token dari Live Callbacks (Langkah 3).
- Pastikan Invoice Paid URL & Invoice Expired URL di Live Mode sudah diisi sama persis.
- Di Alusio, ganti Secret Key & Webhook Token dengan kredensial Live, lalu simpan.
- Lakukan satu transaksi kecil (mis. Rp10.000) sebagai verifikasi end-to-end.
Troubleshooting
Gejala | Penyebab & Solusi |
|---|---|
Order tetap Pending meski sudah dibayar | Invoice Paid URL salah atau belum diisi. Cek di Settings → Callbacks, pastikan URL persis |
Webhook diterima tapi ditolak Alusio (logs: invalid signature) | Webhook Token salah. Pastikan Anda menyalin Verification Token dari halaman Callbacks, bukan Secret Key dari API Keys. Test dan Live punya token berbeda. |
Error 401 Unauthorized saat membuka invoice | Secret Key tidak valid atau dari environment yang salah. |
Metode pembayaran tidak muncul di halaman Xendit | Metode belum diaktifkan di akun bisnis Anda. Buka Settings → Payment Methods di Dashboard Xendit dan aktifkan, atau hubungi cs@xendit.co. |
Pembayaran retail outlet (Alfamart/Indomaret) tidak muncul di kasir | Kode pembayaran perlu diaktifkan oleh tim Xendit dan butuh kontrak terpisah. Hubungi Account Manager Anda. |
Catatan Keamanan
- Secret Key & Verification Token bersifat rahasia. Jangan tampilkan di screenshot publik, repo Git, atau halaman frontend.
- Jika kredensial bocor: di Dashboard Xendit, klik Revoke Secret Key lama dan generate yang baru, lalu update di Alusio. Untuk Webhook Token, klik Rotate Token.
- Setiap webhook Xendit dikirim dengan header
x-callback-tokenyang diverifikasi otomatis oleh Alusio — request yang tidak match token akan langsung ditolak.