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).
ruleId: preview an existing configured rule of the context.rule: preview an un-persisted candidate definition (typeis one ofEXACT,TOLERANCE,DATE_LAG,FUZZY, plus itsconfig).
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. In why, the booleans report whether the two amounts, currencies, and dates are equal, not the score components:
Scope: the simulation reads at most 5,000 of the context’s unmatched transactions, and the context’s sources must resolve into two sides. It scores by the deterministic rule engine over the raw transaction amounts. It does not apply run-time fee normalization, FX conversion, 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, after FX conversion, inside the FX band, or via allocation.
Fee simulation
Calculate fees for a given gross amount using a specific fee schedule.
currency must equal the schedule’s currency. Use it to validate a schedule’s rules before you attach it to a context.
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.

