# Lakukan penahanan metode pembayaran Pisahkan otorisasi pembayaran dan penarikan untuk membuat charge sekarang, tetapi tarik dana nanti. Saat melakukan pembayaran, Anda dapat menahan metode pembayaran yang memenuhi syarat untuk mencadangkan dana yang dapat ditarik nanti. Misalnya, hotel sering kali mengotorisasi pembayaran secara penuh sebelum tamu datang, kemudian mengambil uangnya saat tamu check out. Hal ini terkadang disebut sebagai *penarikan manual* (Manually capture funds separately from an authorization). Mengotorisasi pembayaran menjamin jumlah tersebut dengan menahannya pada metode pembayaran pelanggan. Jika Anda menggunakan API, atribut [payment_method_details.card.capture_before](https://docs.stripe.com/api/charges/object.md#charge_object-payment_method_details-card-capture_before) pada charge mengindikasikan kapan otorisasi akan kedaluwarsa. Anda perlu menarik dana sebelum otorisasi berakhir. Jika otorisasi kedaluwarsa sebelum Anda menarik dana, dana akan dilepaskan dan status pembayaran berubah menjadi `canceled`. Pelajari selengkapnya tentang [status untuk pembayaran asinkron](https://docs.stripe.com/payments/paymentintents/lifecycle.md). ## Jangka waktu validitas otorisasi Tabel berikut menguraikan jendela validitas untuk mengotorisasi tipe transaksi yang berbeda. ### Transaksi tanpa kartu fisik | Brand kartu | [Transaksi yang diprakarsai merchant](https://docs.stripe.com/payments/cits-and-mits.md) Jangka waktu validitas otorisasi | [Transaksi yang diprakarsai pelanggan](https://docs.stripe.com/payments/cits-and-mits.md) Jangka waktu validitas otorisasi | | -------------------- | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- | | **Visa** | 5 hari* | 7 hari | | **Mastercard** | 7 hari | 7 hari | | **American Express** | 7 hari | 7 hari | | **Discover** | 7 hari | 7 hari | Jangka waktu otorisasi yang tepat adalah 4 hari dan 18 jam, agar ada waktu untuk proses kliring. ### Transaksi dengan kartu fisik (pembayaran di tempat) | Brand kartu | Jangka waktu validitas otorisasi | | -------------------- | -------------------------------- | | **Visa** | 5 hari* | | **Mastercard** | 2 hari | | **American Express** | 2 hari | | **Discover** | 2 hari | Jangka waktu otorisasi yang tepat adalah 4 hari dan 18 jam, agar ada waktu untuk proses kliring. ### Jangka waktu otorisasi 30 hari di Jepang Jika akun Anda berlokasi di Jepang, Anda dapat menyimpan transaksi dalam mata uang JPY dari Visa, Mastercard, JCB, Diners Club, dan Discover hingga 30 hari. Transaksi Express non-JPY dan Amerika berakhir setelah jendela standar 7 hari. > Per 14 April 2024, Visa mempersingkat jangka waktu otorisasi untuk [Transaksi yang Diprakarsai Merchant](https://docs.stripe.com/payments/cits-and-mits.md) online dari 7 hari menjadi 5 hari. Visa juga memperpanjang jangka waktu otorisasi untuk transaksi di tempat (Terminal) dari 2 hari menjadi 5 hari. ## Batasan metode pembayaran Sebelum pengimplementasian, pahami batasan berikut untuk mengotorisasi dan menarik secara terpisah. - Hanya beberapa metode pembayaran yang mendukung *penarikan* (Fulfillment is the process of providing the goods or services purchased by a customer, typically after payment is collected) dan otorisasi terpisah. Beberapa metode pembayaran yang mendukung ini termasuk kartu, Affirm, Afterpay, Cash App Pay, Klarna, dan PayPal. Beberapa metode pembayaran yang tidak mendukung hal ini meliputi [ACH](https://docs.stripe.com/payments/ach-direct-debit.md) dan [iDEAL](https://docs.stripe.com/payments/ideal.md). Baca selengkapnya tentang [dukungan fitur metode pembayaran](https://docs.stripe.com/payments/payment-methods/payment-method-support.md). - Selain yang diuraikan dalam tabel di atas, metode pembayaran lainnya memiliki aturan dan jangka waktu otorisasi yang berbeda: - Pembayaran kartu: Jumlah ini biasanya ditahan selama 7 hari untuk pembayaran online dan 2 hari untuk pembayaran Terminal di tempat (tergantung pada jenis transaksi dan jaringan kartu). Anda dapat meminta otorisasi yang diperpanjang untuk [online](https://docs.stripe.com/payments/extended-authorization.md) dan [otorisasi pembayaran Terminal](https://docs.stripe.com/terminal/features/extended-authorizations.md) tertentu yang memenuhi syarat untuk perpanjangan masa berlaku. Jaringan kartu juga dapat membatasi otorisasi 1 USD yang tidak ingin Anda tarik. - [Affirm](https://docs.stripe.com/payments/affirm/accept-a-payment.md?platform=web#manual-capture): Jika Affirm memerlukan uang muka untuk jumlah pesanan yang sangat besar, mereka akan men-charge jumlah tersebut selama otorisasi dan mengembalikan dana jika pembayaran tidak ditarik. Anda kemudian memiliki waktu 30 hari untuk menarik saldo pembayaran. - [Afterpay/Clearpay](https://docs.stripe.com/payments/afterpay-clearpay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Selama otorisasi, pelanggan membayar angsuran pembayaran pertama. Afterpay mengembalikan dana pembayaran jika tidak pernah ditarik. Anda kemudian memiliki waktu 13 hari untuk menarik saldo pembayaran. - [Cash App Pay](https://docs.stripe.com/payments/cash-app-pay/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Otorisasi yang valid harus ditarik dalam waktu 7 hari untuk menyelesaikan pembayaran. - [Klarna](https://docs.stripe.com/payments/klarna/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Anda harus menarik charge pada tengah malam tanggal 28 hari kalender setelah permintaan charge, jika tidak, otorisasi akan kedaluwarsa. Misalnya, Anda harus menarik permintaan charge pada UTC 2020-10-01 14:00 oleh UTC 2020-10-29 00:00. - [PayPal](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture): Tahan jumlah tersebut selama 10 hari. Stripe secara otomatis mencoba memperpanjang penangguhan selama 10 hari lagi, dengan total 20 hari. [Preferensi pelunasan](https://docs.stripe.com/payments/paypal/choose-settlement-preference.md) Anda dapat memengaruhi periode otorisasi. Lihat [otorisasi dan penarikan terpisah](https://docs.stripe.com/payments/paypal/accept-a-payment.md?web-or-mobile=web&payment-ui=direct-api#manual-capture) untuk informasi selengkapnya. ## Gunakan Dashboard untuk mengotorisasi dan menarik Anda dapat mengotorisasi pembayaran dan menarik dana secara terpisah tanpa menulis kode. 1. Di Dashboard, [buat pembayaran baru](https://dashboard.stripe.com/test/payments/new). Pilih **Satu kali**. 1. Saat Anda memasukkan atau memilih metode pembayaran, pilih **Opsi selengkapnya** kemudian **Tarik dana nanti**. Pembayaran muncul di [halaman pembayaran](https://dashboard.stripe.com/test/payments) Anda sebagai **Belum ditarik**. Untuk menarik dana, buka halaman detail pembayaran dan klik **Tarik**. ## Beri tahu Stripe untuk memberi otorisasi saja #### Checkout Sessions API Untuk mengisyaratkan bahwa Anda ingin memisahkan otorisasi dan penarikan, tentukan [capture_method](https://docs.stripe.com/api/checkout/sessions/create.md#create_checkout_session-payment_intent_data-capture_method) sebagai `manual` ketika membuat Sesi Checkout. Parameter ini menginstruksikan Stripe untuk hanya mengotorisasikan jumlah pada metode pembayaran pelanggan tetapi tidak menariknya. ```curl curl https://api.stripe.com/v1/checkout/sessions \ -u "<>:" \ -d "line_items[0][price]"="{{PRICE_ID}}" \ -d "line_items[0][quantity]"=2 \ -d mode=payment \ -d ui_mode=custom \ -d "payment_intent_data[capture_method]"=manual ``` Dengan pendekatan di atas, Anda memberi tahu Stripe bahwa Anda hanya dapat menggunakan “tarik setelah” untuk Sesi Checkout dengan metode pembayaran yang memenuhi syarat. #### Payment Intents API Untuk mengisyaratkan bahwa Anda ingin memisahkan otorisasi dan penarikan, tentukan [capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-capture_method) sebagai `manual` ketika membuat PaymentIntent. Parameter ini menginstruksikan Stripe untuk hanya mengotorisasikan jumlah pada metode pembayaran pelanggan tetapi tidak menariknya. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d capture_method=manual ``` Dengan pendekatan di atas, Anda memberi tahu Stripe bahwa Anda hanya dapat menggunakan “tarik setelah” untuk PaymentIntent dengan metode pembayaran yang memenuhi syarat. Misalnya, Anda tidak dapat menerima pembayaran kartu dan Debit Langsung SEPA (yang tidak mendukung penarikan setelah) untuk satu PaymentIntent. Untuk menerima metode pembayaran yang mungkin tidak semuanya mendukung penarikan setelahnya, Anda dapat melakukan konfigurasi penarikan setelah otoriasi untuk setiap metode pembayaran dengan melakukan konfigurasi `capture_method=manual` pada objek `payment_method_options[]`. Misalnya, dengan mengonfigurasi `payment_method_options[card][capture_method]=manual`, Anda hanya menangguhkan pembayaran kartu. Anda dapat mengelola metode pembayaran dari [Dashboard](https://dashboard.stripe.com/settings/payment_methods). Stripe menangani logika untuk [menampilkan secara dinamis](https://docs.stripe.com/payments/payment-methods/dynamic-payment-methods.md) metode pembayaran paling relevan yang memenuhi syarat kepada setiap pelanggan berdasarkan faktor-faktor, seperti jumlah transaksi, mata uang, dan alur pembayaran. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "automatic_payment_methods[enabled]"=true \ -d "payment_method_options[card][capture_method]"=manual ``` Sebagai alternatif, Anda dapat mencantumkan `card` dan `sepa_debit` menggunakan [tipe metode pembayaran](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_types) seperti dalam contoh di bawah. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=eur \ -d "payment_method_types[]"=card \ -d "payment_method_types[]"=sepa_debit \ -d "payment_method_options[card][capture_method]"=manual ``` Sebelum melanjutkan penarikan, lampirkan metode pembayaran dengan detail kartu ke PaymentIntent, dan otorisasikan kartu dengan mengonfirmasi PaymentIntent. Anda dapat melakukannya dengan mengatur bidang `payment_method` dan `confirm` pada PaymentIntent. > #### Otorisasi yang diperpanjang > > Biasanya, otorisasi untuk pembayaran kartu online berlaku selama 7 hari. Untuk meningkatkan masa berlaku, Anda dapat [menunda pembayaran kartu online dengan jangka waktu yang lebih lama](https://docs.stripe.com/payments/extended-authorization.md). ## Tarik dana > #### Sesi Checkout memiliki identifikasi PaymentIntent > > Jika menggunakan Checkout Sessions API, pastikan Anda menggunakan [identifikasi PaymentIntent](https://docs.stripe.com/api/checkout/sessions/object.md#checkout_session_object-payment_intent) yang dikembalikan di objek Sesi Checkout. Setelah metode pembayaran diotorisasi, [status](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-status) PaymentIntent bertransisi ke `requires_capture`. Untuk menarik dana yang diotorisasi, buat permintaan [penarikan](https://docs.stripe.com/api/payment_intents/capture.md) PaymentIntent. Ini akan menarik total jumlah yang diotorisasi secara default. Untuk menarik lebih sedikit atau (untuk pembayaran kartu online tertentu) lebih dari jumlah awal, teruskan opsi [amount_to_capture](https://docs.stripe.com/api/payment_intents/capture.md#capture_payment_intent-amount_to_capture). Penarikan parsial secara otomatis melepaskan sisa jumlah. Jika mencoba menarik lebih dari jumlah awal untuk pembayaran kartu online, lihat [dokumentasi penarikan berlebih](https://docs.stripe.com/payments/overcapture.md). Contoh berikut menunjukkan cara menarik 7,50 USD dari pembayaran 10,99 USD yang diotorisasi: ```curl curl https://api.stripe.com/v1/payment_intents/pi_123/capture \ -u "<>:" \ -d amount_to_capture=750 ``` Walaupun beberapa pembayaran kartu memenuhi syarat untuk [penarikan ganda](https://docs.stripe.com/payments/multicapture.md), Anda hanya dapat melakukan satu penarikan pada pembayaran yang diotorisasi untuk sebagian besar pembayaran. Jika menarik sebagian pembayaran, Anda tidak dapat melakukan penarikan lain untuk selisihnya. (Sebagai gantinya, pertimbangkan untuk [menyimpan detail metode pembayaran pelanggan untuk nanti](https://docs.stripe.com/payments/save-during-payment.md#save-payment-details-for-future-use) dan membuat pembayaran mendatang bila perlu). Rekening koran kartu dari beberapa penerbit serta antarmuka dari metode pembayaran tidak selalu membedakan antara otorisasi dan pembayaran (diselesaikan) yang ditarik, yang terkadang dapat membingungkan pelanggan. Selain itu, bila pelanggan menyelesaikan proses pembayaran pada PaymentIntent dengan penarikan manual, hal ini akan memicu kejadian `payment_intent.amount_capturable_updated`. Anda dapat memeriksa properti [amount_capturable](https://docs.stripe.com/api/payment_intents/object.md#payment_intent_object-amount_capturable) PaymentIntent untuk melihat total jumlah yang dapat ditarik dari PaymentIntent. ## Batalkan otorisasi Jika perlu membatalkan otorisasi, Anda dapat [membatalkan PaymentIntent](https://docs.stripe.com/refunds.md#cancel-payment). ## Tangkap pembayaran sebelum otorisasi kedaluwarsa (Private preview) Anda dapat menginstruksikan Stripe untuk secara otomatis melakukan penarikan sebelum otorisasi berakhir, sebagai ganti memicu penarikan secara manual untuk metode pembayaran kartu. Gunakan penarikan tertunda otomatis untuk memastikan Anda tidak melewatkan penarikan pembayaran yang telah diotorisasi. Anda juga dapat menetapkan periode penundaan khusus dari waktu otorisasi hingga penarikan. Untuk mengaktifkan penarikan tertunda otomatis, atur[capture_method](https://docs.stripe.com/api/payment_intents/create.md#create_payment_intent-payment_method_options-card) sebagai`automatic_delayed` di PaymentIntent: ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed ``` Dengan pendekatan ini, Stripe akan melakukan penarikan dana dari pembayaran kartu Anda sebelum otorisasi berakhir, yaitu sekitar 6 jam sebelum waktu kedaluwarsa. Proses ini berfungsi sebagai cadangan untuk memastikan kami dapat menarik pembayaran yang telah diotorisasi sebelum kedaluwarsa. Anda tetap dapat melakukan [penarikan](https://docs.stripe.com/api/payment_intents/capture.md) atau [pembatalan](https://docs.stripe.com/refunds.md#cancel-payment) secara manual sebelum penarikan dilakukan secara otomatis. Anda dapat menentukan periode penundaan kustom untuk penarikan dengan menyertakan parameter `capture_delay_days`. Parameter tersebut menunjukkan jumlah hari penundaan penarikan setelah otorisasi berhasil. ```curl curl https://api.stripe.com/v1/payment_intents \ -u "<>:" \ -d amount=1099 \ -d currency=usd \ -d "payment_method_types[]"=card \ -d "payment_method_options[card][capture_method]"=automatic_delayed \ -d "payment_method_options[card][capture_delay_days]"=3 ``` Pada contoh berikut, Stripe secara otomatis melakukan penarikan pada PaymentIntent tiga hari setelah otorisasi berhasil. Cara ini relevan apabila telah diketahui waktu yang dibutuhkan antara otorisasi dan penarikan, sehingga pembayaran dapat dipastikan berhasil ditarik sebelum otorisasi berakhir. > Dengan `capture_method=automatic_delayed`, Stripe memprioritaskan penarikan pembayaran sebelum otorisasi kedaluwarsa. Apabila jendela otorisasi lebih singkat daripada periode penundaan yang ditentukan, Stripe akan melakukan penarikan sebelum kedaluwarsa, dengan mengabaikan periode penundaan. ## See also - [Otorisasi dan pengambilan terpisah dengan Checkout](https://docs.stripe.com/payments/accept-a-payment.md?payment-ui=checkout&ui=stripe-hosted#auth-and-capture) - [Tunda pembayaran kartu online dengan jangka waktu yang lebih lama](https://docs.stripe.com/payments/extended-authorization.md)