Skip to content
Create account
or
Sign in
The Stripe Docs logo
/
Ask AI
Create account
Sign in
Get started
Payments
Revenue
Platforms and marketplaces
Money management
Developer resources
Overview
Billing
OverviewAbout the Billing APIs
Subscriptions
Invoicing
    Overview
    How Invoicing works
    API quickstart
    Integrate with the API
    Invoicing without code
    Invoice lifecycle
    Preview invoices
    Edit invoices
    Schedule invoice finalization
    Status transitions and finalization
    Send customer emails
    Generate credit notes
    Invoice customers
    Customers
    Customer credit balance
    Customer tax IDs
    Invoice payments
    Hosted Invoice Page
    Create invoice payment plans
    Accept partial payments
    Payment methods for invoices
      ACH Direct Debit
      Bank transfer
    Automated collections
    Invoice customization
    Customize invoices
    Invoice rendering templates
    Group invoice line items
    Summarize line items
    Global invoicing
    Best practices
    Multi-currency customers
    Other invoicing features
    Products and prices
    Manage bulk invoice line items
    Taxes
Usage-based billing
Quotes
Customer management
Billing with other products
Revenue recovery
Automations
Test your integration
Tax
Overview
Use Stripe tax
Manage compliance
Reporting
Overview
Select a report
Configure reports
Reports API
Reports for multiple accounts
Revenue recognition
Data
OverviewSchema
Custom reports
Data Pipeline
Data management
HomeRevenueInvoicingPayment methods for invoices

Bank transfer

Accept bank transfer payments on your invoices.

You can offer your customers the ability to pay your invoices with bank transfers, such as ACH in the US, or Bacs in the UK. Stripe creates a unique virtual bank account number and displays it on the invoice PDF and the Hosted Invoice Page, so your customers know where to send the funds.

Stripe automatically reconciles these bank transfers to the correct invoices when they’re received. If we can’t automatically reconcile a transfer, it remains in the customer balance until you manually reconcile it.

This method allows you to accept bank transfers without exposing your own bank details.

Receive a bank transfer

You can enable bank transfer as a supported payment method through the Dashboard or API.

To enable bank transfers as a default payment method for USD invoices:

  1. In the Stripe Dashboard, go to Settings > Billing > Invoices.
  2. Under Default payment methods, select Edit payment methods.
  3. On the next page, click Turn on for Bank transfer.
  4. After the bank transfer payment method shows an active status, bank transfer payments display by default for any new invoice you create.

Regional considerations

For all other currencies, you can’t enable bank transfers as a default payment method. However, you can add it as a payment method on individual invoices.

Automatic transfer reconciliation

When receiving an inbound transfer, Stripe uses the transfer’s reference code, amount, and date to determine the invoices for reconciliation.

Reference codes

​​Transfers commonly include a memo, such as:

  • INVOICE-0011
  • Payment for INVOICE-0001
  • This is for 001. I’ll send the check for 002 next week.

If the memo contains an invoice number, Stripe first attempts to reconcile the transfer to the referenced invoice.

Stripe can only reconcile inbound bank transfers to open or past due invoices that are less than 30 days overdue.

Exact amount

After considering reference codes, Stripe looks for the oldest open invoice where the amount precisely matches the amount transferred. If we find one, we reconcile the transfer to the invoice.

Multiple invoices

If any balance remains, it’s possible that your customer tried to pay multiple invoices with one transfer. Stripe looks for a group of invoices (five or fewer) where the payment received matches the total expected. If there are multiple possible combinations, Stripe selects the smallest combination. If there are multiple options for the smallest combination, Stripe selects the combination that contains the oldest invoice.

Oldest payable invoice

If more balance remains, it’s possible that your customer tried to pay multiple invoices with one transfer, or transferred extra funds. Stripe progressively pays open invoices by date (finalized until the balance runs out) or until no invoices remain to pay.

Reconciliation failures

When funds transferred to Stripe aren’t reconciled to any open PaymentIntents or invoices, the funds are placed in the customer balance and Stripe sends the cash_balance.funds_available webhook.

Manual reconciliation

In certain circumstances, you might want to override the Stripe automatic reconciliation behavior on a per-customer basis.

In manual reconciliation mode, Stripe doesn’t attempt to automatically reconcile any funds received, so you must manually reconcile all payments.

Unreconciled cash balance funds

Funds might remain unreconciled in a customer balance, for example, if a customer sends excess funds and there are no open invoices. If a customer balance is unreconciled for 75 days, Stripe automatically attempts to return the funds to the customer’s bank account.

You can see the full list of customers who have unreconciled cash balances and the attempted return date in your Dashboard.

Confirm account ownership

Your customer might want to verify your bank details before initiating a transfer. If they ask for account ownership verification (or a bank verification letter), you can download a letter confirming account ownership.

Underpayments

Your customer’s payment might be slightly less than the amount required to pay the invoice fully. This can be common with international wire transfers. Instead of handling this and similar situations manually, you can configure an underpayment threshold below which you consider it acceptable to automatically close the invoice and credit the customer the difference.

To configure this setting, go to Settings > Billing > Invoices. Under Adjustments and reconciliation, enable Automatically write-off invoices.

Partial payments

If your customer wants to pay an invoice with multiple payments, you can allow Stripe to automatically reconcile incoming bank transfer payments to open or past due invoices, even if the amount of the transfer doesn’t fully pay an invoice. We only attempt a partial reconciliation if your customer provides an invoice number in the transfer memo.

To configure this setting, go to Settings > Billings > Invoices. Under Adjustments and reconciliation, enable Automatically reconcile partial bank transfer payments.

Payment instructions

For each customer, Stripe generates a unique, virtual bank account number that can accept transfers in the currency of the invoice. The transfer instructions for this virtual bank account are visible to your customer on invoices.

The payment details Stripe creates are:

  • Unique: No customers have the same account number.
  • Consistent: A single customer consistently receives the same funding instructions across multiple invoices.
  • Currency-appropriate: In countries where bank transfers are supported, Stripe generates local bank account information (for example, a UK account for customers in the UK).
  • Customer-localized: Payment instructions shown on invoices respect customer-preferred languages, so you can localize instructions for each customer.

In some countries, Stripe also provides you with a unique transfer reference number for your customer to include with each transfer to help match the transfer against outstanding payments. Some countries have limits on the number of virtual bank account numbers that you can create for free.

​​After a virtual bank account in Stripe receives a transfer, Stripe automatically reconciles the funds to open invoices and creates a payment to pay the invoice.

Refund transfers

You can refund completed payments directly to the customer’s bank account or to the customer balance on Stripe. If you enabled automatic reconciliation and you send funds to the customer balance, Stripe automatically attempts to reconcile the funds to open invoices.

Testing

You can test an inbound transfer of funds in the Dashboard or with the Stripe CLI.

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