Financial Reconciliation

Recon

Generic reconciliation for any two data sources: CSV, XLSX, or live HTTP APIs.

Pair any two data sources, run reconciliation over a date window, and bucket every row as matched, mismatched, or missing. Vendor-neutral, config-driven, and persisted to your own database.

The five buckets

Every joined row lands in exactly one bucket

Recon hash-joins both sources on your chosen key and decides where each row belongs. No row is silently dropped, no row is double-counted.

Matched

Both sides agree on amount and status within tolerance.

Amount mismatch

Join key matches, but the amounts differ beyond your tolerance.

Status mismatch

Amounts agree, but the reported statuses disagree after equivalence.

Missing in Source A

Only Source B has the row. Source A is silent.

Missing in Source B

Only Source A has the row. Source B never reported it.

Capabilities

What Recon does

CSV, XLSX, or live API sources

Define each feed once with a name, type, and column mappings. File sources accept per-run CSV or XLSX uploads; live API sources are fetched for you, with the run's date window slotted into the request automatically.

Column mappings, not vendor code

Tell Recon which columns are the join key, amount, status, and timestamp, across any number of header variants (case, underscores, whitespace are normalised). The same engine handles every PSP, gateway, or ledger without forking.

Comparisons with match rules

Pair two sources, set an absolute amount tolerance, choose case-sensitive or case-insensitive joining, and optionally provide a JSON status equivalence map (e.g. SUCCESS / ISSUANCE_SUCCESS / COMPLETED) for cross-vendor state alignment.

Bucketed runs with hash join

Each run normalises both sides, hash-joins on the join key, and buckets every row as Matched, Amount mismatch, Status mismatch, Missing in Source A, or Missing in Source B, with totals, amounts, and full row snapshots persisted to your own database.

Handles large, paged APIs securely

Live API sources page through large result sets automatically, with safety caps so a run can never loop forever. Access tokens and other secrets are encrypted at rest and never shown back in plain text.

Date-window scoping

Every run carries a start and end date. Rows whose timestamp falls outside the window are dropped before matching; sources without a timestamp column include every row regardless. Quick presets cover today, yesterday, and the last 14 days.

Inspect every row

Drill into any run, filter by bucket, and see the full left + right row snapshot side by side, including the join key, mapped fields, and the extra columns you flagged. No exports needed to investigate a single mismatch.

Your data, your retention

Sources, comparisons, runs, and row snapshots live in your own database. Recon never holds a copy of your transactional data, only the configuration that tells the engine how to reconcile it.

Integrations & data sources

  • CSV / XLSX uploads
  • Any REST API (live fetch)
  • Automatic date-window filtering
  • Page-by-page and cursor pagination
  • Secure token auth (encrypted at rest)

On the stack

  • Your own database
  • Config-driven column mappings
  • Hash-join matcher
  • AES-256-GCM encrypted credentials
  • Date-window scoping
  • Full row-snapshot audit trail
MCP + API

Drive Recon from your AI agent

Recon is exposed through the Juniors AI MCP server, so Cursor, Claude, and any other MCP client can work with it directly. Grant a key the recon:read scope for the read tools, or recon:write to include the writes.

Read5 toolsrecon:read
  • recon_list_sources

    Every configured source, both file uploads and live API feeds.

  • recon_list_comparisons

    Every paired comparison and the match rules it applies.

  • recon_list_runs

    Run history with bucket totals for each run.

  • recon_get_run

    One run's bucket counts and amounts across all five buckets.

  • recon_get_run_rows

    Drill into individual rows in any bucket, with both row snapshots side by side.

Write1 toolrecon:write
  • recon_trigger_run

    Kick off a reconciliation over a date window. Both sides must be live API sources.

Try asking your agent

Reconcile yesterday's settlement comparison, then list every row that landed in the amount-mismatch bucket.

Set up MCP

33 tools across all six products, plus a public OpenAPI spec at /api/openapi.json if you would rather call the REST API directly.

Recon FAQ

Recon - common questions

Recon is a generic, vendor-neutral reconciliation product inside the Juniors AI workspace. It pairs two data sources (CSV / XLSX uploads or live HTTP APIs) and buckets every row as Matched, Amount mismatch, Status mismatch, Missing in Source A, or Missing in Source B, so finance and operations teams can spot breaks across PSPs, gateways, ledgers, or internal systems without writing custom code.

Ready to run Recon on your infrastructure?

Get early access to the full Juniors AI workspace.

Get Access