Key takeaways
- A statement PDF converted to rows is the starting point of reconciliation, not the result of it.
- Matching runs in tiers: transaction-type defaults, then a fuzzy match against counterparties already known, then the chart of accounts, then a person.
- An honest reconciliation has two remainders, money the documents do not explain and documents no payment explains, and both must be listed rather than written off.
- Confirmed transactions post as double-entry rows into the ledger; a statement is a file you already have, never a live bank connection.
01Rows were never the hard part
The bank exports a PDF. Somebody converts it. Then the afternoon starts: that card payment on the 14th, which supplier was it? That transfer, which invoice did it settle, and why is it four euros short? And the three receipts in the pile that no line on the statement matches at all: were they paid from another account, paid in cash, or not paid yet?
For one company that is an afternoon a month. For a practice with twenty clients it is the week. The converter did not remove any of it, because the converter's output is the input to the real work.
02The join, tier by tier
Pileform reads the statement in the same run as the receipts and invoices, on a separate pipeline so a statement is never mistaken for an invoice. Each transaction comes out with a date, a counterparty hint, an amount, a direction, a running balance and a type hint. Then it is classified in tiers, cheapest first.
- Transaction-type defaults. Bank charges, interest, card fees and the like have a default treatment and rarely need more.
- The counterparties it already knows. A fuzzy match against the suppliers and payees remembered for that company, with their aliases and default codes. The same card merchant matches the same way next month, which is why the second month is faster than the first.
- The chart of accounts. What is left is classified against the company's own accounts, rules first, an AI fallback above a confidence floor.
- A person. Anything under the floor waits in the review queue with its amount showing, never silently assigned.
Where a payment settles several invoices, the allocation across legs is recorded, not implied. The worked example on the bank statement automation page shows the join line by line.
03The two remainders
A reconciliation that ends with one number, the unexplained balance, is hiding half of its result. There are always two lists:
- Money the documents do not explain. Payments with nothing opposite them, and payments only partly explained, with the shortfall shown. A payment that is four euros short of the invoice it matches is not "matched"; it is matched with a residue, and the residue is the finding.
- Documents no payment explains. Receipts and invoices in the period that no statement line settles. Paid in cash, paid from another account, not yet paid, or a duplicate: each is a different answer, and only a person can give it.
Both lists are shown, neither is written off, and neither is guessed at. That is the whole difference between reconciliation and tidying.
04What posts, and what never happens
Confirmed transactions post as proper double-entry rows, not a one-column cash list, into Xero, QuickBooks, Business Central, BTMS or Esoft, or out to CSV, with the counterparty and the account carried through. The VAT on a matched payment was already decided per line on the invoice it settles, so the bank line carries the right net and VAT split into the posting.
Two things never happen. Pileform never connects to a bank: a statement is a file you already have, exported as a PDF, and that file is what is read. And it never moves money: a SEPA batch it generates is a file you take to your bank yourself. The statement, its documents and the two remainders are laid out for a person to settle; the settling is the accountant's, as it should be. Posting into Xero and the other ledgers follows the same rule: nothing reaches the books until the owner confirms it.
Convert the statement and you have rows. Match it to the documents and you have a reconciliation, with two honest remainders and a person's decision on each.
Pileform's bank-statement handling is a separate extraction pipeline, tiered classification, payment matching across legs, and double-entry postings. There is no live bank feed and none is described here.