Send payment data as part of your existing integration — we normalize, structure, and reconcile it. Pull differences, AI-proposed resolutions, tickets, and comparisons back via API, and build whatever your team needs on top, kept entirely inside your own stack.
Ingest API
POST records from any source — ledgers, schemes, banks — no file formats to agree on
Normalize
Every payload is structured against a common schema the moment it lands
Reconcile Engine
Matching runs continuously in the background — no polling, no batch jobs to schedule
Differences API
Query unresolved breaks, filtered, paginated, and ready to render in your own UI
AI Resolutions
Suggested causes and fixes come back as structured fields, not free text to parse
Webhooks & Events
Subscribe to match, break, and resolution events — build on top in real time
Send
One call in, wherever payments already touch your stack.
Wire the ingest API into the same place you implement payments — a webhook handler, a settlement job, a ledger write. Records are validated and normalized on arrival.
request
POST /v1/records
Authorization: Bearer sk_live_••••••••
{
"source": "internal_ledger",
"records": [
{
"ref": "txn_9f21c",
"amount": 184.50,
"currency": "EUR",
"settled_at": "2026-07-09T14:02:00Z"
}
]
}
response
200 OK
{
"accepted": 1,
"normalized": [
{
"id": "rec_82ad1",
"ref": "txn_9f21c",
"schema": "ledger.v1",
"status": "reconciling"
}
]
}
Consume
Every result, structured and queryable.
Differences, AI-proposed resolutions, tickets, and side-by-side comparisons are all available as plain JSON — build your own dashboard, bot, or admin tool on top.
differences.json
GET /v1/differences?status=open
{
"differences": [
{
"id": "diff_3b7e0",
"check": "sepa_credit",
"delta": -2847.00,
"currency": "EUR",
"suggested_cause": "duplicate_file_rerun",
"confidence": 0.92,
"ticket_id": "tkt_20260708-11"
}
],
"next_cursor": "eyJpZCI6..."
}
API Reference
A small, predictable surface.
No SDK lock-in required — a handful of REST endpoints cover ingestion, querying, and workflow.
POST/v1/recordsSend raw records from any source — schema detected automatically
GET/v1/checksList every configured reconciliation check and its live match rate
GET/v1/differencesQuery unresolved breaks — filterable by check, age, and amount
GET/v1/differences/:id/resolutionFetch the AI-suggested cause, confidence, and proposed fix
POST/v1/ticketsOpen, assign, or close a ticket tied to a difference
GET/v1/checks/:id/comparisonSide-by-side totals and match rate for any check and period
POST/v1/webhooksRegister an endpoint for match, break, and resolution events
MCP
Also available: an MCP server for asking your data questions.
Alongside the API, we run an MCP server so an agent — yours or your team's — can look up differences, tickets, and resolutions in conversation. It's a companion for ad hoc lookups, not where you build your integration.
REST API
For your integration
Deterministic calls your code controls
Scheduled jobs, webhooks, and cron-driven pulls
Powers dashboards, bots, and automation at volume
Runs unattended, no LLM in the loop
MCP server
For looking things up
Ask an agent about open differences or a specific ticket
Trigger a one-off action mid-conversation
Useful for analysts, support, and exploring during dev
Not for scheduled jobs or high-volume automation
MCP calls the same API underneath — it isn't a separate backend or a replacement for it. If you're building the actual pipeline your ops tools run on, that's the REST API.
How it works
From raw record to reconciled data, over API.
1
Send
Push records from your systems the moment they exist — via API or event stream. No file exports, no scheduled uploads.
2
Reconcile
Records are normalized against a common schema and matched continuously. Every difference is scored and a likely cause attached.
3
Consume
Pull differences, resolutions, tickets, and comparisons back into your own tools — dashboards, Slack bots, or internal admin panels.
Why engineering-first
Same reconciliation. No UI required.
Operations gives an ops team a workspace to work inside. Engineering first gives your team the same matching engine as an API, so the workspace is whatever you already build internally.
Data stays yours
Consume results via API and store them wherever you already keep operational data. Nothing is locked behind our UI.
Built for your stack
REST API, typed SDKs, and webhooks — drop reconciliation into an existing service instead of asking a team to adopt a new tool.
Same engine, no UI required
The identical matching engine behind Operations runs headless here — you get the reconciliation, you build the interface.
Teams build things like
Internal ops dashboardsSlack / Teams alerting botsCustom exception queuesFinance close checklistsCustomer-facing status pagesData warehouse sync jobs
We use essential cookies to make this site work. We don't use tracking or advertising cookies. Privacy Policy