Credit products
Open Credit Products from Admin → Lenders → a lender card (the
default tab). Add Credit Product opens the popup editor. Row
Actions is Edit (or Save Table / Cancel in Table
mode). Delete is on the popup. Without admin:lenders:write (and
not an admin role), those actions alert You do not have permission to
edit credit products. The catalogue writer is
credit-products-api — see Rate Cards.
Merchant assignments (which SKUs a shop uses, including Min Deposit %) are a different save: merchant Lender card → Save credit products. See Calculator deposit dropdown.
Do not paste live APR ladders or SKU pound figures into these docs.
gs://finmatch-admin is public.
Table
Columns: Product ID, Credit Product, Term, Number of Repayments, APR, APR Type, Annual APR, Min Amount, Max Amount, Rate Factor, First Payment Type, First Payment Due, First payment amount/factor, Actions.
After the page script runs, the live table is wider than that static HTML. Extra columns: Transaction events, Display, Event count, Event frequency, Event interval, Payment timing, Payment offset value, Payment offset unit, Calculation method, Event amount, Event rate factor, Transaction event summary (internal helper).
Header buttons next to Add Credit Product: Credit products JSON, Lender-originated quotes JSON, and Credit product assignment. The assignment matrix loads with Loading merchant assignments…. Empty copy is No merchants assigned to this lender. Empty catalogue table: No products found. Catalogue load row: Loading rate card products.... Back to Lenders returns to the catalogue. Subtitle Credit products for this lender. Tab links Credit Products, Lender Settings, and API.
The sticky bar above the table is Edit mode (Popup / Table), Quotes, Timing, and Legacy columns (Show / Hide). Same chrome as Lenders Rate Card Products. Catalogue chrome. Table mode: row Edit inlines the row; Save Table writes; Cancel discards. Popup (default): row Edit opens the popup editor. Row Actions is Edit (or Save Table / Cancel) — Delete is on the popup, not the row.
Popup editor
Tabs: Edit credit product and Lender benchmarks. Badge P env (source-of-truth) means saves go to the shared catalogue, not an env bucket copy. Save, Cancel, and Delete sit under the form.
Save
Click Save on the popup. Failures stay in the editor — they paint the red error strip above Save / Cancel / Delete. The overlay does not close.
Create-mode identity checks, in order:
- Product ID is required
- Lender is required
- Lender Type is required
- Term is required
- Credit product is required
- APR is required
- Number of repayments must be a number (only when that field is filled with a non-number)
Edit mode skips the Product ID check. The same strip also shows
event-model throws (transaction_events must include a
regular_payment event., Conditional Behaviors must be a JSON
array, customer_deposit must not be authored as a transaction
event. Model deposit-dependent logic in conditional_behaviors.) and
API message / error (fallback Request failed plus the status).
Success closes the overlay and reloads the table.
Identity and term
- Product ID — catalogue id (for example
am0000-024M). Placeholder:e.g. am0000-024M. - Lender — slug; matches the lender you opened. Placeholder:
e.g. klarna. - Lender Type — personal or business.
- Credit Product — display name. Placeholder:
credit_product. - Term (months) and Number of Repayments.
Rates and limits
- APR placeholder:
e.g. 0% / 4.9% - APR Type placeholder:
e.g. fixed - Annual APR placeholder:
annual_interest_rate - Rate Factor placeholder:
rate_factor - Year 1 Interest Factor — shown only when that lender uses it. Placeholder:
year_1_interest_factor. - Min Amount and Max Amount — eligibility band for this SKU. Do not paste SKU pound figures onto this page.
Field placeholders
Popup editor placeholders above (and event-card / table ones below) are fail-closed. Skip Min/Max Amount pound examples and the JSON textarea examples on transaction_events / conditional_behaviors (single-quoted in source). {Count} stays in backticks.
- Event Event name:
e.g. Regular payment - Event Display:
e.g. 24 monthly payments - Lender benchmarks Loan amounts add-row:
e.g. 3000 - Inline table Display when editing:
e.g. {Count} monthly payments
Transaction Events
Transaction Events is the internal schedule (JSON array). Customer deposit is not a standard lender event; model it with conditional behaviors.
Event cards:
- Event ID (readonly)
- Event Type, Event name, Count
- Calculation Method
- Frequency, Interval
- Payment Timing (applies to first + repeats)
- Payment Offset Value and Payment Offset Unit when timing is offset from event start
- Display
Raw JSON fields: transaction_events and conditional_behaviors. Projected Legacy Output (Preview) shows the derived legacy first-payment shape for older consumers. + Add Next Event appends another event card. Copy JSON copies the View JSON modal.
Lender benchmarks
Loan amounts plus expected quote values. Runtime figures are read-only. Diff % thresholds flag when a live quote drifts from the benchmark. Quote-column ⓘ title: How diff thresholds work. + Add quote appears when a row has no quotes.
The Lender benchmarks tab empty states: Quote helpers unavailable. and Save product once to enable Quote editor.
Inline table edit uses Save Table and + Add Event.
Event-chain pills: hover Drag to reorder. Empty: No events yet. Hint: Drag pills to reorder sequence.