Skip to main content

Lender Apply start

Open a merchant → Overview → Credit products. Each product row has Direct apply URL with ⓘ About direct apply URLs. That URL is what the storefront Apply for finance button uses when Finance Assistant is off for that lender.

Finance Assistant start (calculator → enquiry → Bon Voyage) is a different path. Credentials live on App → Features → Finance Assistant cog → Finance Assistant Settings. Per-lender apply URLs on that Settings page are not the Credit products Direct apply URL.

How Apply launches from Bon Voyage, and how that differs from the credit-product Direct apply URL, follows below.

Credentials live on the merchant Finance Assistant Settings view (Features cog). Secrets are write-only. Leave a secret blank to keep the stored value. Save Snap settings, Save Zopa settings, Save Humm settings, Save Propensio settings, and Save product description settings each write one section. Save all settings publishes every section. Reload discards unsaved edits. Footer hint: Save each lender section independently so other lenders' credentials are not overwritten. Use Save all settings to publish every section above.

These buttons do not show a busy label. Success toast for a section is the section name plus settings saved. (Snap settings saved., Zopa settings saved., Humm settings saved., Propensio settings saved., Product description settings saved.). Save all settings toasts Finance Assistant settings saved. Empty payload toasts Nothing to save. Failure toast is the API message, or Failed to save settings. Do not paste secrets onto this public page.

The header has Enquiries, Back to Merchant, and Back to Merchants. Generate token on Zopa Settings mints the webhook token.

FinMatch reference on start​

Every Finance Assistant lender start (Zopa, Propensio, Snap, Humm) mints a FinMatch reference M{merchant}-P{partner}-R{sequence} on that start hop, before the lender is opened. The browser does not invent FM-{timestamp}-{slug}. It omits orderId / referenceId / faReference unless this Apply already holds a real M… (retry). The server never sends FM- to a lender. An existing M… for this merchant is reused and never re-attributed. Quote and landing pages do not mint.

If mint fails, the start returns 503. The customer sees We could not start your application just now. Please try again. The lender is not opened. Bon Voyage does not auto-open Direct apply URL / applyFinanceUrl on that failure. A short read-hold for the start response is not a timeout that falls back to a client slug.

The Applications ledger row is created at Apply / start, not on quote or landing. Staff table: Applications.

Direct apply URL​

ⓘ About direct apply URLs. On Credit products, Direct apply URL attaches a link to the Apply for finance button (for example a Humm app link).

  • Finance Assistant off for that lender → the button opens this URL.
  • Finance Assistant on → the start path must mint first. A failed start does not auto-open this URL.

Finance Assistant Settings → per-lender apply URLs are a different field (applyFinanceUrl in code), used only in the enquiry → Bon Voyage flow.

Snap​

Runs when Features → Finance Assistant includes Snap, credentials here are enabled, and the customer clicks Apply.

Journey: calculator → enquiry (name, email, mobile, address) → Bon Voyage → Snap SDK in-page.

What Snap gets​

FieldValue
Invoice numberThe R segment only (R + 8 digits, for example R00001042 = 9 characters). Snap’s schema max is 10. The full M…-P…-R… is faReference and is never sent as Snap’s invoice.
Loan amountCalculator loan (deposit already taken off)
CustomerEnquiry: name, email, mobile, address
Product descriptionGoods line from Product description logic
Merchant / client IDsCredentials on this page (secrets server-side only)

Start mints one full M…-P…-R… ID (faReference). Snap only receives the short R… invoice (R00001042 is 9 characters; Snap’s limit is 10). Direct apply URL is unused while FA is on for Snap.

Settings fields​

Snap Session Start Settings. ⓘ How Snap apply works in Bon Voyage. Subtitle: Configure Snap credentials per merchant. Secrets are write-only and never shown once saved.

  • Enable Snap session start
  • Default environment
  • Accordion Sandbox credentials: Sandbox merchant ID, Sandbox client ID, Sandbox client secret (optional), Sandbox secret status. Placeholders: Sandbox merchant ID, Sandbox client ID, secret Leave blank to keep existing.
  • Accordion Live credentials: Live merchant ID, Live client ID, Live client secret (optional), Live secret status. Placeholders: Live merchant ID, Live client ID, secret Leave blank to keep existing.

Humm​

Runs when Features → Finance Assistant includes Humm, Enable Humm start method is Yes, and the customer clicks Apply.

Journey: calculator → enquiry → Bon Voyage → finance-assistant builds a Humm URL → redirect (often login.shophumm.co.uk).

What Humm gets​

FieldValue
Store + amountHumm Store ID + quote amount (loan after deposit) on the redirect URL
Our orderIdFinMatch reference for logging only — not sent to Humm
Quote tool URLOptional; the server may call Humm quote tool for a referral link
Apply URL (sandbox/live)Fallback only. The server prefers the built login URL when Store ID + amount exist

Humm app deep links (hummuk.app.link/…) belong in Credit products → Direct apply URL with Finance Assistant off for Humm — not in the FA apply URL fields.

Settings fields​

Humm Start Finance Application Settings. ⓘ How Humm apply works in Bon Voyage. Subtitle: Credentials for the Finance Assistant Humm start flow. For static app links (e.g. hummuk.app.link), use Credit products → Direct apply URL instead.

  • Enable Humm start method
  • Default environment
  • Humm Store ID. Placeholder: Enter Humm Store ID.
  • Humm quote tool URL (optional). Placeholder: https://humm-uk-production-app.herokuapp.com/pca/quote-tool.
  • Accordion Sandbox settings: Sandbox apply finance URL, Sandbox API key (optional), Sandbox API key status. Apply-URL placeholder: https://.... Secret: Leave blank to keep existing.
  • Accordion Live settings: Live apply finance URL, Live API key (optional), Live API key status. Apply-URL placeholder: https://.... Secret: Leave blank to keep existing.

Zopa and Propensio​

  • Bon Voyage and Zopa Start — Zopa Settings, vertical ID (including 17 — Infinity Renewables Home Improvements Upper, distinct from 1 — Solar Panels (Supply & Install)), webhook.

Propensio​

Runs when Features → Finance Assistant includes Propensio, Enable Propensio is Yes, and the customer clicks Apply (or Share). Credentials are on the merchant Propensio (Aero API) Settings card.

Headless off (default)​

Calculator → enquiry → Bon Voyage → Propensio opens in a new tab.

Headless on​

Headless mode = Yes skips the enquiry page and Bon Voyage screen. Hint: When on, the Apply and Share buttons start the Propensio credit application immediately and open it in a new tab — no enquiry page or Bon Voyage. Applies to the calculator and modal in every mode (embedded and pop-up). Per-merchant only. Apply and Share still call the same start API (requestPropensioApplicationUrl()) as Bon Voyage and open the hosted Propensio form in a new tab. That applies to the calculator and modal in every mode (embedded and pop-up). It is per-merchant.

Headless still requires Enable Propensio = Yes. An enquiry row is still recorded (headless: true). Customer is - (no name/email). The enquiry email is not sent (headless_enquiry). Contact details are collected on Propensio’s form.

Pending on that row means a Propensio session was persisted after /api/url returned a hosted URL — a real application was started, not a preview.

What Propensio gets​

FieldValue
reference_idSame FinMatch reference as Admin Submission ID / webhook key (M…-P…-R…)
order_valuePurchase price in pence
deposit_amountSee Propensio apply deposit
order_descriptionOrder description on this page (max 240 characters). Not the dynamic product-description checkboxes.
product_categoryDefault product category on this page. This is a goods host code (what is being financed), not a FinMatch credit product id, term, or APR.
API token / media codeCredentials on this page (token server-side only)
return_urlCurrent page URL

We do not send FinMatch credit product id, name, term, or APR to Propensio. The hosted Propensio form is where the shopper chooses a product. Direct apply URL is unused while Finance Assistant is on for Propensio. The primary path is the Propensio Aero API.

What Propensio returns​

This is live in production. The finance-decision webhook body is only:

  • reference_id (our FA reference)
  • finance_decision (approved | declined | referred)
  • loan_amount (agreed loan, pence)
  • application_id (Originate id, may be null)

No term, APR, product name, or FinMatch product id. Aryza Originate STATUS_CHANGE is workflow codes/descriptions only (for example Conditional Accept → Auto Refer). There is no product block.

That is unlike Zopa, which does send product: { productType, apr, term, deferredPeriod } and we store it.

After decision, Admin Enquiries already show Agreed loan from loan_amount. We cannot later fill a credit-product name, term, or APR from Propensio.

Admin Enquiries: Credit Product column​

Live today: the Credit Product column can show our calculator snapshot of the first eligible product even when the shopper never saw a dropdown and we did not send that product to Propensio. Headless does not change that. Treat that name as our snapshot, not “what Propensio received” and not “what the shopper selected”.

Agreed, not shipped (James, 2026-09-01): gate the column on whether the credit-product dropdown was shown (mergedElements.creditProduct.enabled === true), not on FCA status and not on “we had a product in memory”.

  • Dropdown shown: keep snapshot (id, name, term, apr).
  • Dropdown hidden (typical Not authorised Quick-Start): omit financeDetails.creditProduct. The table already renders - when name is empty. Optional expanded-tile copy: Not shown — product chosen on Propensio.
  • Keep using first eligible product internally for deposit rules / eligibility. Do not copy that name into the Credit Product column.
  • Headless uses the same rule. If there was no dropdown, the column should be - from start and stay - after webhook. Purchase / deposit / loan, then agreed loan + status, are the real record.

Do not document that rule as live until a finmatch-p runtime PR lands.

Settings fields​

Propensio (Aero API) Settings. ⓘ How Propensio apply works in Bon Voyage. Subtitle: Configure Propensio credentials used to start the hosted credit application and verify return webhooks. API tokens and the webhook secret are write-only and never shown once saved.

  • Enable Propensio credit application
  • Default environment
  • Default product category
  • Headless mode
  • Order description (Propensio only). Counter: 0 characters — target 80, max 240 sent to Propensio. Hint: Sent as order_description to Propensio. This replaces the auto-detected Snap-style line for Propensio only. Other lenders keep using the dynamic builder below. Placeholder: e.g. Renewable energy system from SuperSolar as per attached invoice.
  • Media code. Placeholder: Propensio merchant identifier.
  • Webhook secret (optional), Webhook secret status. Secret: Leave blank to keep existing.
  • Webhook URL (send to Unspun / Neil). Hint: One platform URL for all merchants. Neil registers this on Unspun’s side. We route by reference_id in the POST body. Platform secret: Cloud Run env PROPENSIO_WEBHOOK_SECRET (same value Neil gave you — not Cloudflare). Hint: Per-merchant webhook secret below is legacy fallback only. See cloud-run/finance-assistant/docs/PROPENSIO_WEBHOOK_SETUP.md.
  • Accordion Test (sandbox) API token: Test API token (optional), Test API token status
  • Accordion Live API token: Live API token (optional), Live API token status

Product description​

Product description logic. ⓘ How product description is built. Subtitle: How goods/services text is built for Finance Assistant start flows and enquiry emails. Propensio uses the merchant-defined order description above; other lenders listed below use the dynamic page-context builder.

Controls the goods/services line for enquiry emails and for lenders that auto-build description from page context.

  • Propensio: uses the Order description field in Propensio settings (static merchant text). Propensio does not use these checkboxes. It always uses the static Order description in Propensio settings.
  • Snap, Humm, Zopa: auto-build from page context using the parts below. Turn off any part you do not want included. Bon Voyage builds a line from enabled parts on Product description logic: Include merchant name (Goods/services from …), Include detected product name, Include page meta title, and Include page URL. Preview (dynamic lenders) shows the live result for the current merchant page context.
  • That line is used for Snap transaction description, enquiry email body, and similar start-flow metadata — not Propensio order_description.