Passa al contenuto
Crea account
o
Accedi
Il logo della documentazione Stripe
/
Chiedi all'IA
Crea un account
Accedi
Inizia
Pagamenti
Ricavi
Per piattaforme e marketplace
Gestione del denaro
Risorse per sviluppatori
Panoramica
Informazioni sui pagamenti con Stripe
Eseguire l'upgrade dell'integrazione
Analisi dei dati sui pagamenti
Pagamenti online
PanoramicaTrovare il caso d'uso più adattoManaged Payments
Utilizzare Payment Links
Creare una pagina di pagamento
Creare un'integrazione iniziale
Creare un'integrazione in-app
Metodi di pagamento
Aggiungere modalità di pagamento
    Panoramica
    Opzioni di integrazione delle modalità di pagamento
    Gestire i metodi di pagamento predefiniti nella Dashboard
    Tipi di metodi di pagamento
    Carte
    Pagare con il saldo Stripe
    Criptovaluta
    Addebiti bancari
    Reindirizzamenti bancari
    Trasferimenti bancari
      Accettare un pagamento
      Saldo cliente
      Rimborsi
    Bonifici (Sources)
    Acquista ora, paga dopo
    Pagamenti in tempo reale
    Voucher
    Wallet
    Abilitare metodi di pagamento locali per Paese
    Metodi di pagamento personalizzati
Gestire i metodi di pagamento
Pagare più velocemente con Link
Interfacce di pagamento
Payment Links
Checkout
Elements per il Web
Elements in-app
Scenari di pagamento
Gestire più valute
Flussi di pagamento personalizzati
Acquisizione flessibile
Orchestrazione
Pagamenti di persona
Terminal
Oltre i pagamenti
Costituire un'azienda
Criptovaluta
Financial Connections
Climate
Informazioni sulle frodi
Protezione contro le frodi di Radar
Gestisci le contestazioni
Verificare l'identità
Pagina inizialePagamentiAdd payment methodsBank transfers

Accept a bank transfer

Use the Payment Intents API to accept bank transfer payments.

The first time you accept a bank transfer payment from a customer, Stripe generates a virtual bank account for them, which you can then share with them directly. All future bank transfer payments from this customer get sent to this bank account. In some countries, Stripe also provides you with a unique transfer reference number that your customer should include with each transfer to make it easier to match the transfer against outstanding payments. Some countries have limits on the number of virtual bank account numbers that you can create for free.

You can find an overview of the common steps when accepting a bank transfer payment in the following sequence diagram:

Handling underpayments and overpayments

With bank transfer payments, it’s possible that the customer sends you more or less than the expected payment amount. If the customer sends too little, Stripe partially funds an open payment intent. Invoices won’t be partially funded and remain open until incoming funds cover the full invoice amount.

If the customer sends more than the expected amount, Stripe attempts to reconcile the incoming funds against an open payment and keep the remaining excess amount in the customer cash balance. You can find more details on how Stripe handles reconciliation in the reconciliation section of our documentation.

When a customer underpays:

When a customer overpays:

Handling multiple open payments or invoices

You might have multiple open payments or invoices which can be paid with a bank transfer. In the default setup, Stripe attempts to automatically reconcile the bank transfer by using information like the transfer’s reference code or the amount transferred.

You can disable automatic reconciliation and manually reconcile payments and invoices yourself. You can override the automatic reconciliation behavior on a per-customer basis by setting reconciliation mode to manual.

Attenzione

Stripe automatically presents your customers payment method options by evaluating their currency, payment method restrictions, and other parameters. We recommend that you configure your payment methods from the Stripe Dashboard using the instructions in Accept a payment.

If you want to continue manually configuring the payment methods you present to your customers with Checkout, use this guide. Otherwise, update your integration to configure payment methods in the Dashboard.

Bank transfer is a single-use payment method for Checkout where customers pay with a bank transfer using payment instructions presented. When selecting to pay, the user is redirected to a hosted page which displays bank transfer instructions and the status of the transfer payment.

Bank transfer is also a delayed notification payment method, which means that funds are not immediately available after payment.

Attenzione

Bank transfers aren’t available on Checkout Sessions that didn’t include an existing Customer object as part of the of the session creation request.

Determine compatibility

Supported business locations: Europe (SEPA area), UK, JP, MX, US

Supported currencies: eur, gbp, jpy, mxn, usd

Presentment currencies: eur, gbp, jpy, mxn, usd

Payment mode: Yes

Setup mode: No

Subscription mode: No

A Checkout Session must satisfy all of the following conditions to support Bank Transfer payments:

  • Prices for all line items must be in the same currency. If you have line items in different currencies, create separate Checkout Sessions for each currency.

  • You can only use one-time line items (Bank Transfer Checkout Sessions don’t support recurring subscription plans).

Accept a payment

Nota

Build an integration to accept a payment with Checkout before using this guide.

Use this guide to enable Bank Transfer.

Create or retrieve a Customer

You must associate a Customer object to reconcile each bank transfer payment. If you have an existing Customer object, you can skip this step. Otherwise, create a new Customer object.

Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl -X POST https://api.stripe.com/v1/customers \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

Enable Bank Transfer as a payment method

When creating a new Checkout Session, you need to:

  1. Set customer
  2. Add customer_balance to the list of payment_method_types
  3. Make sure all your line_items use the same currency
Command Line
cURL
Stripe CLI
Ruby
Python
PHP
Java
Node
Go
.NET
No results
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d customer=
{{CUSTOMER_ID}}
\ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d "payment_method_types[0]"=card \ -d "payment_method_types[1]"=customer_balance \ -d "payment_method_options[customer_balance][funding_type]"=bank_transfer \ -d "payment_method_options[customer_balance][bank_transfer][type]"=us_bank_transfer \ --data-urlencode success_url="https://example.com/success" \ --data-urlencode cancel_url="https://example.com/failure"

Redirect to Stripe hosted bank transfer instructions page

Nota

Unlike card payments, the customer isn’t always redirected to the success_url with bank transfer payment.

After submit the Checkout form successfully,

  • If the customer already has a balance high enough to cover the request amount, the payment immediately succeeds and the customer is redirected to the success_url.
  • If the customer balance isn’t high enough to cover the request amount, the customer is redirected to the hosted_instructions_url. The page has the instructions to guide your customer through completing the transfer.

Stripe allows customization of customer-facing UIs on the Branding Settings page. The following brand settings can be applied to the hosted instructions page:

  • Icon—your brand image and public business name
  • Brand color—used as the background color

Fulfill your orders

Because bank transfer is a delayed notification payment method, you need to use a method such as webhooks to monitor the payment status and handle order fulfillment. Learn more about setting up webhooks and fulfilling orders.

The following events are sent when the payment status changes:

Event NameDescriptionNext steps
checkout.session.completedThe customer has successfully submitted the Checkout form and is redirected to hosted_instructions_url.Wait for the customer to make the bank transfer.
checkout.session.async_payment_succeededThe customer has successfully made the bank transfer. The PaymentIntent transitions to succeeded.Fulfill the goods or services that the customer purchased.

FacoltativoSend payment instruction emails

Test your integration

You can test your integration by simulating an incoming bank transfer using the API, Dashboard, or a beta version of the Stripe CLI.

To simulate a bank transfer using the Dashboard in a sandbox, go to the customer’s page in the Dashboard. Under Payment methods, click Add and select Fund cash balance (test only).

Vedi anche

  • Checkout fulfillment
  • Customizing Checkout
Questa pagina è stata utile?
SìNo
  • Hai bisogno di aiuto? Contatta l'assistenza clienti.
  • Partecipa al nostro programma di accesso anticipato.
  • Dai un'occhiata al nostro registro delle modifiche.
  • Domande? Contattaci.
  • LLM? Leggi llms.txt.
  • Realizzato da Markdoc