# Kembalikan dana dan batalkan pembayaran Pelajari cara membatalkan atau mengembalikan dana pembayaran. Anda dapat [membatalkan pembayaran](https://docs.stripe.com/refunds.md#cancel-payment) sebelum pembayaran selesai tanpa biaya. Atau Anda dapat mengembalikan seluruh atau pun sebagian pembayaran setelah pembayaran berhasil, yang mungkin akan dikenakan biaya. Kunjungi [halaman harga](https://stripe.com/pricing/local-payment-methods) untuk informasi lebih lanjut. Pengembalian dana Anda tersedia dengan menggunakan saldo Stripe (tidak termasuk jumlah yang tertunda). Jika saldo Anda yang tersedia tidak mencakup jumlah pengembalian dana, Stripe menahan pengembalian dana sebagai tertunda untuk transaksi kartu (pengembalian dana untuk jenis metode pembayaran lainnya akan gagal) hingga saldo Stripe Anda mencukupi. Anda dapat menyelesaikan saldo Stripe negatif dengan mengumpulkan pembayaran atau *menambah saldo* (The act of adding funds to a Stripe account, typically through a transfer from a bank external to Stripe) akun Anda. Di wilayah yang berlaku, Stripe mungkin mendebit rekening bank Anda secara otomatis untuk memulihkan saldo negatif Stripe. ## Permintaan pengembalian dana Kami mengirimkan permintaan pengembalian dana ke bank pelanggan Anda atau *penerbit kartu* (The entity that issued a payment card to a cardholder. This could be a bank, such as with the Visa or Mastercard network, or it could be the card network itself, such as with American Express). Pengembalian dana yang berhasil muncul di laporan mutasi bank pelanggan Anda secara real time, tergantung pada jaringan kartu dan bank penerbit. Sengketa dan tolak bayar tidak dapat dilakukan pada tagihan kartu kredit yang dikembalikan sepenuhnya. Jika semua kondisi berikut berlaku, kami mengirim email ke pelanggan Anda yang memberitahukan mereka tentang pengembalian dana: - Charge aslinya dibuat pada pelanggan di akun Stripe Anda. - Pelanggan memiliki alamat email yang tersimpan. - Anda mengaktifkan **Kirim email kepada pelanggan untuk pengembalian dana** di [Dashboard](https://dashboard.stripe.com/account/emails). Anda dapat [melihat pembayaran yang dikembalikan di Dashboard](https://dashboard.stripe.com/test/payments?status%5B0%5D=refunded&status%5B1%5D=refund_pending&status%5B2%5D=partially_refunded). ## Lakukan pengembalian dana Anda dapat melakukan pengembalian dana dengan menggunakan [Refunds API](https://docs.stripe.com/api/refunds.md) atau [Dashboard](https://dashboard.stripe.com/test/payments). Anda dapat melakukan lebih dari satu pengembalian dana untuk sebuah charge, tetapi Anda tidak dapat mengembalikan dana dengan total yang lebih besar dari jumlah charge aslinya. #### Dashboard Untuk mengembalikan dana pembayaran menggunakan Dashboard: 1. Temukan pembayaran yang ingin Anda kembalikan dananya di halaman [Pembayaran](https://dashboard.stripe.com/payments). 1. Klik menu perluasan (⋯) di sebelah kanan pembayaran, kemudian pilih **Pembayaran pengembalian dana**. 1. Secara default, Anda akan melakukan pengembalian dana penuh. Untuk pengembalian dana sebagian, masukkan jumlah pengembalian dana yang berbeda. 1. Pilih alasan pengembalian dana. Jika memilih **Lainnya**, Anda harus menambahkan catatan yang menjelaskan alasan pengembalian dana. Klik **Kembalikan dana**. Atau, Anda dapat mengklik pembayaran tertentu dan mengeluarkan pengembalian dana dari halaman detailnya. Anda juga dapat mengirim [resi pengembalian dana](https://docs.stripe.com/receipts.md#refund-receipts) secara otomatis atau manual mengirim resi untuk setiap pengembalian dana. > #### Pengembalian dana massal > > Dashboard mendukung pengembalian dana massal untuk pembayaran penuh. Pilih pembayaran yang ingin Anda kembalikan dananya dengan mencentang kotak di sebelah kiri setiap pembayaran—bahkan di beberapa halaman hasil. Kemudian, klik **Kembalikan dana** dan pilih alasannya. Anda hanya dapat melakukan pengembalian dana penuh dengan cara ini; pengembalian dana sebagian harus dilakukan secara perorangan. #### API Untuk mengembalikan dana pembayaran menggunakan API, [buat pengembalian dana](https://docs.stripe.com/api.md#create_refund) dengan memberikan identifikasi charge atau [PaymentIntent](https://docs.stripe.com/api/payment_intents.md). Saat Anda menggunakan PaymentIntent untuk menagih pembayaran, Stripe membuat [charge](https://docs.stripe.com/api/charges/object.md) objek. Untuk mengembalikan dana pembayaran setelah PaymentIntent berhasil, buat pengembalian dana menggunakan PaymentIntent, yang sama dengan pengembalian dana tagihan yang mendasarinya. Jika Anda menggunakan API Stripe Tax untuk mencatat penjualan, Anda harus [rekam pengembalian dana](https://docs.stripe.com/tax/custom.md#reversals). ```curl curl https://api.stripe.com/v1/refunds \ -u "<>:" \ -d payment_intent=pi_Aabcxyz01aDfoo ``` Anda juga dapat mengembalikan hanya sebagian dari PaymentIntent dengan menentukan jumlah. Untuk melakukannya, berikan `jumlah` sebagai bilangan bulat dalam sen (atau satuan mata uang terkecil mata uang tagihan). ```curl curl https://api.stripe.com/v1/refunds \ -u "<>:" \ -d payment_intent=pi_Aabcxyz01aDfoo \ -d amount=1000 ``` Jika Anda ingin memisahkan [otorisasi dan penarikan](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md) charge, dan mengembalikan dana PaymentIntent yang memiliki status `requires_capture`, proses pengembalian dana berbeda. Dalam hal ini, tagihan yang melekat pada PaymentIntent tetap tidak ditangkap dan tidak dapat dikembalikan secara langsung. Anda harus [membatalkan PaymentIntent](https://docs.stripe.com/api/payment_intents/cancel.md). ### Pengembalian dana melalui platform Connect Perilaku pengembalian dana bergantung pada [tipe charge Connect](https://docs.stripe.com/connect/charges.md#refund-creation) yang digunakan dalam integrasi Anda. - Stripe mendebit akun terhubung secara langsung untuk pengembalian dana ke pembayaran [direct charge](https://docs.stripe.com/connect/direct-charges.md#issue-refunds). - Stripe mendebit platform Anda untuk pengembalian dana ke [biaya tujuan](https://docs.stripe.com/connect/destination-charges.md#issue-refunds) atau [pengisian dan transfer terpisah](https://docs.stripe.com/connect/separate-charges-and-transfers.md#issue-refunds) (dengan atau tanpa `on_behalf_of`) pembayaran. Balikkan transfer yang terkait dengan jenis tagihan ini untuk memulihkan jumlah pengembalian dana dari akun Anda yang terhubung. Platform Connect dapat memberikan izin kepada akun terhubung untuk memproses pengembalian dana langsung kepada pelanggan dengan menggunakan komponen embedded Connect, seperti [pembayaran](https://docs.stripe.com/connect/supported-embedded-components/payments.md) atau komponen [rincian pembayaran](https://docs.stripe.com/connect/supported-embedded-components/rincian-pembayaran.md). ## Tujuan pengembalian dana Pengembalian dana hanya dapat dikirim kembali ke metode pembayaran asli yang digunakan dalam charge. Anda tidak dapat mengirim pengembalian dana ke tujuan lain, seperti kartu atau rekening bank lain. Pengembalian dana ke kartu yang kedaluwarsa atau dibatalkan akan ditangani oleh penerbit kartu pelanggan dan, dalam banyak kasus, dikreditkan ke kartu pengganti pelanggan. Jika tidak ada pengganti, penerbit kartu biasanya mengirimkan pengembalian dana kepada pelanggan menggunakan metode alternatif (misalnya, cek atau setoran rekening bank). Dalam kasus yang jarang terjadi, pengembalian dana ke kartu mungkin [gagal](https://docs.stripe.com/refunds.md#failed-refunds). Untuk metode pembayaran lainnya, seperti [ACH](https://docs.stripe.com/payments/ach-direct-debit.md) dan [iDEAL](https://docs.stripe.com/payments/ideal.md), penanganan pengembalian dana bervariasi dari satu bank ke bank lainnya. Jika pelanggan telah menutup metode pembayarannya, bank dapat mengembalikan pengembalian dana kepada kami—yang ditandai sebagai [gagal](https://docs.stripe.com/refunds.md#failed-refunds). ## Tangani pengembalian dana yang gagal Pengembalian dana dapat gagal jika bank atau penerbit kartu nasabah tidak dapat memprosesnya. Misalnya, rekening bank yang ditutup atau masalah dengan kartu dapat menyebabkan pengembalian dana gagal. Jika hal ini terjadi, bank akan mengembalikan dana yang dikembalikan kepada kami dan kami akan menambahkannya kembali ke saldo akun Stripe Anda. Proses ini dapat memakan waktu hingga 30 hari sejak tanggal pengiriman. Ketika menggunakan API, status objek [Pengembalian dana](https://docs.stripe.com/api.md#refund_object) beralih ke `failed` dan menyertakan atribut berikut: - `failure_balance_transaction`: Identifikasi [transaksi saldo](https://docs.stripe.com/api.md#balance_transaction_object) yang mewakili jumlah yang dikembalikan ke saldo Stripe Anda. - `failure_reason`: Alasan mengapa pengembalian dana gagal. Alasan-alasan ini meliputi: | Alasan kegagalan | Keterangan | | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `charge_for_pending_refund_disputed` | Seorang pelanggan mempersengketakan charge saat pengembalian dana sedang menunggu. Dalam kasus ini, kami merekomendasikan untuk [menerima atau menghadapi](https://docs.stripe.com/disputes/responding.md#decide) sengketa, bukan mengembalikan dana guna menghindari penggantian dana ganda kepada pelanggan. | | `declined` | Pengembalian dana ditolak oleh mitra keuangan kami. | | `expired_or_canceled_card` | Metode Pembayaran dibatalkan oleh pelanggan atau kedaluwarsa oleh mitra. | | `insufficient_funds` | Pengembalian dana menunggu karena tidak cukup dana, dan telah melewati batas waktu pengembalian dana yang menunggu. | | `lost_or_stolen_card` | Pengembalian dana gagal karena kartu asli hilang atau dicuri. | | `merchant_request` | Pengembalian dana gagal atas permintaan bisnis. | | `unknown` | Pengembalian dana gagal karena alasan yang tidak diketahui. | Untuk sejumlah metode pembayaran, kode penolakan yang diberikan oleh mitra finansial kami, yang mengindikasikan alasan pengembalian dana gagal, tersedia di bidang `network_decline_code` dari hash `destination_details`: ``` { id: "pyr_1234", destination_details: { blik: { network_decline_code: "decline_code" }, type: 'blik', } } ``` Dalam kasus yang jarang terjadi bahwa pengembalian dana gagal, kami memberi tahu Anda menggunakan *kejadian* (A tool to send events to your application via webhook or directly to your cloud infrastructure) `refund.failed` (lihat [semua kejadian terkait pengembalian dana](https://docs.stripe.com/refunds.md#refund-events)). Jika ini terjadi, Anda perlu mengatur cara alternatif untuk memberikan pengembalian dana kepada pelanggan. Jika platform Anda menggunakan [Connect with destination charges](https://docs.stripe.com/connect/destination-charges.md#issue-refunds), dana dari penyimpanan pengembalian dana yang gagal ke saldo Stripe akun platform Anda. ## Batalkan pengembalian dana Tergantung pada jenis pengembalian dana, Anda mungkin dapat membatalkan pengembalian dana sebelum sampai ke pelanggan. Beberapa pengembalian dana kartu mendukung pembatalan dalam waktu singkat. Pengembalian dana tidak boleh diproses sebagai pembalikan charge. Saat ini hanya pembatalan Dashboard yang didukung untuk pengembalian dana kartu. Untuk beberapa [metode pembayaran](https://docs.stripe.com/payments/bank-transfers.md#refunds), Stripe akan menghubungi pelanggan untuk mengumpulkan informasi perbankan sebelum memproses pengembalian dana. Anda dapat membatalkan pengembalian dana ini saat informasi perbankan belum dikumpulkan. Pembatalan API dan pembatalan Dashboard didukung untuk jenis pengembalian dana ini. Transisi pengembalian dana yang dibatalkan ke `dibatalkan` status. Karena pembatalan adalah jenis kegagalan pengembalian dana, atribut `failure_reason` dan `failure_balance_transaction` disertakan pada [Pengembalian dana](https://docs.stripe.com/api.md#refund_object). Jika platform Anda menggunakan [Terhubung dengan biaya tujuan](https://docs.stripe.com/connect/destination-charges.md#issue-refunds), dana dari setoran pengembalian dana yang dibatalkan ke saldo Stripe akun platform Anda. To cancel a refund using the Dashboard: 1. Find the payment associated with the refund in the [Payments](https://dashboard.stripe.com/payments) page. 1. Click the overflow menu (⋯) to the right of the payment, then select **Cancel refund**. 1. If there are multiple partial refunds, select the correct refund in the dropdown. 1. Confirm the refund cancellation by selecting **Yes, cancel refund**. Alternatively, you can click a specific payment and cancel the refund from its details page. ## Pengembalian dana dan pembalikan Beberapa pengembalian dana—yang diterbitkan segera setelah charge asal—muncul dalam bentuk *pembalikan* (A reversal is the cancellation of a transaction. Stripe doesn't withhold any fees for payment reversals) bukan berupa pengembalian dana. Dalam kasus pembalikan, charge asal dikeluarkan dari rekening koran pelanggan, dan kredit terpisah tidak diterbitkan. Pengguna *IC+* (A pricing plan where businesses pay the variable network cost for each transaction plus the Stripe fee rather than a flat rate for all transactions. This pricing model provides more visibility into payments costs) mungkin melihat perbedaan biaya antara pembalikan dan pengembalian dana karena pembalikan biasanya dikenakan biaya jaringan yang lebih rendah. #### Dashboard Untuk memverifikasi apakah pengembalian dana meliputi pembalikan di Dashboard: 1. Buka halaman detail pembayaran dari pembayaran terkait pengembalian dana. 1. Di Lini masa, klik **Lihat Detail** pada entri pengembalian dana. 1. Jika berupa pembalikan, pesan yang sesuai akan ditampilkan. #### API Untuk memverifikasi apakah pengembalian dana meliputi pembalikan menggunakan API: 1. Gunakan [kejadian](https://docs.stripe.com/refunds.md#refund-events) `refund.updated` atau [ambil pengembalian dana](https://docs.stripe.com/api/refunds/retrieve.md) dengan API. 1. Jika berupa pembalikan, ini akan mengembalikan `destination_details[card][type] = 'reversal'`. ## Lacak pengembalian dana Setelah Anda memprakarsai pengembalian dana, Stripe menyerahkan permintaan pengembalian dana ke bank atau penerbit kartu pelanggan. Pelanggan Anda melihat pengembalian dana sebagai kredit sekitar 5–10 hari kerja kemudian, tergantung banknya. Pelanggan dapat menghubungi Anda jika mereka tidak melihat pengembalian dana. Pengembalian dana mungkin tidak terlihat oleh pelanggan karena beberapa alasan: - Beberapa pengembalian dana yang diterbitkan segera setelah charge asal akan muncul dalam bentuk pembalikan, bukan berupa pengembalian dana. Dalam kasus pembalikan, charge asal dikeluarkan dari rekening koran pelanggan, dan kredit terpisah tidak diterbitkan. - Pengembalian dana bisa gagal jika bank pelanggan atau penerbit kartu tidak dapat memprosesnya dengan benar. Bank akan mengembalikan jumlah dana yang dikembalikan kepada kami dan kami akan menambahkannya kembali ke saldo akun Stripe Anda. Proses ini dapat memakan waktu hingga 30 hari sejak permintaan pengembalian dana. Jika pelanggan menanyakan pengembalian dana, akan sangat membantu jika memberi mereka nomor referensi utama yang sesuai dengan pengembalian dana. Untuk pengembalian dana kartu, ini dapat berupa **Nomor Referensi Pengakuisisi (ARN)**, **Nomor Audit Pelacakan Sistem (STAN)**, atau **Nomor Referensi Pengambilan (RRN)**. ARN, STAN, atau RRN adalah nomor referensi yang ditetapkan ke transaksi kartu seiring pergerakannya melalui alur pembayaran. Untuk pengembalian dana metode pembayaran lokal, ini dapat berupa nomor referensi yang dihasilkan oleh Stripe atau mitra finansial kami yang diterapkan secara luas ke lembaga atau bank penerima manfaat. Pelanggan Anda kemudian dapat membawa referensi ini ke bank mereka, yang dapat memberikan informasi selengkapnya tentang kapan pengembalian dana tersedia. Memiliki nomor referensi juga dapat meningkatkan kepercayaan pelanggan Anda bahwa pengembalian dana telah diprakarsai. Referensi pengembalian dana tersedia dengan syarat-syarat berikut: - Fitur ini didukung untuk sejumlah mitra finansial, dan ditandai sebagai tidak tersedia jika sebaliknya. - Diperlukan waktu hingga 7 hari kerja setelah memprakarsai pengembalian dana untuk menerima ARN dari mitra perbankan hilir. - ARN tidak tersedia dalam kasus pembalikan, karena charge asal tidak diproses. Untuk jaringan kartu yang tidak mendukung ARNs, kami mencoba menyediakan referensi lain seperti Nomor Audit Pelacakan Sistem (STAN) atau Nomor Referensi Pengambilan (RRN). #### Dashboard Untuk menemukan referensi pengembalian dana menggunakan Dashboard: 1. Buka halaman detail pembayaran dari pembayaran terkait pengembalian dana. 1. Di Lini masa, klik **Lihat Detail** pada entri pengembalian dana. 1. Apabila tersedia, Stripe akan menunjukkan ARN atau STAN di clipboard. #### API Untuk menemukan referensi pengembalian dana menggunakan API: 1. Gunakan [kejadian](https://docs.stripe.com/refunds.md#refund-events) `refund.updated` atau [ambil pengembalian dana](https://docs.stripe.com/api/refunds/retrieve.md) dengan API. 1. Jika tersedia, Stripe menampilkan referensi pengembalian dana kartu dalam format respons API berikut: ``` { id: "re_1234", destination_details: { card: { reference: "123456", reference_status: "available", reference_type: "acquirer_reference_number", type: "refund" }, type: "card", } } ``` Atau referensi untuk metode pembayaran lokal yang dipilih dalam format respons API berikut: ``` { id: "pyr_1234", destination_details: { eu_bank_transfer: { reference: "123456", reference_status: "available" }, type: "eu_bank_transfer", } } ``` ## Batalkan pembayaran Anda dapat membatalkan pembayaran menggunakan Dashboard hanya bila statusnya `uncaptured`. Untuk membatalkan pembayaran dengan status lain, Anda harus menggunakan API. #### Dashboard Untuk membatalkan pembayaran yang tidak ditangkap menggunakan Dashboard: 1. Temukan pembayaran yang ingin Anda batalkan di halaman [Pembayaran](https://dashboard.stripe.com/payments). 1. Click the payment, then select **Cancel**. 1. Select a reason for canceling, then click **Yes**. If you select **Other**, you must add a note that explains the reason for canceling the payment. #### API Jika Anda tidak lagi berniat untuk menagih pembayaran, Anda dapat [membatalkan PaymentIntent](https://docs.stripe.com/api/payment_intents/cancel.md). Anda dapat menyimpan PaymentIntent dalam status yang tidak lengkap, seperti `requires_confirmation` atau `requires_payment_method`, karena PaymentIntents yang tidak lengkap dapat berguna dalam memahami rasio konversi saat checkout. Sampel kode berikut menunjukkan permintaan pembatalan PaymentIntent. ```curl curl -X POST https://api.stripe.com/v1/payment_intents/pi_32AkjQ5H4Bas2eAolX13/cancel \ -u "<>:" ``` Anda hanya dapat membatalkan PaymentIntent bila memiliki salah satu status berikut: - `requires_payment_method` - `requires_capture` - `requires_confirmation` - `requires_action` - `processing` (hanya jika metode pembayaran terkait adalah Rekening Bank AS) PaymentIntent tidak dapat dibatalkan setelah berhasil. Bila PaymentIntent dibatalkan, Anda tidak dapat lagi menggunakannya untuk melakukan charge tambahan. Operasi apa pun yang coba dilakukan aplikasi Anda pada PaymentIntent yang dibatalkan gagal dengan kesalahan. ## Kejadian pengembalian dana Stripe memicu [kejadian](https://docs.stripe.com/api/events.md#events) setiap kali pengembalian dana dibuat atau diubah. Sejumlah tindakan lainnya, seperti penutupan tinjauan, juga memicu kejadian yang relevan dengan pengembalian dana. Pastikan integrasi Anda disiapkan untuk [menangani peristiwa](https://docs.stripe.com/webhooks/handling-payment-events.md) dan bahwa Anda [verifikasi tanda tangan webhook](https://docs.stripe.com/webhooks.md#verify-events) untuk mengonfirmasi bahwa acara masuk berasal dari Stripe. Anda juga harus membuat logika internal untuk memberi tahu pelanggan atau tim Anda tentang status proses pengembalian dana. Minimal, Stripe menyarankan Anda mendengarkan `pengembalian dana.dibuat` peristiwa. Tabel berikut ini menerangkan kejadian paling umum terkait pengembalian dana. | Kejadian | Keterangan | | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `refund.created` | Dikirim bila pengembalian dana dibuat. | | `refund.updated` | Dikirim saat pengembalian dana diperbarui. Pembaruan termasuk menambahkan metadata dan menyediakan detail seperti [ARN sebagai nomor referensi untuk melacak pengembalian dana](https://docs.stripe.com/refunds.md#tracing-refunds). | | `refund.failed` | Dikirim saat [pengembalian dana telah gagal](https://docs.stripe.com/refunds.md#failed-refunds). | | `charge.dispute.funds_reinstated` | Dikirim bila dana dikembalikan ke akun Anda setelah sengketa ditutup, termasuk [pembayaran yang dananya dikembalikan sebagian](https://docs.stripe.com/disputes/best-practices.md#partial-refund-bp). | | `charge.refunded` | Dikirim bila dana charge dikembalikan, termasuk pengembalian dana sebagian. Dengarkan `refund.created` untuk informasi tentang pengembalian dana. | | `review.closed` | Dikirim ketika [review](https://docs.stripe.com/api/events/types.md#review_object) ditutup. Lihat kolom `reason` untuk memahami alasan penutupan, apakah: `approved`, `disputed`, `canceled`, `refunded`, atau `refunded_as_fraud`. | | `source.refund_attributes_required` (Deprecated) | Dikirim bila sumber penerima memerlukan atribut pengembalian dana untuk memproses pengembalian dana atau kesalahan pembayaran. | | `charge.refund.updated` (Deprecated) | Dikirim bila pengembalian dana diperbarui, hanya untuk pengembalian dana dengan charge yang sesuai. Dengarkan `refund.updated` untuk pembaruan pada semua pengembalian dana sebagai gantinya. | ## Optimalisasi biaya Jika bisnis Anda memproses sejumlah besar pengembalian dana hampir pada saat transaksi, kami merekomendasikan penggunaan [otorisasi dan penarikan manual](https://docs.stripe.com/payments/place-a-hold-on-a-payment-method.md) untuk mengurangi biaya pengembalian dana. Otorisasi dan penarikan manual memungkinkan Anda mengontrol biaya secara lebih baik dengan membatalkan pembayaran sebelum penarikan, atau dengan mengurangi jumlah yang ditarik, bukan memproses pengembalian dana. ## See also - [Tambahkan dana ke saldo Stripe Anda](https://docs.stripe.com/get-started/account/add-funds.md) - [Tambahkan dana ke saldo platform Anda](https://docs.stripe.com/connect/top-ups.md) - [Lokalkan harga](https://docs.stripe.com/payments/currencies/localize-prices.md)