Guides

How to pay many suppliers at once

Four methods for paying dozens or hundreds of suppliers in one run, what each does to your reconciliation, and the failure modes that only appear above about fifty payees.

A payment-run card for 120 payees fanning violet lines to a grid of twelve small supplier cards, each ticked in mint except one flagged with a violet exclamation mark.

Paying many suppliers at once has four routes, and the choice matters less for how the money moves than for what your bank statement looks like afterwards.

The four routes

RouteHowCostReconciliation afterwards
Bank payment fileExport from ledger, upload to bankLowestOne bank line, batch record in ledger
Bulk pay in your accounting packageSelect bills, payLowHandled if it keeps a batch object
Payments platformDashboard or API pushPer paymentPlatform record, exported back
Payment layer under the ledgerPaid with the invoice attachedPer paymentEach invoice settles individually

Bank payment file

The workhorse. Your system generates a file in the format your bank accepts — BACS in the UK, NACHA for ACH in the US, pain.001 for SEPA — and you upload it.

Strengths: cheapest per payment, reliable, no third party in the flow. Weakness: everything after generation happens outside your ledger. A payment rejected inside the file is reported by the bank, not by the system that made it, so somebody has to be watching two places.

Bulk payment in your accounting package

Xero, QuickBooks, Sage and Business Central all support selecting many bills and paying them together, generating the file and keeping a batch record.

Strengths: the batch object survives, so the single bank line has something to match against. Weakness: it is still a file at the bank end, with the same visibility gap.

Payments platform

Push the batch by dashboard or API; the platform handles delivery per recipient, including international.

Strengths: handles mixed rails and countries, reports per-payment status, retries. Weakness: the platform’s record of the run and your ledger’s record of the invoices are two lists that have to be reconciled to each other.

Payment layer beneath the ledger

Each payment stays attached to the invoice it settles.

Strengths: the reconciliation does not exist, because nothing was disconnected. Weakness: it changes how payments are made, which is a larger decision than adding a tool.

What breaks above about fifty payees

Nothing on this list happens at ten. All of it happens reliably at a hundred, which is why a process that worked fine fails at a threshold rather than degrading gradually.

1 · Some payments fail every run

Details changed, account closed, name mismatch, a country-specific requirement missed. At ten payees this is rare; at a hundred it is every run.

The operational question is not whether it happens but who finds out. If the failure is reported by the bank into a file nobody opens, you learn about it when the supplier calls. Build the check into the run: after submission, confirm the count and total that settled against the count and total that were sent.

2 · Duplicates

The same invoice reaches the run by two routes — emailed by the supplier, uploaded by the requester — and both get paid.

Detection on invoice number alone is insufficient because suppliers reuse and reformat them. Match on supplier, amount and date together. More on duplicate detection.

3 · Bank details that changed

The highest-value fraud in payables, and no workflow automation catches it. An email saying “our bank details have changed” is convincing precisely because it arrives in a legitimate thread.

The only control that works is verification through a channel the email did not come from — a phone number you already had, not the one in the signature. Apply it to every change, without exception, because the exception is the one that costs you.

4 · The aggregated line hides all three

One debit for the whole run means the first three problems are not visible on the bank statement. You see a total that matches, because the total does match — the failures come back later as returns, and the duplicate looks like a legitimate payment.

The reconciliation problem, precisely

Your ledger knew exactly which invoices the run covered. The bank was never told.

The payment file carries amounts and account details. It does not carry your invoice numbers in a form that survives to your bank statement, so what comes back is a date and a total. Every month somebody confirms one line against a list their own system already holds.

That is manageable when everything succeeds. It gets expensive in three cases:

  • A payment inside the batch is returned, so the bank total no longer matches the run total, and finding which one requires opening the bank’s report.
  • A part payment, where the invoice is settled across two runs and stays open in between.
  • Currency, where the rate applied at the bank differs from the rate posted, producing a correct payment that shows a difference.

A checklist for a clean run

  1. Freeze the list. Export what you are about to pay — supplier, invoice, amount — before generating anything.
  2. Duplicate-check on supplier + amount + date, not invoice number.
  3. Verify every bank-detail change through a channel that did not originate the request.
  4. Submit, then confirm the settled count and total against the sent count and total.
  5. Reconcile the batch, not the line. Match the bank debit against the frozen list, so a discrepancy points at a specific invoice rather than at a number.
  6. Send remittance advice. Most “we never received it” queries are actually “we received it and could not tell what it was for”.

Where Fynex fits

Fynex removes the reconciliation step rather than accelerating it.

Payments carry what they settle. A run covering two hundred supplier invoices arrives back as two hundred settled invoices, not one debit against a list. A payment inside the run that fails surfaces as that invoice remaining open, immediately, instead of as a total that does not tie out three weeks later. Part payments settle the portion they cover and leave the remainder visibly outstanding. The applied rate travels with each foreign-currency payment.

For a run of ten suppliers this is not worth changing anything for — a bank payment file is the correct answer and it is nearly free. It becomes worth it at the point where somebody’s calendar has “payment run” on it.

Related: How to automate accounts payable · Why payouts fail, by rail · mass payment · Payouts

FAQ

Frequently asked questions

There are four routes. A bank payment file exported from your accounting system and uploaded to the bank is the most common and the cheapest. A bulk payment feature inside your accounting package covers smaller runs. A payments platform pushes the batch by dashboard or API with delivery handled per recipient. A payment layer beneath your ledger does the same while keeping each payment attached to the invoice it settles. The right one depends less on volume than on what you want your bank statement to look like afterwards.
A structured file listing many payments in the format your bank accepts — BACS in the UK, NACHA for ACH in the US, pain.001 for SEPA credit transfers in Europe. Your accounting system generates it from the invoices you selected, and you upload it through the bank's own channel. It is cheap and reliable, and the trade-off is that everything after generation happens outside your ledger, so a rejected payment inside the file is reported by the bank rather than by the system that created it.
Because the bank executed the run as a single debit, which is normal for batch submissions. Your ledger knows exactly which supplier invoices the run covered, but that information stayed in your system and was never transmitted with the money. Reconciliation therefore means confirming one bank line against a batch record rather than against individual invoices, which is manageable when everything succeeds and awkward when one payment inside the batch fails or is returned.
Above roughly fifty payees, four things appear reliably. A few payments fail each run for reasons specific to each recipient. A duplicate slips in when the same invoice reached the run by two routes. Bank details that changed since the last run send money to the wrong place. And the aggregated bank line makes it hard to notice any of the first three quickly. None of these appear at ten payees, which is why processes that worked fine start failing at a threshold rather than gradually.
Book a demo