What is an exception?
An exception is created when a transaction from one source has no valid counterpart in another source. Common causes include:
- No candidate found: No transaction in the other source meets the active rule criteria.
- Below confidence threshold: Candidates exist, but score below the minimum confidence (default: 60).
- Duplicate rejection: A previous match was rejected and no alternative candidate remains.
- Source imbalance: One source contains transactions that are missing from the other.
Exception lifecycle
Exceptions move through a simple workflow:
- When Matcher can’t reconcile a transaction, it creates an exception in
OPENstatus. - From there, an analyst picks it up for investigation (
IN_REVIEW). Most exceptions resolve directly after investigation. - If the resolution requires approval—like a write-off above a certain threshold—the exception moves to
ESCALATED. - A supervisor can then approve and close it, or return it with guidance for further review.

Status definitions
| Status | Description | Who Can Transition |
|---|---|---|
OPEN | New exception waiting for assignment | System, Analyst |
IN_REVIEW | Assigned to a reviewer for investigation | Analyst |
ESCALATED | Requires approval before resolution | Analyst, Supervisor |
RESOLVED | Closed with an auditable resolution | Analyst, Supervisor |
Exception severity
Matcher classifies exceptions by severity so you can work the queue in the right order.
| Severity | Criteria | SLA |
|---|---|---|
| Critical | Amount >= 100,000 OR Age >= 5 days OR Regulatory source flag | Resolve within 24 hours |
| High | Amount >= 10,000 OR Age >= 3 days | Resolve within 48 hours |
| Medium | Amount >= 1,000 OR Age >= 1 day | Resolve within 72 hours |
| Low | All others | Resolve within 5 business days |
Severity escalation
Severity can increase automatically as an exception ages:Viewing exceptions
List exceptions for a context
cURL
Response
Get exception details
cURL
Response
Filter exceptions
Resolution methods
You can resolve an exception in four ways.
1. Force match
Manually link transactions when you’ve confirmed they belong together, but the system couldn’t match them.cURL
Response
- The correct counterpart exists, but variances blocked automatic matching.
- You can clearly explain and document the rationale.
- The variance is expected (fees, timing, rounding).
2. Create adjustment
Create an adjusting entry to account for a variance or to balance an unmatched item.cURL
Response
| Type | Use Case |
|---|---|
BANK_FEE | Bank charges not recorded in the ledger |
FX_VARIANCE | Currency conversion differences |
TIMING_DIFFERENCE | Settlement timing adjustments |
ROUNDING | Small rounding differences |
CORRECTION | Error corrections |
OTHER | Other documented variances |
3. Write-off
Write off a transaction that has no valid counterpart. This should be rare and typically requires approval.cURL
Response
| Reason | Description |
|---|---|
DUPLICATE_ENTRY | Transaction was entered twice |
CANCELLED | Transaction was reversed or cancelled |
NOT_APPLICABLE | Doesn’t belong in this reconciliation scope |
BELOW_THRESHOLD | Amount is below the investigation threshold |
APPROVED_VARIANCE | Variance approved by management |
4. Split transaction
Use split when one transaction should match multiple counterparts.cURL
Response
Exception assignment
Assign exceptions to the right owner before you start resolving.
Assign single exception
Bulk assignment
Auto-assignment rules
Automate routing so exceptions land with the right team by default:Escalation workflow
Escalate when the resolution needs approval.
Escalate an exception
cURL
Response
Approve or return escalation
Approve:Audit requirements
Every resolution creates an audit record. Some resolution types require stronger evidence and approvals.
Required documentation by resolution type
| Resolution | Required Fields | Approval Needed |
|---|---|---|
| Force Match | reason, notes | No (unless amount > threshold) |
| Adjustment | adjustment_type, amount, description | If amount > $1,000 |
| Write-Off | reason, notes, reference_document | Always |
| Split | splits[] with amounts and targets | No |
View audit trail
Response
Exception resolution workflow
Use this flow to keep reviews consistent and audit-friendly.
Investigate
Use the exception payload to understand what failed and what candidates exist.
- Read
reason_detailsto see why matching failed. - Review
candidatesfor near matches below threshold. - Look for patterns (same counterparty, recurring reference formats).
Resolve
Pick the resolution that best reflects reality and policy.
- Force Match: You found the correct counterpart.
- Adjust: You need an adjusting entry for variance.
- Split: One transaction maps to multiple counterparts.
- Write-Off: No counterpart exists and policy allows it (approval required).
Document
Capture enough detail for someone else to replay your decision later:
- What you checked
- What you concluded
- Links or IDs for supporting evidence
Best practices
Work by severity and SLA
Work by severity and SLA
Start with Critical and High items. They carry the highest risk and the tightest deadlines.
Make decisions auditable
Make decisions auditable
Notes aren’t optional. Treat them as part of the resolution:
- What you checked
- Why this resolution is correct
- Any ticket IDs, statements, or confirmations
Fix patterns at the source
Fix patterns at the source
Repeating exceptions usually point to configuration issues:
- Same counterparty → Normalize names or mapping
- Same date window → Validate ingestion completeness
- Same source → Review field mapping and sign conventions
Treat force matches as exceptions to the rule
Treat force matches as exceptions to the rule
If you force-match regularly, your rules or tolerances need attention.
Route work automatically
Route work automatically
Use assignment rules to reduce triage time and keep ownership clear.
Write-offs are policy calls
Write-offs are policy calls
If you write off often, revisit thresholds, context scope, or upstream data quality.

