By: Tom Sydney Kerckhove <syd@cs-syd.eu>
Fix what the review found Same-day payouts were summed into one transaction. Each payout is one line on the bank statement and the bank importer books those one at a time, so a summed pair leaves the self-transfer account unable to zero out against the first of them. A tiny invoice is within a minor unit of every Swiss VAT rate, so the tolerance alone could not pin one down and the month errored out with no way past it. An exact match now wins outright and the tolerance is only the fallback. The page bound blamed a paging bug for what could be a legitimately large account, and nothing actually detected a loop. A repeated cursor is the precise signal, and the decision is now a pure function so it can be tested without a fake HTTP server. The balance check reached back into the transaction list for Stripe's spelling of the currency; the aggregate carries it, so the currency the balance is checked in cannot drift from the one the postings are written in.