LenderProductOffering rows that attach a product type to a
(lenderId, productType, jurisdiction) triple, with their own yield band + ticket envelope.
Routing then matches a merchant’s funding request against the active offerings — pre-filtered
by the lender’s excludedSectors[] so a jewelry shop never sees a lender that has opted
out of jewelry, even if the envelope would otherwise match.
At a glance
The 6 product types
These are the catalog typicals — defaults sourced from public UAE / GCC SME-credit market
data. They are not what a given lender will offer; each lender’s actual band is set on
their
LenderProductOffering rows and overrides the catalog typical at routing time.
Yield is denominated in basis points (100 bps = 1%). Ticket envelopes are denominated in
USD in the catalog, then translated per jurisdiction at the offering level (e.g. AED for
CredibleX-UAE rows).
For lenders: how to opt in
A lender doesn’t appear in any routing response until they have at least oneLenderProductOffering row marked status: 'ACTIVE'. The opt-in flow:
- Lender (or their onboarding rep) browses
GET /v2/lender-product-catalogto see the 6 product types and their typical bands. - Lender picks the products they want to support and, per product, the jurisdictions they want to lend into (often a single jurisdiction per lender; can be multi).
- Operator runs
POST /admin/lender-product-offeringsonce per(lenderId, productType, jurisdiction)triple with the lender’s actual yield band + envelope. The lender can override every catalog typical with their real numbers — and the routing layer uses those numbers, not the catalog defaults.
lenderYieldBpsMin/Max are supplied they override the catalog typical. When omitted
they fall through to the catalog default. Same applies to the ticket envelope and tenor.
status flips between ACTIVE (visible to routing) and PAUSED (hidden, kept for audit).
Deleting an offering is rare — operators prefer PAUSED so the lender can re-enable without
re-onboarding.
For merchants: how routing matches
A merchant doesn’t talk to the catalog directly. They request credit through the FE, which calls the lender-routing recommendation endpoint:- Jurisdiction — only lenders that have offerings in the merchant’s jurisdiction.
- Product — only offerings whose
productTypematches the request (when supplied — theproductTypefilter is opt-in, legacy callers without it are unchanged). - Envelope — only offerings where
monthlyRevenueAed >= minMonthlyRevenueandrequestedTicketAedfalls inside[ticketMin, ticketMax]and the merchant’smerchantIndustryis insupportedIndustries(or the offering’s industry list is empty). - Sector — any lender whose
Lender.excludedSectors[]contains the merchant’smerchantSectoris dropped, regardless of envelope match.
matchingOfferings[] list so the FE can render per-lender competitive
quotes:
Excluded sectors
Lender.excludedSectors[] is a free-string array on the lender document — a hard filter
applied after envelope match. The catalog ships a list of 9 common sector strings as a
UX hint so operators can pick from a consistent vocabulary, but lenders are free to add
custom strings outside the suggested list.
The catalog list is suggestion only. Routing only checks string equality against
Lender.excludedSectors[]; the source of truth is the lender’s own array.
Operators edit a lender’s exclusions via PATCH /admin/lenders/:lenderId/excluded-sectors
with the full replacement array — not a delta.
CredibleX-UAE reference example
CredibleX is the launch FSRA-licensed lender in jurisdiction AE. They are seeded on production with 4 ACTIVE offerings and 9 excluded sectors (all of the common 9 above), sourced from the UAE Qualifying Business Terms 2026 public underwriting policy.
A merchant in AE doing AED 1.5M / month in revenue, asking for AED 3M of RBF, will not
match CredibleX’s RBF offering (revenue floor is AED 20M). They will match the
INTEREST_FREE_RBF offering (revenue floor AED 2M) — and the routing response will show
that competitive line.
Related
- Inventory MCP — catalog discovery for agents; mostly orthogonal to lender routing but worth knowing
- Lender Trinity MCP Tools —
verify_lender/recommend_lender/recommend_service_provider; this catalog feeds the recommender - Trust fabric — Schema A / B / C / D EAS attestation chain
context; the
LenderRegistryis the entity layer this catalog sits on top of - Merchant Discovery Rules — KYB visibility rules for
the discovery surface; same
verifiedTiergate applies before a merchant can request credit through the routing layer