Reconcio

PSP settlement reconciliation

Your PSP reports vs. your ledger. Every discrepancy explained.

Reconcio reconciles payment provider settlement reports with your books and shows exactly which payments differ, which are missing and by how much — fees, partial refunds, FX differences, duplicates. Reports from Stripe, Adyen, PayPal and Checkout.com are recognised automatically. Use it in the cloud or run it in your own infrastructure.

No card required: try it on sample files in a minute. Or send us your own files for a free audit.

PSP transactions vs. ledger

Completed

Convergence

99.34%

Matched
10,487
Mismatched
29
Only in file A
26
Only in file B
15

2 keys appear twice in file A — kept out of matches

Amount, totals

A 1,284,903.17B 1,284,903.16

difference: 0.01

Downloads:CSVPDF

Reconciliation still lives in spreadsheets

Every month someone exports two files, glues them together with VLOOKUP and scrolls through thousands of rows looking for the ones that don't add up. It is slow, it breaks on volume, and its mistakes are silent.

Typical pairs

  • PSP transactionsAccounting ledger
  • Bank statementERP
  • Marketplace payoutsOrders

Hours of manual work

Column headers differ, formats differ, and the spreadsheet has to be rebuilt every period.

Silent errors

A lookup quietly takes the first of two duplicate rows, and rounding hides a one-cent gap.

Spreadsheets hit a wall

A month of transactions does not fit comfortably in a spreadsheet, let alone two of them.

Free reconciliation audit in 48 hours

Not sure the tool is worth it? Send us one month of a PSP settlement report and the matching ledger export. Within 48 hours you get the list of discrepancies with amounts — and an idea of how much is slipping through today.

Send files for a free audit

Files are deleted right after the audit. NDA on request; anonymised data works too.

  1. Send two files

    A settlement report from one provider (Stripe, Adyen, PayPal, Checkout.com or any CSV/XLSX) and your ledger export for the same period.

  2. We reconcile

    We run them through Reconcio: fees, partial refunds, FX differences, payments missing on either side, duplicates.

  3. You get the report

    A PDF with totals and an Excel file with every discrepancy. No commitment.

How it works

No formulas and no scripts. The same flow works in the web UI and through the API.

  1. 1

    Bring two files

    Upload CSV or XLSX exports, or point to files that are already in your S3 storage.

  2. 2

    Choose the columns

    Reconcio suggests the key and the columns to compare. Accept them or pick your own.

  3. 3

    Run

    The comparison runs on the server: a million transactions take about twenty seconds.

  4. 4

    Review and share

    See every discrepancy, download the differences file and the PDF report, or get it by email.

Built for reconciliation that has to be right

Accuracy first, then speed: a reconciliation that is fast but occasionally wrong is worse than a spreadsheet.

Accuracy

Discrepancies are found, not smoothed over.

Exact amounts

64-bit arithmetic: a one-cent difference on 12,345,678.91 is caught, not rounded away.

Headers in any language

Column names in German, Polish, Russian or anything else are read as they are.

Duplicate keys flagged

Rows whose key appears more than once are reported separately and never counted as matched.

Tolerances where reality needs them

Allow a cent of rounding or a day or two between the transaction and the booking date — real discrepancies still stand out.

Smart column suggestion

Reconcio probes a sample of rows and won't propose comparing columns with different vocabularies, like status codes.

Scale, verified

1,000,000 transactions reconciled in about 20 seconds — checked by an automated test on every release.

Workflow

From two exports to an answer you can act on.

CSV, XLSX or S3

Upload files in the browser or create a reconciliation from files already in your S3 buckets.

Results that explain

Convergence, rows only in one file, mismatches per column, totals of amounts and recommendations.

One payout, many orders

Sum rows with the same key on each side: a payout is compared with the total of its orders, a payment with the invoices it covers.

Browse discrepancies

Filter by kind, search by key and see both values side by side, right in the browser — no spreadsheet needed.

Differences file and PDF

Download every discrepancy as CSV, or a PDF report — sent by email automatically when the run is done.

Automation

Recurring reconciliations without opening the UI.

Templates

Save the key and compared columns once. With a template, a reconciliation runs by itself after upload — files in any order.

REST API

Scoped API keys and an OpenAPI description with Swagger UI served by every installation.

Report in your inbox

Export the files, send them to the API with a template, and receive the report by email.

Your data stays in your perimeter

Reconcio is not a cloud service you send your transactions to. It is software you run on your own servers, next to the systems the exports come from.

Runs in your infrastructure

Data never leaves your perimeter. Works air-gapped, with an offline license — no calls home.

Secrets where you keep them

From environment variables, a file, HashiCorp Vault or Infisical.

Files don't pile up

Uploaded files and differences files are deleted after a retention period.

Access control

Two-factor authentication, roles and invitations. The admin console shows users, all reconciliations, background tasks and system health.

Observable

Prometheus metrics and liveness and readiness probes for your monitoring.

Up in a few commands

One Docker image plus the services it relies on. The bundled Docker Compose file brings up the whole stack; database migrations run on start. For a pilot, ClickHouse is optional: files of up to a million rows reconcile in memory, with the same results.

  • Reconcio (one image)
  • PostgreSQL
  • ClickHouse (optional)
  • Redis
  • S3-compatible storage

For Kubernetes there is a Helm chart.

Docker Compose

cp .env.example .env
./scripts/gen-secrets.sh    # DB passwords, JWT keys
docker compose up -d
curl http://localhost:2604/readyz

Automate it end to end

Everything you do in the UI is available through the REST API. Pass a template and the reconciliation starts as soon as the files are uploaded.

  • Authorization: Bearer with scoped API keys
  • Upload files or reference objects in your S3
  • PDF report emailed when the run completes
  • Swagger UI at /swagger/index.html on every installation
API documentation

Upload

curl -X POST https://reconcio.example.com/api/v1/reconciliations/prepare \
  -H "Authorization: Bearer $RECONCIO_API_KEY" \
  -F file_a=@psp_transactions.csv \
  -F file_b=@ledger.xlsx \
  -F template_id=3c1e7a52-0b9d-4c64-9f0e-2a7d5b8c4e11 \
  -F report_emails=finance@example.com

From S3

curl -X POST https://reconcio.example.com/api/v1/reconciliations/prepare-from-storage \
  -H "Authorization: Bearer $RECONCIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "file_a": "s3://psp-exports/2026-10/transactions.csv",
    "file_b": "s3://erp-exports/2026-10/ledger.xlsx",
    "template_id": "3c1e7a52-0b9d-4c64-9f0e-2a7d5b8c4e11"
  }'

Result

curl https://reconcio.example.com/api/v1/reconciliations/8f2b9d51-f5a8-4b64-8a0d-4c8db2dc6e4f \
  -H "Authorization: Bearer $RECONCIO_API_KEY"

{
  "id": "8f2b9d51-f5a8-4b64-8a0d-4c8db2dc6e4f",
  "status": "completed",
  "file_a_rows_count": 10544,
  "file_b_rows_count": 10531,
  "results": {
    "matched_rows_count": 10487,
    "mismatched_rows_count": 29,
    "missed_rows_count_in_file_b": 26,
    "missed_rows_count_in_file_a": 15,
    "duplicate_key_rows_count": 2,
    "convergence": 0.9934,
    "float_column_stat": [
      {
        "column_name": "amount",
        "total_a": 1284903.17,
        "total_b": 1284903.16,
        "difference": 0.01
      }
    ],
    ...
  }
}

Questions

What can Reconcio reconcile?

Any two lists of records that share a key: transaction IDs, invoice numbers, order numbers. Typical pairs are PSP transactions vs. the accounting ledger, bank statement vs. ERP, and marketplace payouts vs. orders. Files are CSV or XLSX.

Does our data leave our infrastructure?

No. Reconcio runs on your servers, stores files in your S3-compatible storage and works without internet access: the license is checked offline.

What do we need to run it?

Docker with Compose, or Kubernetes. The stack is one Reconcio image plus PostgreSQL, Redis and S3-compatible storage; the bundled Compose file brings all of them up. ClickHouse is added for files beyond a million rows — without it, reconciliation runs in memory with the same results.

How large can the files be?

A million transactions reconcile in about 20 seconds; an automated test checks this on every release. The upload size limit is a setting of your installation.

Our two files name the columns differently. Is that a problem?

No. You choose which column of file A corresponds to which column of file B, and Reconcio suggests the pairs for you. Headers can be in any language.

What happens to duplicate keys?

By default a row whose key appears more than once in a file is never counted as matched: it is reported among the discrepancies, with the number of rows each file had. When one record should match several — a payout and its orders — turn on summing rows with the same key, and the totals are compared.

How much does it cost?

In the cloud: Starter at $250 a month, Business at $750 a month, with a 14-day free trial. Self-hosted: an annual license from $3,600 a year, priced on request. See the pricing page; the first audit of your files is free.

More answers in the documentation

See what slips through your reconciliation

Upload a PSP report and your ledger export and get every discrepancy with amounts in minutes. 14 days free, no card required.