# F20 FinanceOps > Finance Operations Diagnostic Engine. Find the finance work that shouldn't be manual. F20 FinanceOps is part of Focus20 Labs. It is a free finance-operations diagnostic engine and toolkit: a BAI2 converter, MT940 and camt.053 converters, bank reconciliation tools, and close checks. Convert bank files, reconcile ledgers, and check the books before close. F20 FinanceOps is accounting operations software for bank files, reconciliation and close. It is not cloud FinOps. Free BAI2 converter, bank reconciliation and close tools. Convert BAI2, MT940 and camt.053 to CSV or Excel, tie two ledgers, and check the books. Nothing stored. Uploaded files are processed in memory and dropped when the response is sent. Nothing is written to disk. They are never stored. An account is optional — every tool works without signing in. A run made without an account is not recorded. Signing in exists so a team can keep run history for the diagnostic; it is not required to use a tool. There is no charge to run a tool. Output is not professional advice. ## How to use 1. Open a tool from the list below, or start at [Home](https://finops.focus20labs.com/) and pick a live tool. A card is live only when that workflow actually runs; month-end close is listed as in build and has no page. 2. Drop the file — or files — the tool asks for. The signature on each tool names the inputs and the usual output. One-file converters and analysers take a single export. Two-sided reconciliations take two files. Three-way match takes a purchase order, a goods receipt, and an invoice. 3. To try a tool without a real export, download a synthetic fixture from [Sample files](https://finops.focus20labs.com/samples/) and run it on that tool's page. Those files are not customer data. 4. Results appear in the browser: findings, matches, and tables. Download CSV or Excel when the tool offers those exports. 5. You do not need an account. There is no charge and no usage limit. Uploaded files are processed in memory and dropped when the response is sent. They are never stored. A run made without an account is not recorded. Scanned or photographed PDFs are refused; there is no OCR. Output is not professional advice. Where a figure talks about hours or money, it is what a team could reclaim, never what they will save. Leave an email on [Talk to F20](https://finops.focus20labs.com/talk/) for product notes or feedback. That email is kept so we can reply. Uploaded files are still never stored. ## Primary pages - [Home](https://finops.focus20labs.com/): the toolkit, with every tool listed - [Sample files](https://finops.focus20labs.com/samples/): synthetic fixtures to download and run - [Learn](https://finops.focus20labs.com/learn/): bank file guides and finance operations vs FinOps - [Compare](https://finops.focus20labs.com/compare/): sourced comparisons of converters, formats and reconciliation tools - [Comparison methodology](https://finops.focus20labs.com/compare/methodology/): how features and prices are sourced - [FAQ](https://finops.focus20labs.com/faq/): short answers — free, stored, account, BAI2 in Excel - [About](https://finops.focus20labs.com/about/): Focus20 Labs and F20 FinanceOps - [Talk](https://finops.focus20labs.com/talk/): product notes and feedback - [Policies](https://finops.focus20labs.com/legal/): privacy, refund, security, terms, company policy - [BAI2 converter](https://finops.focus20labs.com/tools/bai2-to-csv/): convert a BAI2 statement to CSV or Excel - [Bank reconciliation](https://finops.focus20labs.com/tools/bank-reconciliation/): match a statement to a cash book ## How the tools work ### Bank files, made readable Banks send fixed-width records and XML. Spreadsheets want rows. These four do that conversion and score the file while they are in there. #### Convert a BAI2 statement - URL: https://finops.focus20labs.com/tools/bai2-to-csv/ - Search title: BAI2 to CSV converter - Also asked as: BAI2 converter, BAI2 to CSV, BAI2 to Excel, convert BAI2, BAI2 parser - Signature: BAI2 → CSV, XLSX - Turn a BAI2 file into CSV or Excel, and check the control totals tie before you trust it. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads BAI2's fixed-width records into one transaction per row, flagging anything malformed as a visible issue rather than dropping it. Before scoring, it checks that the opening balance plus the net of every transaction equals the closing balance the bank declared in the file's own control records — the tie-out an analyst would otherwise do by hand. Sample files (synthetic, not customer data): A BAI2 statement whose control totals do not tie. - Bank statement (statement.bai): https://finops.focus20labs.com/samples/bai2-to-csv/statement.bai #### Convert an MT940 statement - URL: https://finops.focus20labs.com/tools/mt940-to-csv/ - Search title: MT940 to CSV converter - Also asked as: MT940 converter, MT940 to CSV, MT940 to Excel, SWIFT MT940 parser - Signature: MT940 → CSV, XLSX - Read a SWIFT MT940 as rows you can sort, filter and sum, with the closing balance verified. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads SWIFT MT940's statement lines into one transaction per row through the same parse-then-validate pipeline as the BAI2 converter. MT940 carries no control-total trailer the way BAI2 does, so the check that matters here is the opening balance plus net movement against the closing balance the message itself states. Sample files (synthetic, not customer data): An MT940 statement with a debit and a credit. - Bank statement (statement.sta): https://finops.focus20labs.com/samples/mt940-to-csv/statement.sta #### Convert a camt.053 statement - URL: https://finops.focus20labs.com/tools/camt053-to-csv/ - Search title: camt.053 to CSV converter - Also asked as: camt.053 converter, camt053 to CSV, ISO 20022 converter, camt.053 to Excel - Signature: CAMT.053 → CSV, XLSX - Flatten ISO 20022 camt.053 XML into one transaction per row, references intact. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Walks the ISO 20022 camt.053 XML tree by element name rather than a pinned namespace version, so .02/.04/.08 variants and a bank's own house dialect all parse the same way. The opening and closing balance entries it reads are checked against the transactions in between, the same balance tie-out the other converters run. Sample files (synthetic, not customer data): A camt.053 statement with a credit and a debit. - Bank statement (statement.xml): https://finops.focus20labs.com/samples/camt053-to-csv/statement.xml #### Lift a PDF statement into Excel - URL: https://finops.focus20labs.com/tools/bank-pdf-to-excel/ - Search title: Bank PDF to Excel converter - Also asked as: bank PDF to Excel, PDF statement converter, bank statement PDF to CSV, PDF to XLSX - Signature: PDF → XLSX - Pull the transaction table out of a PDF statement and flag any page where the running balance breaks. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads only the text layer of a PDF — the real characters a bank's own generator writes — and detects a scanned or photographed statement and refuses it outright rather than guessing at pixels; there is no OCR. Because a PDF's layout isn't a tagged format the way BAI2 or MT940 are, it also tracks how many candidate lines on the page it actually parsed, and separately checks opening balance plus net movement against the closing balance to catch a row a layout quirk silently dropped. Sample files (synthetic, not customer data): A one-page text-layer statement that ties. Scanned PDFs are refused. - Bank statement (statement.pdf): https://finops.focus20labs.com/samples/bank-pdf-to-excel/statement.pdf ### Statements, checked One bank file in and no second side to match it against: whether it is clean enough to reconcile with, what the bank charged you for it, and where the cash actually sits. #### Score a statement before you reconcile - URL: https://finops.focus20labs.com/tools/bank-statement-data-quality/ - Search title: Bank statement data quality checker - Also asked as: bank statement data quality, BAI2 quality check, statement completeness checker - Signature: Statement → quality report - Judge whether a bank file is clean enough to reconcile with, in whichever format the bank sent it. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Sniffs the real format out of the file's own bytes and hands it to whichever existing parser already supports it — BAI2, MT940, camt.053, a bank CSV, or a text-layer PDF — and refuses XLS and XLSX outright, naming the gap, rather than accepting a file it has no parser for. It then scores five dimensions — completeness, balance integrity, references, duplicates and formatting — with balance integrity weighted heaviest, because a file whose numbers do not tie cannot be reconciled however good the rest of it is. The readiness verdict refuses to read 'Ready' whenever that dimension is assessed and non-zero; a balance swinging negative is reported as a finding but never scored, because an overdraft-permitted account does that routinely. Sample files (synthetic, not customer data): A BAI2 file whose closing balance does not match the transactions. - Bank statement (statement.bai): https://finops.focus20labs.com/samples/bank-statement-data-quality/statement.bai #### Total up the bank's charges - URL: https://finops.focus20labs.com/tools/bank-fee-analyzer/ - Search title: Bank fee analyzer - Also asked as: bank fee analyzer, bank charge analyzer, BAI2 fee report, analyse bank fees - Signature: Statement → fee breakdown - Group every charge on the statement by type, and estimate how much of it could be reclaimed. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Takes the statement's own sign convention as the first gate: a positive amount is money the bank paid into the account, so it is never classified as a charge however its description reads. Each debit is then bucketed by keyword pattern, plus the three BAI2 charge type codes the reconciliation rules already recognise. There is no AI classification anywhere in it — a row matching no known pattern lands in an explicit 'unclassified' bucket rather than being folded into 'other' as though it had been understood — and the avoidable-fee figure is labelled an estimate over the fee types that are usually avoidable, never a per-row certainty. Sample files (synthetic, not customer data): A statement with several bank-fee categories. - Bank statement (statement.csv): https://finops.focus20labs.com/samples/bank-fee-analyzer/statement.csv #### See where the cash actually is - URL: https://finops.focus20labs.com/tools/cash-position-analyzer/ - Search title: Cash position analyzer - Also asked as: cash position analyzer, cash position report, multi-bank cash position - Signature: Balances → cash position - Consolidate account balances by bank, entity and currency, and show what looks stranded or stale. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads each statement's own closing balance — falling back to the opening balance when a statement declares none — instead of re-summing transaction movements, and reads a balances CSV row's amount as that account's balance directly. It never adds two currencies together: there is no exchange-rate source anywhere in this engine, so every total, breakdown and concentration figure is per currency, with a plain-language note saying why no single consolidated number is offered. Where a file supplies no bank or entity column, that breakdown reports as absent rather than as zero. Sample files (synthetic, not customer data): Account balances in more than one currency. - Account balances (balances.csv): https://finops.focus20labs.com/samples/cash-position-analyzer/balances.csv ### Two sides, tied Every one of these takes the two files you are currently comparing by eye, matches them, and hands back the list of breaks with a reason against each. #### Bank to cash book - URL: https://finops.focus20labs.com/tools/bank-reconciliation/ - Search title: Bank reconciliation tool - Also asked as: bank reconciliation tool, bank reconciliation software, BAI2 bank reconciliation, statement vs cash book - Signature: Statement + cash book - Match the statement against your cash book and list what is outstanding on each side. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Matches the statement against your cash book through a ladder of ten passes — exact transaction ID or reference first, then amount-and-date, then fuzzy text and grouped one-to-many matches — each carrying its own confidence, so a row is only left unmatched once every stronger method has had a chance at it. What's left is classified by priority-ordered rules into categories like timing difference, bank charge, duplicate or possible anomaly, each with a recommended action: an outstanding cheque is flagged to carry forward, not to investigate. Sample files (synthetic, not customer data): A statement and cash book whose amounts do not match on one pairing. - Bank statement (bank-statement.bai): https://finops.focus20labs.com/samples/bank-reconciliation/bank-statement.bai - Cash book (cash-book.csv): https://finops.focus20labs.com/samples/bank-reconciliation/cash-book.csv #### Bank to general ledger - URL: https://finops.focus20labs.com/tools/bank-gl-reconciliation/ - Search title: Bank to GL reconciliation tool - Also asked as: bank to GL reconciliation, bank GL match, cash account reconciliation - Signature: Statement + GL export - Match the statement against the GL cash account and explain every break, with the cost of clearing it. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Runs the same ten-level matching ladder against the GL's cash account, inverting the ledger's debit-positive convention so both sides compare on equal footing. Fifteen priority-ordered rules then classify every gap — currency and amount mismatches, timing differences, bank charges not yet posted, duplicates — into a category with a recommended action, and the pair feeds a reconciliation score that deducts for what's unresolved rather than assuming completeness. Sample files (synthetic, not customer data): A bank statement and GL export whose amounts do not match on one pairing. - Bank statement (bank-statement.bai): https://finops.focus20labs.com/samples/bank-gl-reconciliation/bank-statement.bai - General ledger (general-ledger.csv): https://finops.focus20labs.com/samples/bank-gl-reconciliation/general-ledger.csv #### Supplier statement to purchase ledger - URL: https://finops.focus20labs.com/tools/vendor-reconciliation/ - Search title: Vendor statement reconciliation tool - Also asked as: vendor reconciliation, supplier statement reconciliation, AP vendor match - Signature: Statement + ledger - Compare a supplier's statement with your ledger and find the invoices only one of you has. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Matches the supplier's statement against your purchase ledger by invoice number first, then amount, date and fuzzy text. Its rules are written for this domain specifically — a credit note is classified as a reversal, and an overpayment or a partial payment each get their own category — rather than reusing a bank-reconciliation rule that would mistake a credit note for a missing transaction. Sample files (synthetic, not customer data): A vendor statement and AP ledger whose amounts do not match on one pairing. - Vendor statement (vendor-statement.csv): https://finops.focus20labs.com/samples/vendor-reconciliation/vendor-statement.csv - AP ledger (ap-ledger.csv): https://finops.focus20labs.com/samples/vendor-reconciliation/ap-ledger.csv #### Receipts to open invoices - URL: https://finops.focus20labs.com/tools/ar-reconciliation/ - Search title: AR reconciliation tool - Also asked as: AR reconciliation, accounts receivable reconciliation, receipts to invoices - Signature: Receipts + AR ageing - Tie customer receipts to open invoices, and surface short payments, part payments and unapplied cash. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Ties customer receipts to open invoices through the shared matching ladder, using whether a row carries an invoice number to tell an invoice-level line from an aggregate receipt — the same distinction a credit controller draws by eye. Its rules cover cash application, unapplied cash, bad-debt write-offs and short or partial payments as their own categories, not as one generic mismatch, before rolling into a reconciliation score. Sample files (synthetic, not customer data): An AR subledger with unapplied cash against the GL control account. - AR subledger (ar-subledger.csv): https://finops.focus20labs.com/samples/ar-reconciliation/ar-subledger.csv - GL control account (gl-control.csv): https://finops.focus20labs.com/samples/ar-reconciliation/gl-control.csv #### Payments to open bills - URL: https://finops.focus20labs.com/tools/ap-reconciliation/ - Search title: AP reconciliation tool - Also asked as: AP reconciliation, accounts payable reconciliation, payments to bills - Signature: Payments + AP ageing - Tie supplier payments to open bills and catch the duplicate payment before the month closes. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Ties supplier payments to open bills through the same matching ladder, then classifies breaks with rules built for a control reconciliation — including a posting that bypassed the subledger entirely, and a batch of bills that share one reference where none of them reached the GL. A duplicate payment surfaces as its own category rather than being buried in a generic mismatch. Sample files (synthetic, not customer data): An AP subledger missing a direct journal that is on the GL control account. - AP subledger (ap-subledger.csv): https://finops.focus20labs.com/samples/ap-reconciliation/ap-subledger.csv - GL control account (gl-control.csv): https://finops.focus20labs.com/samples/ap-reconciliation/gl-control.csv #### Gateway payout to orders - URL: https://finops.focus20labs.com/tools/payment-gateway-reconciliation/ - Search title: Payment gateway reconciliation tool - Also asked as: payment gateway reconciliation, Stripe payout reconciliation, PayPal settlement match - Signature: Payout file + order export - Break a Stripe, Razorpay or PayPal payout back into orders, fees, refunds and chargebacks. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Matches a payout file against your order export, then proves the arithmetic behind every gap before calling it an error: when a matched pair disagrees by exactly the settlement row's own fee, it's reclassified as a gateway fee rather than an amount mismatch. Refunds and chargebacks — money legitimately flowing backwards on a schedule that has nothing to do with the original sale date — get their own categories instead of looking like missing orders. Sample files (synthetic, not customer data): A gateway settlement file with a refund against the sales ledger. - Gateway settlement file (settlement.csv): https://finops.focus20labs.com/samples/payment-gateway-reconciliation/settlement.csv - Sales / AR ledger (sales-ledger.csv): https://finops.focus20labs.com/samples/payment-gateway-reconciliation/sales-ledger.csv #### Intercompany balances - URL: https://finops.focus20labs.com/tools/intercompany-reconciliation/ - Search title: Intercompany reconciliation tool - Also asked as: intercompany reconciliation, intercompany balance match, consolidation elimination - Signature: Two entity ledgers - Pair balances between entities and show exactly what will not eliminate on consolidation. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Pairs balances between two entities' own ledgers through the same matching ladder, then classifies what's left with rules written for the fact that both sides are the group's own records. A currency disagreement between entities on different functional currencies is reported as an FX translation difference, not a data error to correct, and cash or goods in transit between entities gets its own category rather than looking like a missing entry. Sample files (synthetic, not customer data): Two entity ledgers whose difference is an FX translation, not a missing booking. - Entity A ledger (entity-a.csv): https://finops.focus20labs.com/samples/intercompany-reconciliation/entity-a.csv - Entity B ledger (entity-b.csv): https://finops.focus20labs.com/samples/intercompany-reconciliation/entity-b.csv #### GSTR-2B to purchase register - URL: https://finops.focus20labs.com/tools/gstr2b-reconciliation/ - Search title: GSTR-2B reconciliation tool - Also asked as: GSTR-2B reconciliation, GSTR2B vs purchase register, ITC reconciliation - Signature: GSTR-2B + purchase register - Match GSTR-2B against your purchase register invoice by invoice, and total the credit at risk. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads the GST portal's GSTR-2B JSON and matches it against your purchase register on GSTIN plus invoice number together, not invoice number alone — so the same invoice number issued by two different suppliers is never collapsed into one match. What's left is classified into categories built for input tax credit specifically, then totalled into the credit at risk. Sample files (synthetic, not customer data): A GSTR-2B statement and purchase register whose tax amounts do not match. - GSTR-2B statement (gstr2b.json): https://finops.focus20labs.com/samples/gstr2b-reconciliation/gstr2b.json - Purchase register (purchase-register.csv): https://finops.focus20labs.com/samples/gstr2b-reconciliation/purchase-register.csv #### Customer statement to AR ledger - URL: https://finops.focus20labs.com/tools/customer-balance-reconciliation/ - Search title: Customer balance reconciliation tool - Also asked as: customer balance reconciliation, customer statement vs AR, AR confirmation - Signature: Customer statement + AR ledger - Compare what a customer says they owe with your AR ledger, and account for the difference. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Matches the customer's own statement against your AR ledger through the shared ten-level ladder, with the invoice number as the load-bearing level — matched on an exact value per row, so the same invoice number issued by two different counterparties is never collapsed into one match. Both sides are read as stated rather than sign-inverted: a statement and a receivables ledger share one convention, unlike a bank statement and a cash account. The asymmetry is kept in the categories — an entry only on their statement (they believe they owe something you have not recorded) is a different finding, with a different recommended action, from an entry only in your ledger (a collections dispute). Sample files (synthetic, not customer data): A customer statement and AR ledger that disagree on a collections item. - Customer statement (customer-statement.csv): https://finops.focus20labs.com/samples/customer-balance-reconciliation/customer-statement.csv - AR ledger (ar-ledger.csv): https://finops.focus20labs.com/samples/customer-balance-reconciliation/ar-ledger.csv #### Unapplied cash to open invoices - URL: https://finops.focus20labs.com/tools/unapplied-cash-analyzer/ - Search title: Unapplied cash analyzer - Also asked as: unapplied cash analyzer, unapplied cash matching, cash application tool - Signature: Receipts + open invoices - Find the receipts sitting unapplied and show which open invoices each one probably settles. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Runs the shared matching ladder over receipts and open invoices — invoice number and reference first, then amount with date proximity or narration, then one receipt against a summing group of several invoices — and reads the file's own unmapped 'Customer' column to scope its candidate search, since no shared match level knows anything about a counterparty. Where several open invoices could each explain one receipt, it reports the ambiguity and stops rather than picking the nearest, smallest or first: a wrong cash application corrupts a customer's ledger and the customer discovers it first. Nothing is ever applied or posted — each proposal names the signals that agreed, for a person to approve. Sample files (synthetic, not customer data): Receipts that overpay the open invoices they reference. - Receipts (receipts.csv): https://finops.focus20labs.com/samples/unapplied-cash-analyzer/receipts.csv - Open invoices (open-invoices.csv): https://finops.focus20labs.com/samples/unapplied-cash-analyzer/open-invoices.csv #### Balance to supporting schedule - URL: https://finops.focus20labs.com/tools/balance-sheet-reconciliation/ - Search title: Balance sheet reconciliation tool - Also asked as: balance sheet reconciliation, account to schedule reconciliation, supporting schedule check - Signature: Trial balance + schedule - Check every balance-sheet account against the schedule behind it, and list the accounts nothing supports. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Joins the trial balance to its supporting schedule on the GL account — the only key that means anything for this comparison, which is why it runs one account-level match level rather than the shared ten that key on references, amounts and narration and would happily match two unrelated accounts. An account with no schedule rows at all is reported as missing support, never as reconciled: zero rows is no measurement, not a zero difference. Differences are compared to zero exactly and never scaled by account size, so a 0.01 break on a large account stays a break, and the ageing 'as of' date is the latest date across both files rather than today's. Sample files (synthetic, not customer data): A trial balance and supporting schedule that do not agree. - Trial balance (trial-balance.csv): https://finops.focus20labs.com/samples/balance-sheet-reconciliation/trial-balance.csv - Supporting schedule (supporting-schedule.csv): https://finops.focus20labs.com/samples/balance-sheet-reconciliation/supporting-schedule.csv #### Three-way match - URL: https://finops.focus20labs.com/tools/three-way-match/ - Search title: Three-way match tool - Also asked as: three-way match, PO GRN invoice match, three way matching tool - Signature: PO + receipt + invoice - Match purchase orders to goods receipts to invoices, and name every document the other two do not account for. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Partitions all three documents' rows into seven exhaustive states — matched three ways, received not invoiced, invoiced not received, received and invoiced with no order, and each document standing alone — so every row lands in exactly one state and the state counts sum to the total row count, a completeness property enforced by tests rather than asserted in a comment. Quantity variance and price variance are reported separately, because an invoice that agrees on quantity but not unit price is a different exception from one that agrees on price but not quantity. A document with no counterpart is reported as unmeasured, never as matched, and variances are compared exactly rather than scaled by document size, so materiality stays the Controller's call. Sample files (synthetic, not customer data): Purchase orders, goods receipts and invoices covering matched, unmatched and variance states. - Purchase orders (purchase-orders.csv): https://finops.focus20labs.com/samples/three-way-match/purchase-orders.csv - Goods receipts (goods-receipts.csv): https://finops.focus20labs.com/samples/three-way-match/goods-receipts.csv - Supplier invoices (invoices.csv): https://finops.focus20labs.com/samples/three-way-match/invoices.csv ### Subledgers, examined One AR or AP ledger and nothing to match it against: how overdue the balances really are, and where the same invoice or payment appears twice. #### Age the receivables ledger - URL: https://finops.focus20labs.com/tools/ar-aging-analyzer/ - Search title: AR aging analyzer - Also asked as: AR aging analyzer, accounts receivable ageing, AR aging report - Signature: AR ledger - Bucket what customers owe by how overdue it is, and show where the collection risk sits. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Ages every invoice against the latest invoice date present in the ledger itself — the file's own 'as of' moment — never today's date, so the same file always produces the same buckets. Each invoice's signed outstanding balance falls into exactly one of six buckets or an explicit unassessable-due-date group, so the buckets always re-sum to a total a controller can re-derive from the same file, and a parallel gross figure is reported beside each one because a 120-day invoice netted against a fresh credit note would otherwise read as a healthy zero. Every figure is per currency; a EUR balance and a USD balance are never summed. Sample files (synthetic, not customer data): An AR ledger with more than one currency. - Accounts receivable ledger (ar-ledger.csv): https://finops.focus20labs.com/samples/ar-aging-analyzer/ar-ledger.csv #### Age the payables ledger - URL: https://finops.focus20labs.com/tools/ap-aging-analyzer/ - Search title: AP aging analyzer - Also asked as: AP aging analyzer, accounts payable ageing, AP aging report - Signature: AP ledger - Bucket what you owe by how overdue it is, and show which suppliers need attention first. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Reads the due date out of the file's own due-date column — matched case- and whitespace-insensitively among common spellings, since a due date is not a canonical field of the shared GL parser — and ages each invoice against the latest date the file itself carries, not today's. A blank or genuinely ambiguous cell resolves to unassessable rather than a guessed date that would silently shift an invoice's age. Buckets partition each item's signed amount so they re-sum exactly, with a parallel gross figure driving severity, and the payment-priority list is a recommendation for a person to act on, never a record that anything has been paid. Sample files (synthetic, not customer data): An AP ledger with invoices split across aging buckets. - AP ledger (ap-ledger.csv): https://finops.focus20labs.com/samples/ap-aging-analyzer/ap-ledger.csv #### Find the invoice booked twice - URL: https://finops.focus20labs.com/tools/duplicate-invoice-detector/ - Search title: Duplicate invoice detector - Also asked as: duplicate invoice detector, duplicate invoice finder, invoice register duplicates - Signature: Invoice register - Compare an invoice register against itself and surface the same invoice entered more than once. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Normalises each invoice number by upper-casing it and stripping every non-alphanumeric character, so INV-1002, INV1002, INV 1002 and inv/1002 collapse to one key — deliberately more aggressive than the shared reference matcher, because these numbers are typed by hand into two systems that disagree about punctuation. A second, coarser key folds visually confusable characters (O and 0, I and 1, S and 5) and a single-edit test catches a mis-keyed digit, and a near match is always reported at a lower risk tier than an exact one. Candidates are found by hash-keyed blocking in one pass rather than by comparing every pair, and each finding reads "Potential anomaly requiring review." Sample files (synthetic, not customer data): An invoice register with an exact duplicate pair. - Invoice register (invoice-register.csv): https://finops.focus20labs.com/samples/duplicate-invoice-detector/invoice-register.csv #### Find the payment made twice - URL: https://finops.focus20labs.com/tools/duplicate-payment-detector/ - Search title: Duplicate payment detector - Also asked as: duplicate payment detector, duplicate payment finder, payment register duplicates - Signature: Payment register - Compare a payment register against itself and surface the same money looking like it left twice. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Blocks candidates on hash-keyed indices in a single pass — the same strategy the shared matching levels use — so a real register never becomes an all-pairs comparison, and a pathological cluster of payments sharing one vendor and amount is reported as an oversized cluster rather than expanded into every pair within it. Tiers run from deterministically identical on the fields that matter down to soft flags, and even the strongest tier means only that, never a verdict: every recommended action is exactly "Potential anomaly requiring review.", never an instruction to reverse, block or void a payment. Sample files (synthetic, not customer data): A payment register with an exact duplicate pair. - Payment register (payments.csv): https://finops.focus20labs.com/samples/duplicate-payment-detector/payments.csv ### Books that hold up The checks a controller runs before signing, and an auditor runs after. Point them at an export and read the answer. #### Check a trial balance - URL: https://finops.focus20labs.com/tools/trial-balance-checker/ - Search title: Trial balance checker - Also asked as: trial balance checker, trial balance out of balance, TB checker - Signature: TB export - Confirm the trial balance actually balances, then flag the accounts that moved without an explanation. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Sums every account's debit and credit balance and reports whether they tie, broken out by currency so a mixed-currency file is never called balanced by an apples-to-oranges total. It also flags any account sitting on the wrong side of debit or credit for its account type, and any suspense or clearing account left carrying a balance — both tagged 'Potential anomaly requiring review,' never as a confirmed error. Sample files (synthetic, not customer data): A trial balance that does not tie. - Trial balance (trial-balance.csv): https://finops.focus20labs.com/samples/trial-balance-checker/trial-balance.csv #### Clear out suspense - URL: https://finops.focus20labs.com/tools/suspense-account-analyzer/ - Search title: Suspense account analyzer - Also asked as: suspense account analyzer, suspense ageing, clear suspense account - Signature: GL detail - Age what is sitting in suspense, group it by likely cause, and show who posted it. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Ages every item in the account from the latest transaction date found in the file itself, never today's date, so the same file produces the same ageing buckets and the same answer no matter when you run it. It groups items by likely cause and by who posted them, then scores the account on ageing risk and on how much of the balance carries no narrative to explain it. Sample files (synthetic, not customer data): A suspense ledger with many small uncleared items. - Suspense account ledger (suspense-ledger.csv): https://finops.focus20labs.com/samples/suspense-account-analyzer/suspense-ledger.csv #### Review manual journals - URL: https://finops.focus20labs.com/tools/journal-analyzer/ - Search title: Journal entry analyzer - Also asked as: journal entry analyzer, manual journal review, journal anomaly review - Signature: Journal export - Find the round numbers, the weekend postings and the reversals worth questioning before an auditor does. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Scans a journal export for patterns worth a second look — round-sum entries, weekend postings, one person preparing and approving their own entry, a fast reversal, unusual concentration in one account or preparer — and reports each as a count with its evidence, never a verdict. Every one of these has an innocent explanation, so nothing here is fraud detection; the fixed wording for any such finding is exactly "Potential anomaly requiring review." Sample files (synthetic, not customer data): A journal with a weekend posting. - Journal entries (journal.csv): https://finops.focus20labs.com/samples/journal-analyzer/journal.csv #### Check the accruals reversed - URL: https://finops.focus20labs.com/tools/accrual-analyzer/ - Search title: Accrual analyzer - Also asked as: accrual analyzer, accrual reversal check, open accruals - Signature: Accrual journal - Age the accruals still open, and show which never reversed or reversed for the wrong amount. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Pairs an accrual to its reversal inside the one file: same GL account, keyed by the accrual's own reference — or, only where it states none, by a normalised description with reversal markers stripped — and opposite in sign. Amount equality is deliberately not part of the pairing test, because a reversal posted for the wrong amount is one of the findings this tool exists to surface, and requiring equal magnitudes would make it unreachable. Ageing runs on each accrual's currently open balance against the latest date in the file, so a cleanly reversed accrual carries no exposure, and a file that shows no reversals anywhere reads 'unassessable' rather than asserting that nothing reversed. Sample files (synthetic, not customer data): An accrual whose amount does not match its reverse. - Accrual journal (accruals.csv): https://finops.focus20labs.com/samples/accrual-analyzer/accruals.csv #### Compare an account to its own history - URL: https://finops.focus20labs.com/tools/gl-movement-analyzer/ - Search title: GL movement analyzer - Also asked as: GL movement analyzer, general ledger fluctuation, account movement analysis - Signature: GL export - Find the account that moved unlike itself: a dormant account waking up, an outsized posting, a material movement with no narrative. How to use: open the URL, drop the file or files named in the signature, and read the result in the browser. Download CSV or Excel when offered. Groups the file's own transactions into calendar-month periods read from the data itself, never from today's date, and compares each account against its own history rather than against other accounts — a round-sum accrual can be a 400% swing on one account and business as usual on another. Where a file covers a single period there is no prior period to compare against, so period-over-period movement and dormant-account reactivation report as unassessable rather than clean. The dimensions that need no baseline — a running balance reversing sign, a posting outsized against that account's own typical entry, a round-number net movement, a material movement with no narrative — stay assessable on a single-period file. Sample files (synthetic, not customer data): A two-period GL export with a spike on one account. - General ledger (general-ledger.csv): https://finops.focus20labs.com/samples/gl-movement-analyzer/general-ledger.csv ## Pages - [Home](https://finops.focus20labs.com/): the toolkit, with every tool listed - [Sample files](https://finops.focus20labs.com/samples/): synthetic fixtures to download and run - [Compare](https://finops.focus20labs.com/compare/): sourced comparisons of converters, formats and reconciliation tools - [FAQ](https://finops.focus20labs.com/faq/): short answers — free, stored, account, BAI2 in Excel - [Talk to F20](https://finops.focus20labs.com/talk/): product notes and feedback - [Policies](https://finops.focus20labs.com/legal/): privacy, refund, security, terms, company policy (#privacy #refund #security #terms #policy) ## Policies #privacy #refund #security #terms #policy ### Privacy - https://finops.focus20labs.com/legal/#privacy This page is how this site handles information. Uploaded files, talk messages, and optional accounts are treated as follows. Uploaded files are processed in memory and dropped when the response is sent. Nothing is written to disk. We do not keep a copy of your file after the response. If you leave an email on Notes or Feedback, that email and message are kept so we can reply. Uploaded files are still never stored. Signing in is optional. A run made without an account is not recorded. If you create an organisation and sign in, we keep the account details you submit and the runs you make while signed in, so the diagnostic can total them. The 30-minute call calendar is operated by Calendly. If you book there, Calendly’s privacy terms apply to that booking. ### Refund - https://finops.focus20labs.com/legal/#refund Using these tools does not require payment. There is no charge to refund for running a tool. If you later agree a paid engagement with Focus20 Labs, that engagement’s terms cover fees and any refund. Nothing on this site takes a card. ### Security - https://finops.focus20labs.com/legal/#security Transport is over HTTPS. The file never lands on disk. After the response is sent, there is nothing left of the upload to look up. Optional account credentials are stored only as needed to sign you in again. An anonymous visit leaves nothing to look up later. ### Terms and conditions - https://finops.focus20labs.com/legal/#terms F20 FinanceOps is a diagnostic engine. Output is not professional advice. You remain responsible for your books, filings, and the files you upload. Use the tools only on data you are allowed to process. Results are provided as they stand. Focus20 Labs does not warrant that a score, match, or exception list is complete. We may change a tool, take one offline, or update this page. Continued use after a change is use under the new terms. ### Company policy - https://finops.focus20labs.com/legal/#policy F20 FinanceOps is part of Focus20 Labs. We operate this toolkit as a product of that studio: files are not stored, an account is optional, and the tools show their working. Questions about this site can be left on Talk, or booked as a 30-minute call. These policies apply to F20 FinanceOps as offered on this site. Effective 6 September 2026.