Skip to main content
Confidence scores indicate the reliability of an automated match on a scale of 0-100. Higher scores mean greater certainty that two transactions represent the same financial event.

Overview


When Matcher identifies a potential match, it assigns a confidence score based on multiple factors. This score defines how the match is handled:
  • High scores (90+) are auto-approved
  • Mid-range (60 – 89) scores require review
  • Low scores (<60) are treated as exceptions
Matcher Confidence Scoring

Score components


Matcher uses a weighted scoring system with four components:
ComponentWeightDescription
Amount match40%How closely amounts align
Currency match30%Same currency verification
Date proximity20%Closeness of transaction dates
Rule satisfaction10%Match rule criteria met

Amount match (40%)

The amount component has the highest weight because amount discrepancies often indicate different transactions. Calculation:
amount_score = base_score - (variance_percent * penalty_per_percent)
VarianceScore ImpactExample
0% (exact)40/40 points1,000.00vs1,000.00 vs 1,000.00
0.1% - 0.5%38-40 points1,000.00vs1,000.00 vs 1,003.00
0.5% - 1.0%35-38 points1,000.00vs1,000.00 vs 1,008.00
1.0% - 2.0%30-35 points1,000.00vs1,000.00 vs 1,015.00
2.0% - 5.0%20-30 points1,000.00vs1,000.00 vs 1,040.00
> 5.0%0-20 points1,000.00vs1,000.00 vs 1,060.00
Configuration:
{
  "scoring": {
    "amount": {
      "weight": 40,
      "exact_match_score": 40,
      "penalty_per_percent": 5,
      "min_score": 0
    }
  }
}

Currency match (30%)

Currency verification is binary—currencies either match or they don’t.
ScenarioScore
Same currency30/30 points
Different currency (no FX context)0/30 points
Different currency (FX enabled)Calculated based on rate variance
With FX context enabled:
{
  "scoring": {
    "currency": {
      "weight": 30,
      "same_currency_score": 30,
      "fx_enabled": true,
      "fx_rate_tolerance_percent": 2.0,
      "fx_penalty_per_percent": 10
    }
  }
}

Date proximity (20%)

Date scoring rewards transactions that occur on the same day and penalizes date gaps.
Date GapScore Impact
Same day20/20 points
1 day18/20 points
2 days16/20 points
3 days14/20 points
4-5 days10-12/20 points
6-7 days6-8/20 points
> 7 days0-5/20 points
Configuration:
{
  "scoring": {
    "date": {
      "weight": 20,
      "same_day_score": 20,
      "penalty_per_day": 2,
      "max_days": 14,
      "use_posting_date": false
    }
  }
}

Rule satisfaction (10%)

This component rewards matches that satisfy deterministic rule criteria beyond the basic comparisons.
Rule Match QualityScore
All rule conditions met10/10 points
Reference pattern matched+3 points
External ID matched+5 points
Counterparty matched+2 points
Rule satisfaction can exceed 10 points as a bonus, but the component is capped at 10 in the final calculation.

Calculation formula


The complete confidence score formula:
confidence_score =
 (amount_score * 0.40) +
 (currency_score * 0.30) +
 (date_score * 0.20) +
 (rule_score * 0.10)

API response

When Matcher proposes a match, the response includes detailed scoring:
{
  "match_id": "match_001",
  "confidence": 87,
  "confidence_breakdown": {
    "amount": {
      "weight": 40,
      "score": 38,
      "weighted_score": 15.2,
      "details": {
        "variance_amount": 5.0,
        "variance_percent": 0.5
      }
    },
    "currency": {
      "weight": 30,
      "score": 30,
      "weighted_score": 9.0,
      "details": {
        "source_currency": "USD",
        "target_currency": "USD",
        "match": true
      }
    },
    "date": {
      "weight": 20,
      "score": 16,
      "weighted_score": 3.2,
      "details": {
        "source_date": "2024-01-15",
        "target_date": "2024-01-17",
        "gap_days": 2
      }
    },
    "rule": {
      "weight": 10,
      "score": 10,
      "weighted_score": 1.0,
      "details": {
        "rule_id": "rule_002",
        "rule_name": "1% Tolerance",
        "conditions_met": [
          "amount_tolerance",
          "date_tolerance"
        ]
      }
    }
  },
  "transactions": {
    "source": {
      "id": "txn_001",
      "amount": 1000.0
    },
    "target": {
      "id": "txn_002",
      "amount": 1005.0
    }
  }
}

Calculation examples


Exact match (score: 100)

Two transactions with identical values on the same day:
FieldSourceTargetComponent Score
Amount$1,000.00$1,000.0040/40
CurrencyUSDUSD30/30
Date2024-01-152024-01-1520/20
RuleExact match10/10
Final Score: 100
{
  "confidence": 100,
  "confidence_breakdown": {
    "amount": {
      "score": 40,
      "weighted_score": 16.0
    },
    "currency": {
      "score": 30,
      "weighted_score": 9.0
    },
    "date": {
      "score": 20,
      "weighted_score": 4.0
    },
    "rule": {
      "score": 10,
      "weighted_score": 1.0
    }
  }
}

High confidence match (score: 87)

Small amount variance with a 2-day date gap:
FieldSourceTargetComponent Score
Amount$1,000.00$1,005.00 (0.5%)38/40
CurrencyUSDUSD30/30
Date2024-01-152024-01-1716/20
RuleTolerance match10/10
Calculation:
  • Amount: 38 × 0.40 = 15.2
  • Currency: 30 × 0.30 = 9.0
  • Date: 16 × 0.20 = 3.2
  • Rule: 10 × 0.10 = 1.0
  • Total: 28.4 → Normalized to 87

Medium confidence (score: 72)

Larger variance requiring review:
FieldSourceTargetComponent Score
Amount$1,000.00$1,025.00 (2.5%)28/40
CurrencyUSDUSD30/30
Date2024-01-152024-01-1912/20
RuleTolerance match8/10
Calculation:
  • Amount: 28 × 0.40 = 11.2
  • Currency: 30 × 0.30 = 9.0
  • Date: 12 × 0.20 = 2.4
  • Rule: 8 × 0.10 = 0.8
  • Total: 23.4 → Normalized to 72

Low confidence (score: 55)

Significant variances—treated as exception:
FieldSourceTargetComponent Score
Amount$1,000.00$1,080.00 (8%)15/40
CurrencyUSDUSD30/30
Date2024-01-152024-01-254/20
RuleWeak match5/10
Final Score: 55 (Below threshold, becomes exception)

Confidence tiers


Matcher categorizes matches into tiers based on score:
TierScore RangeSystem BehaviorTypical Volume
Auto-Approved>= 90Automatically confirmed70-80%
Needs Review60-89Queued for manual review15-25%
Exception< 60Treated as unmatched5-10%

How confidence tiers are applied

When Matcher proposes a match, it evaluates the confidence score and applies the following steps:
  1. If the score is 90 or higher, the match is automatically confirmed.
  2. If the score is between 60 and 89, the match is queued for manual review.
  3. If the score is below 60, no match is created and the transaction becomes an exception.
  4. Reviewed matches can be either confirmed or rejected, updating their final status.
This ensures high-confidence matches flow automatically while keeping human control where it matters.

Customizing thresholds


Context-level configuration

Set thresholds per reconciliation context:
cURL
curl -X PATCH "https://api.matcher.example.com/v1/contexts/ctx_abc123" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "settings": {
     "confidence": {
       "auto_approve_threshold": 95,
       "review_threshold": 70,
       "exception_threshold": 70
     }
   }
 }'

Response

{
  "id": "ctx_abc123",
  "name": "Bank Reconciliation",
  "settings": {
    "confidence": {
      "auto_approve_threshold": 95,
      "review_threshold": 70,
      "exception_threshold": 70
    }
  }
}

Threshold recommendations

Use CaseAuto-ApproveReviewException
High-volume, low-risk>= 8555-84< 55
Standard reconciliation>= 9060-89< 60
High-value, high-risk>= 9570-94< 70
Compliance-critical>= 9880-97< 80

Customizing weights


Adjust component weights based on your reconciliation needs:
cURL
curl -X PUT "https://api.matcher.example.com/v1/contexts/ctx_abc123/scoring" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "weights": {
     "amount": 50,
     "currency": 20,
     "date": 20,
     "rule": 10
   },
   "penalties": {
     "amount_per_percent": 8,
     "date_per_day": 3
   }
 }'

Response

{
  "context_id": "ctx_abc123",
  "scoring": {
    "weights": {
      "amount": 50,
      "currency": 20,
      "date": 20,
      "rule": 10
    },
    "penalties": {
      "amount_per_percent": 8,
      "date_per_day": 3
    },
    "updated_at": "2024-01-20T10:00:00Z"
  }
}

Weight guidelines

ScenarioRecommended Weights
Bank statement matchingAmount: 40%, Currency: 30%, Date: 20%, Rule: 10%
Payment gatewayAmount: 35%, Currency: 25%, Date: 15%, Rule: 25%
IntercompanyAmount: 30%, Currency: 20%, Date: 10%, Rule: 40%
High-volume retailAmount: 45%, Currency: 30%, Date: 15%, Rule: 10%

Score auditing


View score history

curl -X GET "https://api.matcher.example.com/v1/matches/match_001/score-history" \
 -H "Authorization: Bearer $TOKEN"

Response

{
  "match_id": "match_001",
  "score_history": [
    {
      "timestamp": "2024-01-20T10:00:00Z",
      "confidence": 87,
      "breakdown": {
        "amount": 38,
        "currency": 30,
        "date": 16,
        "rule": 10
      },
      "version": "1.0"
    }
  ]
}

Score simulation

Test how scoring changes affect existing data:
curl -X POST "https://api.matcher.example.com/v1/contexts/ctx_abc123/scoring/simulate" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "weights": {
     "amount": 50,
     "currency": 20,
     "date": 20,
     "rule": 10
   },
   "sample_size": 1000
 }'

Response

{
 "simulation_id": "sim_001",
 "current_config": {
 "auto_approved": 720,
 "needs_review": 200,
 "exceptions": 80
 },
 "proposed_config": {
 "auto_approved": 680,
 "needs_review": 230,
 "exceptions": 90
 },
 "impact": {
 "auto_approved_change": -40,
 "needs_review_change": +30,
 "exceptions_change": +10
 }
}

Machine learning enhancement


For contexts with sufficient historical data, Matcher can use ML to improve scoring accuracy.

Enable ML scoring

curl -X POST "https://api.matcher.example.com/v1/contexts/ctx_abc123/scoring/ml" \
 -H "Authorization: Bearer $TOKEN" \
 -H "Content-Type: application/json" \
 -d '{
   "enabled": true,
   "model_type": "gradient_boost",
   "training_data": {
     "min_samples": 10000,
     "include_rejections": true
   }
 }'

Ml score factors

When ML is enabled, additional factors are considered:
FactorDescription
Historical patternsSimilar transaction patterns from past matches
Counterparty behaviorKnown variance patterns per counterparty
Seasonal adjustmentsTime-of-month and day-of-week patterns
Amount clusteringTransaction amount groupings

Best practices


The default 40/30/20/10 weights work well for most reconciliation scenarios. Only adjust after analyzing match patterns.
Track the percentage of transactions in each tier. Unusual shifts may indicate data quality issues or threshold misconfiguration.
Always simulate scoring changes before applying. This prevents unexpected increases in manual review volume.
Record why specific thresholds were chosen. This helps during audits and when onboarding new team members.
Periodically review matches just above the exception threshold. These often reveal opportunities for rule improvements.
Higher auto-approve thresholds reduce risk but increase manual work. Find the balance appropriate for your organization.

Next steps