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

  1. Buat permintaan pembayaran.
  2. Redirect pembeli ke payment.redirect_url.
  3. Terima konfirmasi pembayaran lewat webhook payment.paid.
  4. Cek status kalau perlu kepastian: GET /v1/transactions/:id.

Data yang dibutuhkan tiap lender

Fieldakulakukredivoindodana
customer.name✓✓✓
customer.email✓✓✓
customer.phone✓✓✓
customer.address—✓✓
  • customer.phone harus 10 sampai 15 digit, termasuk kode negara. 081234567890 maupun +6281234567890 sama-sama bisa.
  • customer.address terdiri dari line, city, dan postal_code. Baru dihitung kalau ketiganya ada; alamat setengah dianggap tidak ada.
  • Di Direct API, field yang kosong atau tidak valid ditolak 422 customer_required beserta 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.