PaymentsBank transfer

Payments

Bank transfer

Show your bank details on every invoice, let clients tell you when they have paid, and record the transfer yourself.

Bank transfer works in every country and every currency. You add your bank details to a business once, and the pay page of every invoice shows them. The client pays from their own bank, clicks I have paid, and can upload a proof. You check your bank, record the payment, and the invoice moves to paid. No payment provider sits in between, so there is nothing to connect and no fee from us.

How it works

Bank transfer is an instruction rail: we show your details, but the money moves outside our system, from your client's bank to yours. Because we cannot see that money arrive, a person on your team confirms it:

  1. The pay page shows your bank details and the amount due.
  2. The client pays by bank transfer.
  3. The client clicks I have paid and may upload a proof, such as a transfer receipt.
  4. You are notified. You check your bank account.
  5. You record the payment with the amount, date and reference. The invoice moves to paid or partially paid, and an audit entry records who confirmed it.

I have paid never marks an invoice paid on its own. A client's claim, even with a proof attached, is only a notice to you. The invoice changes only when you record the payment. This protects you from forged receipts.

What you can enter

Bank details are flexible because banking differs between countries:

Field typeExamples
Structured fieldsIBAN, SWIFT/BIC, and local fields for your country
Free textAnything else your clients need: account name, bank address, a reference to quote, instructions in your own words

These details are not secret: they are shown on pay pages to anyone who has the pay link, just as they would be printed on a paper invoice. Do not put passwords or private notes in them.

Set up bank transfer

1

Open Settings > Payment methods

Choose the business that should receive transfers. Each business has its own bank details.

2

Add bank transfer

Add a bank transfer method and fill in the structured fields and free text. Give it a clear label, for example "EUR account" or "Local bank".

3

Confirm with a fresh sign-in

Adding or changing a payment method asks you to sign in again, because it decides where clients send money.

4

Turn it on

Enable the method and set its position on the pay page. New invoices for this business now show your bank details.

You can add more than one bank transfer method, for example one account per currency. Use per-client or per-invoice accepted methods so each client sees only the account that fits them.

What the client sees

On the pay page, the client sees your bank details as you entered them, with the amount due and the invoice number. Below them is an I have paid button. When they click it they can:

  • enter the amount they paid and the date they paid it,
  • add a short note,
  • upload a proof of payment (PDF, PNG or JPEG).

We then notify the business. The invoice stays unpaid until you record the payment. See Payment proofs for what happens to the proof.

Through the API

Create the bank transfer connection with the rail's connection schema, then enable it as a payment method:

ActionRESTPermission
List rails (see the bank transfer fields)GET /v1/railsrails.manage
Create a connectionPOST /v1/connectionsrails.manage (fresh sign-in)
Update a connectionPATCH /v1/connections/{id}rails.manage
Set payment methodsPUT /v1/businesses/{id}/payment-methodsrails.manage
Record a paymentPOST /v1/paymentspayments.record
Accept a payment proofPOST /v1/payment-proofs/{id}/acceptpayments.record

Because creating a rail connection needs a fresh sign-in, set up bank transfer in the app. Recording payments works with an API key or over MCP:

curl -X POST "https://api.freeinvoiceautomation.com/v1/payments" \
  -H "Authorization: Bearer $FIA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: pay-inv-0042-transfer" \
  -d '{
    "document_id": "0193f2b4-5a6b-7c8d-9e0f-1a2b3c4d5e6f",
    "amount_minor": "120000",
    "currency": "EUR",
    "received_at": "2027-01-18T00:00:00Z",
    "reference": "SEPA 7781-2201"
  }'

Rules and edge cases

  • Any country, any currency. Bank transfer has no currency restriction.
  • Partial transfers. Record exactly what arrived. The invoice shows partially paid until the balance reaches zero.
  • Refunds. Bank transfer cannot send money back for you. If you refund a client, pay them from your bank and record the refund manually. See Refunds.
  • Voided invoices. Voiding cancels the pay link, so the bank details are no longer shown for that invoice.
  • Reminders. From January 2027, reminder sequences stop when the client reports payment with a proof, so they are not chased while you check your bank. See Reminders.

Permissions

KeyNeeded forDefault roles
rails.manageAdding or changing bank detailsOwner, Admin
payments.recordRecording payments, accepting or rejecting proofsOwner, Admin, Editor
payments.viewSeeing payments and proofsOwner, Admin, Editor, Viewer, Accountant

Errors

CodeWhen
fresh_signin_requiredAdding or changing bank details without a recent sign-in
validation_failedA bank field is invalid
rail_capability_missingAsking the rail to refund; record the refund manually instead
document_voidedRecording a payment on a void invoice