Routing Log
A per-payment, after-the-fact record of which providers were considered, in what order, and why.
Routing Log is a historical audit trail of routing decisions — not a live feed. Each payment produces one decision record: the ordered list of provider candidates the orchestrator considered, each one's priority tier and tie-break score, any providers skipped by the circuit breaker, and whether the country was blocked outright.
Not a real-time stream
This page previously described an "Event Stream" that pushed millisecond-level events
(route.evaluated, provider.attempt.failed, route.fallback, provider.attempt.succeeded)
as they happened. None of those event names exist, and there is no live/streaming view —
orchestration doesn't emit webhooks or push events to the UI at all. What's real is a paginated
list, refreshed on page load, of RoutingDecision snapshots recorded at the moment each payment
was routed.
/payments201412msMTN MoMo/payments/trx.PVrU8x2k20088msMTN MoMo/transfers202690msOrange Money/payments4021203msWave/balance20042ms—/payments5005012msCinetPayFilters
searchstringoptionalchannelstringoptionalproviderstringoptionaldate_start / date_enddateoptionaloutcomestringoptionalWhat a decision record shows
candidatesarrayoptionalcircuit_skippedarrayoptionalcountry_blockedbooleanoptionalchannel / currency / amountcontextoptionalprocessingsarrayoptionalRanking is deterministic and priority-first: a candidate's priority tier fully dominates the
order — a lower-priority provider is never tried ahead of a higher-priority one. The
tiebreak_score (rule match + least-cost boost + live success-rate telemetry) only decides
ordering within the same priority tier; among tied scores, selection is weighted-random by
each provider's configured weight.
What it's for
- Understand a decision: which providers were even eligible for this payment, and in what order were they ranked?
- Confirm a rule is contributing: check whether a candidate's
rule_boostis non-zero for the rule you expect to match — remember it only affects ordering within a priority tier, it never overrides priority itself. - Spot a stuck circuit breaker: a provider consistently appearing in
circuit_skippedreveals a provider your team can't currently route to.
From routing to the API call
Routing Log tells you which providers were considered and in what order; to see the actual HTTP exchange with a provider or the final response you sent your customer, cross-reference the same transaction in API Logs.