Skip to main content
Exception routing defines how unmatched transactions are classified, assigned, and escalated. This guide describes severity classification, assignment rules, SLA tracking, and integrations with external workflow systems.

Severity classification


Exceptions are automatically classified by severity to prioritize review and resolution.

Default severity rules

SeverityDefault criteriaSLA
CriticalAmount ≥ 100,000 OR age ≥ 5 days OR regulatory source24 hours
HighAmount ≥ 10,000 OR age ≥ 3 days48 hours
MediumAmount ≥ 1,000 OR age ≥ 1 day72 hours
LowAll other cases5 business days
Severity directly affects SLA deadlines, escalation behavior, and routing priority.

Customizing severity rules


cURL
curl -X PUT "https://api.matcher.example.com/v1/contexts/ctx_abc123/severity-rules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "rules": [
     {
       "severity": "CRITICAL",
       "conditions": {
         "operator": "OR",
         "rules": [
           {
             "field": "amount",
             "operator": ">=",
             "value": 50000
           },
           {
             "field": "age_days",
             "operator": ">=",
             "value": 3
           },
           {
             "field": "source.regulatory",
             "operator": "==",
             "value": true
           }
         ]
       },
       "sla_hours": 12
     },
     {
       "severity": "HIGH",
       "conditions": {
         "operator": "OR",
         "rules": [
           {
             "field": "amount",
             "operator": ">=",
             "value": 10000
           },
           {
             "field": "age_days",
             "operator": ">=",
             "value": 2
           }
         ]
       },
       "sla_hours": 24
     },
     {
       "severity": "MEDIUM",
       "conditions": {
         "operator": "OR",
         "rules": [
           {
             "field": "amount",
             "operator": ">=",
             "value": 1000
           },
           {
             "field": "age_days",
             "operator": ">=",
             "value": 1
           }
         ]
       },
       "sla_hours": 48
     },
     {
       "severity": "LOW",
       "conditions": {
         "default": true
       },
       "sla_hours": 120
     }
   ]
 }'

Severity condition fields

FieldTypeDescription
amountDecimalTransaction amount
age_daysIntegerDays since exception creation
currencyStringCurrency code
source.typeStringSource type (BANK, LEDGER, etc.)
source.regulatoryBooleanRegulatory source indicator
source.directionStringINTERNAL or EXTERNAL
reasonStringException reason code

Assignment routing


Assignment routing ensures exceptions reach the appropriate teams automatically.

Create routing rules

cURL
curl -X POST "https://api.matcher.example.com/v1/contexts/ctx_abc123/routing-rules" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "rules": [
     {
       "name": "High-Value to Senior Team",
       "priority": 1,
       "conditions": {
         "amount": {
           "operator": ">=",
           "value": 50000
         }
       },
       "action": {
         "assign_to_group": "senior-analysts",
         "notify": [
           "[email protected]"
         ]
       }
     },
     {
       "name": "Bank Exceptions to Treasury",
       "priority": 2,
       "conditions": {
         "source.type": {
           "operator": "==",
           "value": "BANK"
         }
       },
       "action": {
         "assign_to_group": "treasury-team"
       }
     },
     {
       "name": "Regulatory to Compliance",
       "priority": 3,
       "conditions": {
         "source.regulatory": {
           "operator": "==",
           "value": true
         }
       },
       "action": {
         "assign_to_group": "compliance-team",
         "notify": [
           "[email protected]"
         ],
         "escalate_after_hours": 4
       }
     },
     {
       "name": "Default Assignment",
       "priority": 100,
       "conditions": {
         "default": true
       },
       "action": {
         "assign_to_group": "reconciliation-team"
       }
     }
   ]
 }'

Routing actions

ActionDescription
assign_to_userAssign to a specific user
assign_to_groupAssign to a user group
notifySend notifications
escalate_after_hoursTrigger escalation after a defined delay
create_ticketCreate an external ticket
webhookSend data to a webhook endpoint

User groups

User groups allow scalable and resilient assignment strategies. Assignment methods:
  • round_robin: Even distribution
  • least_loaded: Assign to the user with the fewest open exceptions
  • random: Random selection
  • all: Notify all group members

SLA tracking


SLA tracking monitors exception aging and triggers warnings or escalations when thresholds are reached.

SLA configuration

cURL
curl -X PUT "https://api.matcher.example.com/v1/contexts/ctx_abc123/sla-config" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "business_hours": {
     "timezone": "America/New_York",
     "schedule": {
       "monday": {
         "start": "09:00",
         "end": "17:00"
       },
       "tuesday": {
         "start": "09:00",
         "end": "17:00"
       },
       "wednesday": {
         "start": "09:00",
         "end": "17:00"
       },
       "thursday": {
         "start": "09:00",
         "end": "17:00"
       },
       "friday": {
         "start": "09:00",
         "end": "17:00"
       }
     },
     "holidays": [
       "2024-01-01",
       "2024-12-25"
     ]
   },
   "escalation_rules": [
     {
       "trigger": "sla_warning",
       "condition": {
         "sla_remaining_percent": 25
       },
       "actions": [
         {
           "type": "notify",
           "recipients": [
             "assigned_user"
           ]
         },
         {
           "type": "notify",
           "recipients": [
             "[email protected]"
           ]
         }
       ]
     },
     {
       "trigger": "sla_breach",
       "condition": {
         "sla_remaining_percent": 0
       },
       "actions": [
         {
           "type": "escalate_severity"
         },
         {
           "type": "notify",
           "recipients": [
             "[email protected]"
           ]
         },
         {
           "type": "reassign",
           "to_group": "escalation-team"
         }
       ]
     }
   ]
 }'

SLA status values

StatusDescription
ON_TRACKWithin SLA
WARNINGApproaching SLA breach
BREACHEDSLA exceeded
PAUSEDSLA clock temporarily paused

Pause SLA clock

Use this when waiting for external input:
curl -X POST "https://api.matcher.example.com/v1/exceptions/exc_001/pause-sla" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "reason": "Waiting for bank confirmation",
   "expected_resume": "2024-01-20T09:00:00Z"
 }'

Integrations


Matcher integrates with external systems to support operational workflows.
  • JIRA: Use JIRA to track and resolve exceptions as issues.
  • ServiceNow: Create incidents for regulatory or operational exceptions.
  • Webhooks: Send exception events to custom systems in real time.
All integrations support:
  • Secure authentication
  • Retry and backoff
  • Bidirectional status updates (when enabled)

Monitoring and analytics


Use routing statistics to evaluate effectiveness:
  • Exception volume by severity
  • SLA breach rates
  • Routing rule distribution
  • Integration success and failure rates

Best practices


Begin with severity-based routing and expand as patterns emerge.
Group-based routing improves resilience and workload balance.
Align SLA targets with operational capacity.
Always test JIRA, ServiceNow, and webhook integrations in non-production environments.
Configure retries and alerts for critical notification paths.

Next steps