Otorisasi dan Penangkapan

Prev Next

Capture pembayaran kartu adalah proses pengambilan uang dari rekening bank pelanggan untuk sebuah pembelian. Secara default, Xendit melakukan capture pembayaran secara otomatis. Namun, Anda dapat memilih untuk melakukan capture pembayaran secara manual atau menjadwalkannya untuk waktu lain.

Alasan untuk melakukan (atau menunda) capture

  • Barang Fisik: Lakukan capture pembayaran hanya setelah produk dikirim ke pelanggan.

  • Layanan: Untuk layanan yang diberikan seiring waktu, Anda mungkin ingin melakukan capture pembayaran hanya setelah layanan selesai. Ini bisa mencakup hal-hal seperti proyek konsultasi, renovasi rumah, atau langganan yang sedang berjalan.

  • Pesanan Kustom: Jika Anda menjual produk yang dibuat khusus, Anda mungkin ingin melakukan capture pembayaran hanya setelah barang diproduksi dan siap dikirim.

  • Barang Bernilai Tinggi: Untuk barang mahal, Anda mungkin ingin menunda capture untuk memberi diri Anda waktu untuk memverifikasi informasi pembayaran pelanggan dan mengurangi risiko penipuan.

  • Pre-Order: Jika Anda menawarkan pre-order untuk produk yang belum tersedia, Anda dapat menunda capture hingga produk tersedia untuk pengiriman.

  • Reservasi: Untuk bisnis yang menerima reservasi, seperti restoran atau hotel, Anda dapat mengotorisasi kartu pada saat pemesanan tetapi hanya melakukan capture pembayaran saat pelanggan tiba.

Untuk memahami capture lebih baik, alur otorisasi dan capture dijelaskan di bawah ini.

Otorisasi:

  1. Pelanggan memulai pembelian.

  2. Anda mengirimkan permintaan ke Xendit untuk mengotorisasi transaksi. Alur otorisasi mirip dengan transaksi tunggal, kecuali Anda mendefinisikan capture_method sebagai MANUAL saat membuat pembayaran

  1. Mulai permintaan pembayaran

Permintaan - POST /v3/payment_requests

{
  "reference_id": "{{$randomUUID}}",
  "type": "PAY",
  "country": "ID",
  "currency": "IDR",
  "request_amount": 10000,
  "capture_method": "MANUAL", // This field is defining the manual capture
  "channel_code": "CARDS",
  "channel_properties": {
    "card_details": {
            "card_number": "4000000000001091",
            "cardholder_first_name": "Shopper",
            "cardholder_last_name": "Name",
            "cardholder_email": "shopper@sample.com",
            "expiry_month": "12",
            "expiry_year": "2029"
        },
    "failure_return_url": "https://xendit.co/failure",
    "success_return_url": "https://xendit.co/success",
    "statement_descriptor": "Goods"
  },
  "description": "Description examples",
  "metadata": {
    "metametadata": "metametametadata"
  }
}
  1. Ambil ID pembayaran

    Untuk mengambil ID pembayaran, ikuti cara mengambil data otorisasi untuk pembayaran kartu.

  2. Simpan ID pembayaran dan lakukan capture transaksi

    Data otorisasi akan berisi metode capture:

    {
        "payment_id": "py-YOUR_UNIQUE_PAYMENT_ID",
        "business_id": "YOUR_BUSINESS_ID",
        "reference_id": "YOUR_REFERENCE",
        "payment_request_id": "pr-UNIQUE_PAYMENT_REQUEST_ID",
        "type": "PAY",
        "country": "ID",
        "currency": "IDR",
        "request_amount": 10000,
        "capture_method": "MANUAL", // Indicates a manual capture
        "channel_code": "CARDS",
        "status": "AUTHORIZED"
    }

Permintaan Capture

Untuk melakukan capture transaksi, buat permintaan POST ke /v3/payments/YOUR_PAYMENT_ID/capture

{
 // Make sure the amount is lower than or equal to the amount authorized
 "capture_amount": 10000, 
 "final_capture": true
}

Jika permintaan berhasil, akan ada objek captures dalam respons

{
    "payment_id": "py-YOUR_PAYMENT_ID",
    "business_id": "YOUR_BUSINESS_ID",
    "reference_id": "YOUR_REFERENCE_ID",
    "payment_request_id": "pr-YOUR_PAYMENT_REQUEST_ID",
    "type": "PAY",
    "country": "ID",
    "currency": "IDR",
    "request_amount": 10000,
    "capture_method": "MANUAL",
    "channel_code": "CARDS",
    "status": "SUCCEEDED",
    // The following block will show the completed capture requests
    "captures": [
        {
            "capture_id": "cptr-UNIQUE_CAPTURE_ID",
            "capture_timestamp": "2025-09-12T06:29:50.328Z",
            "capture_amount": 10000
        }
    ],
}

Beberapa capture parsial

Xendit belum mendukung beberapa capture parsial, hubungi tim support jika Anda memiliki kasus penggunaan atau pertanyaan mengenai beberapa capture parsial.