Bank transfer with Stripe's virtual IBAN
Many business customers prefer to pay by bank transfer rather than by card. Stripe offers bank transfer as a payment method on invoices. For your customer's accounts payable team to transfer correctly, the bank details must also be in the e-invoice, and they must be Stripe's, not your own.
How Stripe's bank transfer works
When you allow bank transfer on an invoice, Stripe gives your customer a virtual bank account: an IBAN that belongs to that customer only and stays the same on all of their invoices. Stripe prints it on the invoice PDF and shows it on the payment page. Bank transfer is only available on invoices with payment terms (collection method "send invoice", see payment terms).
When money arrives on this IBAN, Stripe matches it to open invoices itself:
- first by the reference: if it contains the number of exactly one open invoice, that invoice is paid;
- otherwise by amount: Stripe looks for a group of open invoices adding up to exactly the amount received;
- otherwise Stripe pays as many invoices in full as it can, oldest first.
Stripe only matches partial payments if you allow it in the invoice settings and the customer gives the invoice number. So ask your customers to use only the invoice number as the reference.
Why not your own IBAN
If your customer transfers to your business account, Stripe never learns about it: the invoice stays open in Stripe, reminders keep going out, and you have to mark it paid by hand. And if the e-invoice names a different IBAN than Stripe's PDF, your customer has two contradicting statements about the same invoice.
What BelegDock writes into the XRechnung
When an invoice is open, in euros and offers Stripe's bank transfer, BelegDock fetches this customer's transfer details from Stripe, for the same country Stripe shows on the invoice. So the XRechnung names the same IBAN as Stripe's PDF:
| XRechnung | Content |
|---|---|
| Payment means (BT-81) | 58, SEPA credit transfer |
| IBAN (BT-84) | the customer's virtual IBAN at Stripe |
| Account name (BT-85), BIC (BT-86) | as Stripe provides them |
| Remittance information (BT-83) | the Stripe invoice number |
The email to your customer shows the same details in a "pay by bank transfer" box, as long as something is still due. Paid invoices and credit notes carry no bank details.
If Stripe returns no valid account details, for example placeholders in test mode or because the permission is missing, the XRechnung contains no bank details but a note that payment runs through Stripe. BelegDock never substitutes another IBAN.
The permission behind it
Stripe files fetching transfer details (POST /v1/customers/{id}/funding_instructions) under the write permission for customers. That is why the BelegDock app asks for it in Stripe. BelegDock uses it only for this request. If the customer has no virtual bank account yet, Stripe may create one at that moment. BelegDock does not change customers, invoices or payments.
How to set it up
- Turn on bank transfer as a payment method for invoices in Stripe.
- For the customers or subscriptions concerned, choose the collection method "send invoice" and allow bank transfer as a payment method on the invoice.
- In the invoice settings, decide whether Stripe should automatically settle partial payments and small underpayments.
- Finalize an invoice and check the XML file in BelegDock: the IBAN must match the one on Stripe's PDF.
Sources
- Bank transfer on invoices, funding instructions and reconciliation of incoming transfers (Stripe)
- Collection methods (Stripe)
- XRechnung (KoSIT, German)
This page is a summary, not tax or legal advice.
Set up your invoice emails.
Create your free account, connect Stripe and design your template. The first 10 real documents each month are free.
