Display name of the route's bank, resolved off the vendor's bank FK; null when the route has no bank.
What the activation / fee / limit matchers saw: caller criteria, every
SQL-derived field and bankId (no clock fields). JSON form — numerics are
decimal strings.
Per-route operational knobs (timezone, quote TTL) snapshotted from
product_route_version.data. See ProductRouteVersionData.
Tier the picked fee rule lives on.
Calendar-month max transaction count.
Calendar-month max in USD; resets at local midnight on the 1st of
each month in the product's cutoffTimezone.
program.external_id of the route version: the account's program, or a
sub-account provider's. The version's matcher carries a programIds
clause on it, so a placement resolved here holds a grant on it.
External id of the vendor that produced this resolution
(product_vendor.external_id) — dart, route_fusion, metcap, cfx.
This is the dispatch key for anything downstream that must act on which
vendor won, and bankId is not a substitute: bank_id is NULL on
every vendor that fronts banks rather than being one, so a bankId-only
branch cannot separate route_fusion from cfx from self_custody and
silently treats all of them as its default case.
Never null — the vendor join is INNER, because a route without a vendor cannot be resolved at all.
bank_account.external_idthe route version moves money through; null when it names none.