Skip to main content
Matcher exposes two read-only simulation endpoints so you can answer “what would happen?” before you commit configuration. They are match simulation (will this rule match?) and fee simulation (what fees would this schedule charge?). Neither persists anything.

Match simulation


Preview how a single rule would match a context’s unmatched transactions, without committing anything. Choose an existing configured rule (ruleId) or an inline candidate rule (rule).
Supply exactly one of:
  • ruleId: preview an existing configured rule of the context.
  • rule: preview an un-persisted candidate definition (type is one of EXACT, TOLERANCE, DATE_LAG, FUZZY, plus its config).
Supplying both, or neither, returns 400. sampleLimit (1–200, default 25) caps the returned would-match pairs. The response reports how many 1:1 groups the rule would form and the per-side unmatched counts. It also returns a bounded sample of would-match pairs, each with a confidence score and per-component rationale:
Scope: the simulation scores by the deterministic rule engine over the raw transaction amounts. It does not apply run-time fee normalization or the FX-variance band, and it previews only 1:1 pairwise grouping (no 1:N/N:M allocation). The simulation does not count a pair that only matches after fee normalization, inside the FX band, or via allocation.

Fee simulation


Calculate fees for a given gross amount using a specific fee schedule. Use it to validate a schedule’s rules before you attach it to a context.
The response returns the net amount, the total fee, and a per-item breakdown:
Fee simulation has no transaction metadata, so expression-fee items that require a transaction identifier surface their missing-identifier error as a 4xx. A missing schedule returns 404.

When to use each


Both endpoints remain strictly read-only. They never persist a run, group, item, rule, or transaction. The tenant always comes from the JWT.

Response codes