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.
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_
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.