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

Match simulation


Preview how a single rule — an existing configured rule (ruleId) or an inline candidate rule (rule) — would match a context’s unmatched transactions, without committing anything.
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, a bounded sample of would-match pairs (each with a confidence score and per-component rationale), and the per-side unmatched counts:
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). A pair that only matches after fee normalization, inside the FX band, or via allocation is not counted here.

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 are strictly read-only: they never persist a run, group, item, rule, or transaction, and the tenant is always taken from the JWT.

Response codes