Skip to main content
Reconciliation answers the question: did the money Sly’s ledger says moved actually move, according to the rails? When they disagree — which happens in ~0.1% of transactions due to rail quirks, fees, returns, or edge cases — reconciliation surfaces the discrepancies so you can investigate and resolve. Most partners only look at reconciliation reports during month-end close or when support tickets reference missing funds.

How reconciliation works

Sly ingests rail settlement files daily (ACH NACHA returns, Stripe payout files, stablecoin chain-settlement receipts). For each ledger entry on our side, we look for a matching rail entry. Mismatches are flagged.

List reconciliation reports

Response:

Report detail

Shows each discrepancy individually:

Discrepancy types

Resolve a discrepancy

Resolution types:
  • adjusted — you booked a correcting ledger entry
  • written_off — too small to chase, absorbed
  • chasing — external action in progress; returns to open pool
  • no_action — benign (timing) — close without adjustment

Trigger a reconciliation run

Reconciliation runs automatically nightly, but you can force a run:
Useful during incidents — “did yesterday’s ACH actually go through?”

Supported rails

Monitoring signals worth alerting on

  • Discrepancy rate > 0.5% on any given day
  • Specific rail gone quiet — no settlement file received for expected window
  • ledger_only older than 3 days — actual missing money, not lag
  • Repeated amount_mismatch on same merchant — pattern of unexpected fees
Subscribe to reconciliation.discrepancy.opened webhook for real-time.

Endpoints

Monthly close workflow

A typical month-end:
  1. Trigger a full-month recon per rail
  2. Review the discrepancy summary
  3. Book adjusting entries for unresolved amount mismatches
  4. Chase open ledger_only items with rail providers
  5. Export final report to your GL
For most tenants, the daily automated runs catch 99%+ — the manual monthly pass is a sanity check.