Lewati ke konten
Buat akun atau Masuk
Logo Dokumen Stripe
/
Tanya AI
Buat akunMasuk
Mulai
Pembayaran
Pendapatan
Platform dan situs belanja online
Manajemen uang
Sumber daya pengembang
API & SDKBantuan
Gambaran UmumTerima pembayaranUpgrade integrasi Anda
Pembayaran online
Gambaran umumTemukan contoh penggunaan Anda
Gunakan Payment Links
Gunakan halaman checkout bawaan
Buat integrasi kustom dengan Elements
Bangun integrasi dalam aplikasi
Gunakan Managed PaymentsPembayaran rutin
Pembayaran di tempat
Terminal
Metode Pembayaran
Tambahkan metode pembayaran
    Gambaran umum
    Opsi integrasi metode pembayaran
    Kelola metode pembayaran default di Dashboard
    Tipe metode pembayaran
    Kartu
    Bayar dengan saldo Stripe
    Pembayaran stablecoin
    Debit bank
      ACH Direct Debit
        Terima pembayaran
        Simpan detail bank
        Memigrasikan ACH Direct Debit dari Biaya ke API yang lebih baru
        Migrasikan dari pemroses lain
        Rekening bank yang diblokir
        Kode SEC
      Debit Langsung Bacs
      Debit praotorisasi di Kanada
      Debit Langsung BECS Australia
      Debit Langsung BECS Selandia Baru
      Debit Langsung SEPA
    Halaman pembayaran bank
    Transfer bank
    Transfer kredit (Sumber)
    Beli sekarang, bayar nanti
    Pembayaran real-time
    Voucher
    Dompet
    Aktifkan metode pembayaran lokal menurut negara
    Metode pembayaran custom
Kelola metode pembayaran
Checkout lebih cepat dengan Link
Operasi pembayaran
Analitik
Saldo dan waktu pelunasan
Kepatuhan dan keamanan
Mata uang
Penolakan
Sengketa
Pencegahan penipuan
Perlindungan penipuan Radar
Payout
ResiPengembalian dana dan pembatalan
Integrasi lanjutan
Alur pembayaran custom
Akuisisi fleksibel
Pembayaran di Luar Sesi
Orkestrasi multi-pemroses
Di luar pembayaran
Dirikan perusahaan Anda
Kripto
Perdagangan agen
Financial Connections
Climate
Verifikasikan identitas
Amerika Serikat
Bahasa Indonesia
BerandaPembayaranAdd payment methodsBank debitsACH Direct Debit

Save details for future payments with ACH Direct Debit

Learn how to save payment method details for future ACH Direct Debit payments.

You can use Checkout in setup mode to collect payment method details in advance, with the final amount or payment date determined later. This is useful for:

  • Saving payment methods to a wallet to streamline future purchases
  • Collecting surcharges after fulfilling a service
  • Starting a free trial for a subscription

Catatan

ACH Direct Debit is a delayed notification payment method, which means that funds aren’t immediately available after payment. A payment typically takes 4 business days to arrive in your account.

Sebelum Anda memulai

This guide shows you how to extend the foundational set up future payments Checkout integration to add support for ACH Direct Debit payments.

Create or retrieve a customer
RecommendedServer-side

Bandingkan referensi Pelanggan v1 dan Akun v2

Jika platform Connect Anda menggunakan Akun yang dikonfigurasi pelanggan, gunakan panduan kami untuk mengganti referensi Customer dan kejadian dalam kode Anda dengan referensi Accounts v2 API yang setara.

Create a Customer object when your user creates an account with your business, or retrieve an existing Customer associated with this user. Associating the ID of the Customer object with your own internal representation of a customer enables you to retrieve and use the stored payment method details later. Include an email address on the Customer to enable Financial Connections’ return user optimization.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d email={{CUSTOMER_EMAIL}}

Enable ACH Direct Debit as a payment method

When creating a new Checkout Session, you need to:

  1. Add us_bank_account to the list of payment_method_types.
  2. Set the permissions parameter to include payment_method.
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
"{{CUSTOMER_ID}}"
\ -d mode=setup \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_types[]"=card \ -d "payment_method_types[]"=us_bank_account \ --data-urlencode success_url="https://example.com/success"

For more information on Financial Connections fees, see pricing details.

By default, collecting bank account payment information uses Financial Connections to instantly verify your customer’s account, with a fallback option of manual account number entry and microdeposit verification. See the Financial Connections docs to learn how to configure Financial Connections and access additional account data to optimize your ACH integration. For example, you can use Financial Connections to check an account’s balance before initiating the ACH payment.

Catatan

To expand access to additional data after a customer authenticates their account, they must re-link their account with expanded permissions.

During the Checkout session, the customer sees a dialog that gives them the option to use instant verification or provide bank account details for microdeposit verification.

If the customer opts for microdeposit verification, Stripe automatically sends two small deposits to the provided bank account. These deposits can take 1-2 business days to appear on the customer’s online bank statement. When the deposits arrive, the customer receives an email with a link to confirm these amounts and verify the bank account with Stripe. After verification completes, the payment begins processing.

Coba integrasi Anda

Pelajari cara mencoba skenario dengan verifikasi instan menggunakan Financial Connections.

Kirim email transaksi di sandbox

Setelah Anda mengumpulkan detail rekening bank serta menerima mandat, kirim email konfirmasi mandat dan verifikasi deposit mikro di sandbox.

Jika domain Anda {domain} dan nama pengguna Anda {username}, gunakan format email berikut untuk mengirim email transaksi percobaan: {username}+test_email@{domain}.

Misalnya, jika domain Anda adalah example.com dengan nama pengguna info, gunakan format info+test_email@example.com untuk mencoba pembayaran ACH Direct Debit. Format ini memastikan bahwa email dirutekan dengan benar. Jika Anda tidak menyertakan akhiran +test_email, kami tidak akan mengirimkan email.

Kesalahan umum

Anda perlu mengaktifkan akun Stripe sebelum Anda dapat memicu email ini saat melakukan percobaan.

Nomor rekening percobaan

Stripe menyediakan beberapa nomor akun percobaan dan token terkait yang dapat Anda gunakan untuk memastikan integrasi Anda untuk rekening bank yang dimasukkan secara manual siap untuk produksi.

Nomor akunTokenNomor peruteanPerilaku
000123456789pm_usBankAccount_success110000000Pembayaran berhasil.
000111111113pm_usBankAccount_accountClosed110000000Pembayaran gagal karena rekening ditutup.
000000004954pm_usBankAccount_riskLevelHighest110000000Pembayaran diblokir oleh Radar karena risiko penipuan tinggi.
000111111116pm_usBankAccount_noAccount110000000Pembayaran gagal karena tidak ada rekening yang ditemukan.
000222222227pm_usBankAccount_insufficientFunds110000000Pembayaran gagal karena dana tidak mencukupi.
000333333335pm_usBankAccount_debitNotAuthorized110000000Pembayaran gagal karena debit tidak diotorisasi.
000444444440pm_usBankAccount_invalidCurrency110000000Pembayaran gagal karena mata uang tidak valid.
000666666661pm_usBankAccount_failMicrodeposits110000000Pembayaran gagal mengirim deposit mikro.
000555555559pm_usBankAccount_dispute110000000Pembayaran memicu sengketa.
000000000009pm_usBankAccount_processing110000000Pembayaran akan tetap berada dalam status pemrosesan tanpa batas waktu. Berguna untuk menguji Kedaluwarsa Sesi CheckoutPembatalan PaymentIntent.
000777777771pm_usBankAccount_weeklyLimitExceeded110000000Pembayaran gagal karena jumlah pembayaran menyebabkan akun melebihi batas volume pembayaran mingguannya.
000888888885110000000Pembayaran gagal karena nomor akun token yang dinonaktifkan.

Sebelum transaksi percobaan dapat diselesaikan, Anda perlu memverifikasi semua akun percobaan yang secara otomatis berhasil atau gagal pembayaran. Untuk melakukannya, gunakan jumlah deposit mikro percobaan atau kode deskriptor di bawah ini.

Uji jumlah deposit mikro dan kode deskriptor

Untuk meniru skenario yang berbeda, gunakan jumlah deposit mikro ini atau 0,01 nilai kode deskriptor.

Nilai deposit mikroNilai kode deskriptor 0,01Skenario
32 dan 45SM11AAMensimulasikan verifikasi akun.
10 dan 11SM33CCMensimulasikan melebihi jumlah upaya verifikasi yang diizinkan.
40 dan 41SM44DDMensimulasikan batas waktu deposit mikro.

Perilaku penyelesaian percobaan

Transaksi percobaan diselesaikan secara instan dan ditambahkan ke saldo percobaan Anda yang tersedia. Perilaku ini berbeda dengan mode live, di mana transaksi dapat memakan waktu beberapa hari untuk diselesaikan di saldo yang tersedia.

Gunakan metode pembayaran

After completing the Checkout Session, you can collect the PaymentMethod ID. You can use these PaymentMethod IDs to initiate future payments without having to prompt the customer for their bank account a second time.

When creating a PaymentIntent, provide the payment_method and customer IDs to charge your customer using their saved bank account information.

OpsionalInstant only verification

By default, ACH Direct Debit payments allow your customers to use instant bank account verification or microdeposits. You can optionally require instant bank account verification only, using the payment_method_options[us_bank_account][verification_method] parameter when you create the Checkout session.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d mode=setup \ -d customer={{CUSTOMER_ID}} \ -d "payment_method_types[]"=card \ -d "payment_method_types[]"=us_bank_account \ -d "payment_method_options[us_bank_account][verification_method]"=instant \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=payment_method \ -d "payment_method_options[us_bank_account][financial_connections][permissions][]"=balances \ --data-urlencode success_url="https://example.com/success"

OpsionalAccess data on a Financial Connections bank account

You can only access Financial Connections data if you request additional data permissions when you create your SetupIntent.

After your customer successfully completes the Stripe Financial Connections authentication flow, the us_bank_account PaymentMethod returned includes a financial_connections_account ID that points to a Financial Connections Account. Use this ID to access account data.

Kesalahan umum

Bank accounts that your customers link through manual entry and microdeposits don’t have a financial_connections_account ID on the Payment Method.

To determine the Financial Connections account ID, retrieve the SetupIntent and expand the payment_method attribute:

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
curl -G https://api.stripe.com/v1/setup_intents/
{{SETUP_INTENT_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "expand[]"=payment_method
{ "id": "{{SETUP_INTENT_ID}}", "object": "setup_intent", // ... "payment_method": { "id": "{{PAYMENT_METHOD_ID}}", // ... "type": "us_bank_account" "us_bank_account": { "account_holder_type": "individual", "account_type": "checking", "bank_name": "TEST BANK", "financial_connections_account": "{{FINANCIAL_CONNECTIONS_ACCOUNT_ID}}", "fingerprint": "q9qchffggRjlX2tb", "last4": "6789", "routing_number": "110000000" } } // ... }

If you have access to balances data, we recommend checking balances before initiating payments with the collected Payment Method.

Learn more about using additional account data to optimize your ACH integration with Financial Connections.

OpsionalUpdating the default payment method

After the SetupIntent reaches the succeeded state, you can update your customer’s default_payment_method.

server.rb
Ruby
Python
PHP
Java
Node.js
Go
.NET
No results
# Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys Stripe.api_key =
'sk_test_BQokikJOvBiI2HlWgH4olfQ2'
if event.type == 'setup_intent.succeeded' setup_intent = event.data.object customer_id = setup_intent['customer'] payment_method_id = setup_intent['payment_method'] # Set the default payment method Stripe::Customer.update( customer_id, { invoice_settings: { default_payment_method: payment_method_id } } ) end
Apakah halaman ini membantu?
YaTidak
  • Butuh bantuan? Hubungi Tim CS.
  • Lihat log perubahan kami.
  • Ada pertanyaan? Hubungi Bagian Penjualan.
  • LLM? Baca llms.txt.
  • Dijalankan oleh Markdoc