by ReconcileIO (LX AI)
ReconcileIO — Match payments to invoices in one paste Use it as decision-support: demo mode works without a live key; live runs require configuration. No fabricated metrics, and no claims for SSO/CSV/Slack unless that surface is actually shipped.
Decision-support only — confirm before you publish or act.
I built ReconcileIO to take two plain‑text lists you paste into a single box and return a short status for each invoice: PAID, PARTIAL, UNPAID. The tool runs a deterministic matcher that looks at client name, invoice number, amount, and date. It then writes a summary you can copy into your accounting notes. The output is meant to be a first‑draft checklist, not a final ledger entry.
When you open the tool you see two text areas labelled “Invoices” and “Payments”. You can paste raw CSV lines, tab‑separated values, or even a simple list separated by line breaks. The parser expects a header line; if none is found it treats the first line as data and assumes the order: client, invoice number, amount, date. After you click “Run”, the script runs in the browser (demo mode) or on a small backend (live mode) and returns the result within a few seconds.
Demo mode uses a hard‑coded data set that mirrors a typical month‑end run for a SaaS founder with about 150 invoices and 180 payment rows. No API key is needed, and the data never leaves your browser. This lets you see the full flow without configuring a key.
Live mode expects you to provide an API key for the service that holds your payment data (Stripe, Plaid, or a custom webhook). The key is stored only for the duration of the request and is not logged. If you do not configure a key the button stays disabled and a tooltip explains what is missing.
For a file set of 300 lines each side the deterministic algorithm finishes in under 800 ms on a modern laptop. The bulk of the time is spent in the initial parse step; the matching itself is O(n log n) due to the sort on invoice number.
ReconcileIO is deliberately liberal about input shape. Below is a table that shows the formats the parser recognises and the columns it expects.
| Format | Example line | Notes |
|---|---|---|
| CSV with header | Acme Corp,INV-1001,250.00,2024-09-01 | Header line: client,invoice_number,amount,date |
| TSV (tab separated) | Acme Corp INV-1001 250.00 2024-09-01 | Same order as CSV |
| Pipe separated | Acme Corp|INV-1001|250.00|2024-09-01 | Useful when commas appear in client names |
| Plain list (no header) | Acme Corp INV-1001 250.00 2024-09-01 | Fields separated by one or more spaces; order must be client, invoice_number, amount, date |
I want to be clear about the limits of ReconcileIO so you do not rely on it for something it cannot do.
.data/ folder that is cleared when the session ends.Choosing the right mode depends on what you are trying to validate.
At the top right of the page a toggle labelled “Demo / Live” lets you flip the state. When you switch to live the API key field appears; entering a valid key enables the “Run” button. Leaving the field empty or entering an invalid key keeps the button disabled and shows an inline message explaining what is missing.
Even though ReconcileIO is a small decision‑support tool, I treat data handling seriously. The design follows two public frameworks that help me think about risk.
The https://owasp.org/www-project-top-10-for-large-language-model-applications list reminds me to watch for prompt injection, data leakage, and insecure output handling. Although ReconcileIO does not use a large language model for its core matching, any future AI‑assisted features will be reviewed against these items.
The https://www.nist.gov/itl/ai-risk-management-framework provides a structured way to govern, map, measure, and manage AI‑related risks. I use its “Map” step to list data flows (paste → parse → match → output) and its “Measure” step to verify that no personal data is retained after the session ends.
.data/ folder holds a JSON file with the raw payload for debugging; this file is deleted when the browser tab is closed or after 30 minutes of inactivity.I keep a written checklist next to every release that touches this topic. The list is boring on purpose: name the owner, name the evidence artifact, and name the rollback. If a step cannot produce a file, a ticket, or a log line, it is not a step — it is a wish.
| Signal | What to record | Stop-ship? |
|---|---|---|
| Unexpected write or send | Tool name, args, identity | Yes until gated |
| Missing confirmation on destructive action | Call path and bypass | Yes |
| Untrusted text treated as instruction | Source surface and resulting action | Yes for agent reach |
| Scanner clean, judgment open | Deferred items + owner | Only if core path safe |
invoice-reconcile helps with the measurable first pass. Architecture choices, legal sign-off, and customer-facing claims still need a human owner. Treat every checklist row as decision support, not a certificate.
When a prospect asks whether the product "covers everything," I answer with the boundary: automated checks catch known patterns; novel chains and policy judgment still need review. That honesty keeps support load down and keeps the blog aligned with what the product actually does.
If you need a second opinion, pair this write-up with the references below and with your own staging reproduction. Do not skip the reproduction step just because a model wrote a confident summary.
Match payments to invoices in one paste
Operators and builders who need a fast first draft or checklist from ReconcileIO.
Yes in explicit Demo mode. Live AI requires a configured key.
No. Outputs are decision-support; you still review before publishing or acting.
Only if those features are implemented in this product build — do not assume them from marketing copy.
Runs may be stored locally under the product's .data/ boundary; treat demos as ephemeral.