Resolved bankId — joined through product_route_version → vendor → bank. Reflects what the resolver actually picked. null when the
route's vendor is non-bank (e.g. cfx).
The pinned matcher criteria the resolver evaluated against.
Reconstructed fee template — per-receiver line items.
The caller's bankId hint, if any (narrows route selection). Audit
row column; distinct from the resolved bankId above.
What the unconditional limit evaluation concluded, independent of the
caller's bypassLimits. null on rows where no evaluation ran (INACTIVE,
LEGACY, pre-migration). Differs from outcome exactly when a bypassed
quote would have been blocked — which is the only way to see that from
the audit trail.
Earliest settle-by date. null on pre-migration rows (column was
added 2026-05-11); service rebuild uses the current product config
to recompute as a fallback.
Snapshot of providerFeeVisible at quote time.
Concrete amounts. null when the original input was amount-less.
Numeric FKs to the pinned version rows, exposed so callers that need
deep version-row context (admin diff views, the quote() replay
rebuild) can resolve them without re-querying the audit row.
External id of the vendor the resolver picked
(product_vendor.external_id). Never null — the vendor join is INNER.
This is the dispatch key for consumers that must branch on which vendor won; bankId cannot serve that purpose, because it is null for every vendor that fronts banks rather than being one.
Limit-violation breakdown. Non-null iff outcome === 'LIMIT_EXCEEDED'.
Customer-scoped projection of a
product_quoteaudit row. Mirrors the fields needed by both audit-trail readers (admin dashboards, customer receipts) and thequote()idempotency-replay path: every field needed to rebuild the original quote'sQuoteOutputfrom the row alone is here.Internal numeric ids and FKs are dropped in favour of external IDs.
feesis the per-receiver fee snapshot reconstructed from the tier- tagged columns (cfx_*,customer_*,provider_*).inputAmountis the discriminated union the caller originally passed (or null for fee-only quotes).