Lexington Capital — V1 One-Way Handoff (FM-2103 / FM-2104)
Status: Prep. Types, fixtures, and tests are in the repo; no new schema, no new UI, no network calls. Nothing here changes what operators see today. Code:lib/directLenders/lexingtonV1.ts · fixtures tests/fixtures/lexingtonV1Handoff.ts
· tests tests/lexingtonV1Handoff.test.ts.
Builds on: docs/direct-lenders/direct-lenders-v1-plan.md (Phase 1 shipped in PR #1343,
lender registrations and the reworked submit dialog in PR #1425).
External dependency (blocks the payload, not the manual flow)
Referring-party key — owed by Ty Talbot / Kevin Hill. Lexington has not told us which field on a submitted deal identifies the referring ISO (the operator). Until they do, the handoff record carries aWhat we know: the ISO signup link in the catalog carries anpending_externalmarker (LEXINGTON_REFERRING_PARTY_KEY) in place of the real key. Do not guess a field name.tests/lexingtonV1Handoff.test.tsfails if anyone fills it in withisoId,referrerId,affiliateId, or similar before Lexington confirms.
isoid query parameter that
points at the Funding Machine parent ISO account. That parameter is for signup. Whether
the same identifier, a per-operator child id, or something else attributes a deal is
exactly the open question. Ask Lexington for both the key name and where it goes (query
string on the application link, a form field, or a field in their portal).
The manual V1 flow does not wait on this: the operator submits through their own Lexington
ISO account, so attribution is implicit in that login. The key matters the moment FM
produces any structured payload on the operator’s behalf.
FM-2103 — Integration method
The module is guarded against drift: a test fails if
lexingtonV1.ts gains a fetch call or
a Convex import.
FM-2104 — Required fields, documents, eligibility, response handling
Required fields (FM side)
These are the fields FM must hold before a file can be handed to Lexington. They are the inputs toevaluateLexingtonV1Readiness and map to what the submit dialog already collects.
Not FM’s fields: owner name, entity details, requested amount, use of funds, and every
other application question. Lexington collects those from the client through the
application link (Kevin, 2026-07-29). FM does not model or store them.
Documents
Last 4 months of business bank statements, sourced from the client. Read from the catalog entry (ESTABLISHED_LENDERS → lexington_capital.requiredDocs) so there is one
definition. No signed application; the Established workflow does not use one.
Eligibility
A file is ready for Lexington when all of the following hold. Each failure is a named blocker so the dialog can show the operator exactly what is missing.
Warning (does not block):
no_client_email_copy_link_manually.
The exact-75k and routes
to Sandbar). Still awaiting Leo / Kevin confirmation per the V1 plan.
Response handling (one-way)
Handoff record
buildLexingtonV1Handoff(input) returns either { ok: false, readiness } with the blockers,
or { ok: true, handoff } where handoff is:
Out of scope for this prep
- Inventing the referring-party / attribution field.
- Callbacks, webhooks, polling, or any two-way status sync.
- New Convex tables (
lenderSubmissions, events) — still Phase 2 of the V1 plan and gated. - Billing, fees, or commissions math.
- Real submissions to Lexington. Fixtures are synthetic.
Next steps (not started)
- Ty / Kevin: get the referring-party key name and placement from Lexington.
- Confirm the exact-$75k boundary with Leo / Kevin.
- Decide whether the submit dialog should call
evaluateLexingtonV1Readinessto show named blockers, replacing its inline gating. Small, non-gated change.

