Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Developer tools
Get started
Payments
Finance automation
Get started
Payments
Finance automation
Platforms and marketplaces
Money management
Overview
About Stripe payments
Upgrade your integration
Payments analytics
Online payments
OverviewFind your use caseManaged Payments
Use Payment Links
Build a checkout page
Build an advanced integration
Build an in-app integration
Payment Methods
Add payment methods
    Overview
    Payment method integration options
    Manage default payment methods in the Dashboard
    Payment method types
    Cards
    Bank debits
    Bank redirects
    Bank transfers
      Accept a payment
      Customer balance
      Refunds
    Credit transfers (Sources)
    Buy now, pay later
    Real-time payments
    Vouchers
    Wallets
    Enable local payment methods by country
    Custom payment methods
Manage payment methods
Faster checkout with Link
Payment interfaces
Payment Links
Checkout
Web Elements
In-app Elements
Payment scenarios
Custom payment flows
Flexible acquiring
Orchestration
In-person payments
Terminal
Other Stripe products
Financial Connections
Crypto
Climate
HomePaymentsAdd payment methods

Bank transfer payments

Learn about bank transfers and managing payments with the customer balance.

Copy page
Available in:

Turn on bank transfers

To turn on bank transfer payments, navigate to your Payment methods settings.

Bank transfers provide a safe way for customers to send money over bank rails. When accepting bank transfers with Stripe, you provide customers with a virtual bank account number that they can push money to from their own online bank interface or in-person bank branch. Stripe uses this virtual account number to automate reconciliation and prevent exposing your real account details to customers.

Bank transfer methods

Stripe supports the following bank transfer methods:

  • JPY bank transfers in Japan
  • GBP bank transfers in the UK
  • EUR bank transfers in the UK, US, and SEPA countries
  • MXN bank transfers in Mexico
  • USD bank transfers in the US, UK, and SEPA countries

Please contact us to request another bank transfer method. Learn more about country and currency support.

Get started

You don’t have to integrate Bank Transfers and other payment methods individually. If you use our front-end products, Stripe automatically determines the most relevant payment methods to display. Go to the Stripe Dashboard and enable Bank Transfers. To get started with one of our hosted UIs, follow a quickstart:

  • Checkout: Our pre-built, hosted checkout page.
  • Elements: Our drop-in UI components.

Other payment products

The following Stripe products also let you add Bank Transfers from the Dashboard:

  • Invoicing
  • Subscriptions

Checkout requirement

Enabling bank transfers on the checkout page requires specifying the customer in the checkout session.

If you prefer to manually list payment methods, or want to learn more about how bank transfers work with invoicing and subscriptions, see the following guides:

  • Accept a bank transfer payment
  • Send an invoice with bank transfer instructions
  • Set up a subscription with bank transfers as a payment method

Customer balance

Unlike most payment methods, bank transfers don’t allow you to control the amount a customer sends to you, which means that customers might send too much or too little money by accident. To manage common overpayment and underpayment issues, Stripe holds your customer’s bank transfers in a customer balance that you can reconcile payments from. This allows you to track how much your customers owe, regardless of how much or how often they send funds. If funds are held in the customer balance for more than 75 days, Stripe automatically attempts to return the funds to the customer’s bank account. For further information on what happens when funds remain unreconciled, see the reconciliation documentation.

International payments

Bank transfers users in the United States can accept international wire transfers (SWIFT). International wire transfers may incur fees on the way to Stripe, which can result in an amount received that’s less than what the customer originally sent. Stripe-incurred fees appear on the balances page in the Dashboard, alongside other relevant Stripe fees. The amount shown in the cash balance is the amount that Stripe received from the customer.

International transfers can take a longer period of time to settle into the customer balance.

Stripe doesn’t support refunds for international wires. You’re responsible for executing any refunds related to these payments.

Note on currencies

The accounts that support international payments only support their own currency. For example, US accounts support SWIFT transfers in USD only.

Cross-border payments

Bank transfers users in the United States can accept EUR payments from customers in SEPA countries.

With cross-border bank transfers, you create payments in the currency local to the customer’s country and the customer gets a virtual bank account number local to their country. You don’t have to have an account setup for the customer’s country to use cross-border bank transfers. Cross-border bank transfers incur additional fees that are visible in the Dashboard.

Offering payments to a local bank account with a customer’s local currency helps reduce the friction and cost involved in sending money abroad.

Implement cross-border payments

To accept cross-border payments, create an additional bank transfers account under the customer with the relevant currency. This generates the relevant funding instructions.

Add a payment method

Add a payment method

Add a bank transfer account

Add a bank transfer account

Refunds

You can refund customer balance payments:

  • Directly to the customer’s bank account
  • Back to the customer’s cash balance, where the refund can be used towards another customer balance payment

To refund to the customer’s bank account, Stripe requires the customer’s bank account details. In some cases, Stripe receives these details when the customer transfers funds. When these details aren’t available, Stripe sends an email to the customer to collect bank account details and initiate a transfer when we receive those details.

If your customer has excess funds in their customer balance, you can initiate a return of funds through the Dashboard or the API. For more information, see Refund bank transfer payments.

Funding instructions

You can show bank account details to your customer before they make their first payment through the Dashboard or the API. See Funding instructions for more details.

Sender information

You can determine the sender details of an incoming bank transfer through either the Dashboard or the API. Those details can include the name of the sender, the reference, and the network through which the transfer arrived.

Access a customer’s cash balance transactions using the Cash Balance Transactions API.

Command Line
cURL
curl https://api.stripe.com/v1/customers/cus_xxxxxxx/cash_balance_transactions/ccsbtxn_xxxx \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"

An incoming transfer transaction’s type attribute has the value funded, and its funded attribute contains details about the sender.

Example response for an incoming transfer transaction

{ "id": "ccsbtxn_1Nkr8vGH59QTMK2f9CIA34L5", "object": "customer_cash_balance_transaction", "created": 1693412481, "currency": "usd", "customer": "cus_OVD6ezUsYGBILH", "ending_balance": 10000, "funded": { "bank_transfer": { "reference": "REF-4242", "type": "us_bank_transfer", "us_bank_transfer": { "network": "ach", "sender_name": "John Doe" } } }, "livemode": false, "net_amount": 12300, "type": "funded" }

If the network attribute is ach, the incoming transfer was completed through an ACH transfer. Likewise, if the network attribute is domestic_wire_us, the incoming transfer was completed through a domestic wire.

Disputes

Bank transfer payments can’t be reversed except for USD and CAD transactions.

USD disputes

USD bank transfers that go through the ACH network in the US can be reversed. After you push a transfer, you can request that your bank reverse it. You must provide the bank with evidence as to why they should reverse the transfer. The remitting bank then sends a reversal to the beneficiary bank. A reversal must be sent no later than 5 days after the payment.

CAD disputes

CAD bank transfers that go through ACH reversals are always initiated by the remitting bank, and the beneficiary bank must honour them.

Connect

Stripe Connect can be used with bank transfers to process payments on behalf of connected accounts. Connect platforms can use bank transfers with any type of charges.

The on_behalf_of attribute isn’t supported.

Accepting bank transfer payments as the connected account

Direct charges require the connected account itself (not the platform) to have activated the bank transfers payment method – Connect platforms can use the relevant bank transfers capability to determine whether this is the case for a connected account. Standard Connect accounts can request the relevant capability from their Stripe Dashboard.

Activation process

The process varies by country, but in general for bank transfer payments, the required information is the same as what’s necessary to activate a Stripe account for payments. If the account doesn’t fulfil all the required information, the capability remains inactive with any issues highlighted on the capability object in the requirements.currently_due and requirements.disabled_reason fields until these issues have been addressed. After all the highlighted issues are resolved, the capability’s status changes to active, unless there are issues activating the account in general, in which case Stripe sends the Connect platform owner an email.

Product support

Payment methodConnectCheckoutPayment LinksPayment ElementExpress Checkout ElementMobile Payment ElementSubscriptionsInvoicingCustomer Portal
Bank transfers1,2

1 Not supported when using Checkout in subscription mode.
2 Not supported when using Checkout in setup mode.

API support

Payment methodAPI enumPaymentIntentsSetupIntentsManual captureSetup future usage1Requires redirect2
Bank transferscustomer_balanceNo

1 Cards and bank debit methods including SEPA debit, AU BECS direct debit, and ACSS debit support both on_session and off_session with setup future usage. All other payment method types either don’t support setup_future_usage or only support off_session.
2 Payment methods might require confirmation with return_url to indicate where Stripe should redirect your customer after they complete the payment.

Unsupported businesses

Stripe can’t accept payments for certain types of businesses. In addition to the Restricted Business list, Stripe doesn’t support bank transfers if your business falls into any of the following categories:

  • Automated Cash Disburse
  • Charity
  • Manual Cash Disburse
  • Membership organization (other)
  • Miscellaneous and Specialty Retail Stores
  • Political organization
  • Religious organization
  • Social, fraternity, sports organization

Unsupported products and features

Bank transfers don’t support Payment Links.

Was this page helpful?
YesNo
Need help? Contact Support.
Join our early access programme.
Check out our changelog.
Questions? Contact Sales.
LLM? Read llms.txt.
Powered by Markdoc