Financial Reconciliation

Recon

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

Recon is a vendor-neutral financial reconciliation product inside the Juniors workspace. Define your own sources (CSV / XLSX uploads or live HTTP_API fetches) with column mappings for join key, amount, status, and timestamp; pair any two sources into a comparison with an amount tolerance and an optional cross-vendor status equivalence map; trigger runs over a date window and watch Recon hash-join both sides, bucket every row into MATCHED / AMOUNT_MISMATCH / STATUS_MISMATCH / MISSING_IN_LEFT / MISSING_IN_RIGHT, and persist every result to your own database. Adding a new payment gateway, PSP, or ledger is a config change, never a deploy.

Capabilities

What Recon does

CSV, XLSX, or live HTTP API sources

Define each feed once with a name, type, and column mappings. CSV / XLSX sources accept per-run uploads; HTTP_API sources are fetched live with templated URLs, headers, query params, and POST bodies (`{fromIso}`, `{toIso}`, `{fromDate}`, `{toDate}` placeholders).

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 into MATCHED, AMOUNT_MISMATCH, STATUS_MISMATCH, MISSING_IN_LEFT, or MISSING_IN_RIGHT, with totals, amounts, and full row snapshots persisted to your own database.

HTTP pagination + bearer auth

HTTP_API sources support page-number or cursor-based pagination with safety caps. Bearer tokens and other secrets are encrypted at rest with AES-256-GCM and redacted from the API surface.

Date-window scoping

Every run carries a fromTs / toTs window. Rows whose timestamp falls outside 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 PostgreSQL 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 HTTP / REST API (GET or POST)
  • Templated URL / query / headers / body
  • Page-number pagination
  • Cursor pagination
  • Bearer-token auth (encrypted at rest)

On the stack

  • PostgreSQL 16
  • Knex.js per-product migrations
  • Node.js + Express API
  • AES-256-GCM encrypted credentials
  • Hash-join matcher
  • Next.js 16 dashboard
Recon FAQ

Recon - common questions

Recon is a generic, vendor-neutral reconciliation product inside the Juniors workspace. It pairs two data sources (CSV / XLSX uploads or live HTTP APIs) and buckets every row into MATCHED, AMOUNT_MISMATCH, STATUS_MISMATCH, MISSING_IN_LEFT, or MISSING_IN_RIGHT, 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 workspace.

Get Access