Permintaan pembayaran

Daftar permintaan

Daftar permintaan pembayaran, terbaru dulu, dengan cursor paging.

GET/v1/transactions

Parameter query

limitintegeropsional

Jumlah per halaman, 1–100 (default 20). Nilai lain — di atas 100, nol, negatif, atau bukan angka — diam-diam diganti default 20, bukan ditolak, jadi limit yang salah tidak memunculkan error, tapi jumlah baris per request jadi tidak sesuai harapan.

Contoh: 20

starting_afterstringopsional

Id payreq_* terakhir yang Anda lihat, untuk halaman berikutnya. Jangan gabungkan paging dengan filter di bawah: has_more berlaku untuk query, bukan untuk sisa setelah difilter, jadi halaman yang difilter bisa kosong dengan has_more: true — padahal cursor-nya adalah id terakhir di data, yang tidak ada di halaman kosong. Paging tanpa filter, lalu filter di sisi Anda.

statusstringopsional

Filter berdasarkan status. Semua filter di sini hanya berlaku pada halaman yang diambil, jadi hasil filter paling banyak sejumlah limit — ini bukan pencarian di seluruh riwayat Anda. Untuk mencakup semuanya, paging tanpa filter, lalu filter di sisi Anda.

Contoh: succeeded

external_idstringopsional

Filter berdasarkan nomor pesanan. Hanya per halaman, seperti status.

merchant_refstringopsional

Filter berdasarkan referensi Anda sendiri. Hanya per halaman, seperti status.

created_after, created_beforestringopsional

Rentang waktu (RFC3339), half-open: created_after menyertakan permintaan pembayaran yang dibuat tepat di batas, created_before tidak, jadi rentang yang bersambung tidak pernah melewatkan atau menggandakan satu baris. Hanya per halaman, seperti status. Nilai yang bukan RFC3339 ditolak dengan 422 invalid_filter, bukan diabaikan — kirim 2026-08-11T00:00:00+07:00, bukan 2026-08-11.

GET /v1/transactions
curl "https://pay.kasera.id/v1/transactions?limit=20&status=succeeded" \
  -H "Authorization: Bearer kp_live_..."
{
  "data": [
    {
      "id": "payreq_9b2f...",
      "livemode": true,
      "status": "pending",
      "currency": "IDR",
      "amount": 150000,
      "fee": 1300,
      "net": 148700,
      "description": "Kaos komunitas",
      "external_id": "ORD-1234",
      "merchant_ref": "INV-2026-001",
      "customer": { "name": "Budi", "email": "budi@toko.dev" },
      "order_items": [
        { "name": "Kaos komunitas", "price": 75000, "quantity": 2 }
      ],
      "return_url": "https://toko.example/selesai",
      "checkout_url": "https://pay.kasera.id/p/xK3f...",
      "source": "api",
      "payment_method": "qris",
      "payment": {
        "type": "qr",
        "qr_string": "00020101021226670016COM.KASERA.WWW...6304A1B2"
      },
      "instructions": {
        "title": "Cara membayar dengan QRIS",
        "steps": [
          "Buka aplikasi e-wallet atau mobile banking Anda.",
          "Pilih menu bayar dengan QRIS, lalu scan kode QR di halaman pembayaran.",
          "Periksa nama merchant dan nominal, lalu konfirmasi pembayaran.",
          "Pembayaran terkonfirmasi otomatis dalam beberapa detik."
        ]
      },
      "expires_at": "2026-08-11T13:00:00+07:00",
      "paid_at": null,
      "created_at": "2026-08-11T12:00:00+07:00"
    }
  ],
  "has_more": false
}