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:
Pelanggan memulai pembelian.
Anda mengirimkan permintaan ke Xendit untuk mengotorisasi transaksi. Alur otorisasi mirip dengan transaksi tunggal, kecuali Anda mendefinisikan
capture_methodsebagaiMANUALsaat membuat pembayaran
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"
}
}Ambil ID pembayaran
Untuk mengambil ID pembayaran, ikuti cara mengambil data otorisasi untuk pembayaran kartu.
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.