Direct API
PayLater
Akulaku, Kredivo, dan Indodana: pembeli mencicil, Anda dibayar penuh.
Private preview. PayLater baru dibuka untuk akun tertentu. Ingin memakainya? Email halo@kasera.id. Selama belum diaktifkan, create dengan salah satu kode ini ditolak 422 payment_method_unavailable.
Pembeli keluar dari halaman Anda, masuk ke akun lender, memilih tenor dan disetujui di sana, lalu kembali ke return_url Anda. Anda menerima nominal penuh seperti pembayaran lain; cicilannya urusan pembeli dengan lender.
Langkah integrasi
- Buat permintaan pembayaran.
- Redirect pembeli ke payment.redirect_url.
- Terima konfirmasi pembayaran lewat webhook payment.paid.
- Cek status kalau perlu kepastian: GET /v1/transactions/:id.
Data yang dibutuhkan tiap lender
| Field | akulaku | kredivo | indodana |
|---|---|---|---|
customer.name | ✓ | ✓ | ✓ |
customer.email | ✓ | ✓ | ✓ |
customer.phone | ✓ | ✓ | ✓ |
customer.address | — | ✓ | ✓ |
customer.phoneharus 10 sampai 15 digit, termasuk kode negara.081234567890maupun+6281234567890sama-sama bisa.customer.addressterdiri dariline,city, danpostal_code. Baru dihitung kalau ketiganya ada; alamat setengah dianggap tidak ada.- Di Direct API, field yang kosong atau tidak valid ditolak
422 customer_requiredbeserta nama field-nya. Di Checkout Anda boleh tidak mengirimnya, nanti halamannya yang menanyakan ke pembeli.
{
"error": {
"code": "customer_required",
"message": "...",
"fields": { "customer.address": "required" }
}
}1. Buat permintaan pembayaran
order_items opsional. Lender menampilkan ke pembeli apa yang dibayar, jadi kirim kalau Anda punya datanya; totalnya harus sama dengan amount atau create ditolak 422 order_items_mismatch. Kalau tidak dikirim, lender melihat satu baris berisi description Anda.
curl https://pay.kasera.id/v1/transactions \
-H "Authorization: Bearer kp_live_..." \
-H "Idempotency-Key: order-1234" \
-H "Content-Type: application/json" \
-d '{
"amount": 1500000,
"external_id": "ORD-1234",
"payment_methods": ["kredivo"],
"return_url": "https://toko.example/selesai",
"customer": {
"name": "Budi Santoso",
"email": "budi@example.com",
"phone": "081234567890",
"address": {
"line": "Jl. Sudirman No. 1",
"city": "Kota Administrasi Jakarta Selatan",
"postal_code": "12190"
}
},
"order_items": [
{ "name": "Kursi kerja", "price": 1500000, "quantity": 1 }
]
}'{
"id": "payreq_9b2f...",
"status": "pending",
"payment_method": "kredivo",
"payment": {
"type": "redirect",
"redirect_url": "https://sandbox.kredivo.com/...",
"display_name": "Kredivo"
},
"expires_at": "2026-10-01T13:00:00+07:00"
}2. Redirect pembeli ke sana
Arahkan browser ke payment.redirect_url — jangan di iframe atau popup. Kalau lender menolak pembeli, pembayarannya berakhir failed; buat permintaan baru supaya pembeli bisa bayar dengan cara lain.
3. Terima konfirmasi pembayaran
Pembeli yang kembali ke return_url itu navigasi, bukan bukti — pembeli yang batal di halaman lender kembali ke URL yang sama. Proses pesanan dari webhook payment.paid, atau ambil permintaan pembayarannya dari server sebelum menampilkan hasil akhir.
Refund
Kasera Pay tidak melakukan refund untuk pembayaran PayLater. Pengembalian mengikuti kebijakan toko Anda sendiri, diselesaikan langsung dengan pembeli.