Send an onboarding link
Build the client’s link, copy a ready-made message, and see where their submission lands.
Build the link
Pick the product and add a referrer if you want the introduction credited. The link updates as you type.
Credits whoever introduced them.
Loads details you already staged.
Client types their Companies House number — everything else auto-fills.
One form opens both accounts.
Adds the referrer to their record. Stored to 60 characters.
Loads details staged in advance. Sent alongside p=, never instead of it.
Send it
Both messages already contain the link you built above. Copy, replace the name, send.
What the client does
About five minutes, in this order. Useful when they ring you halfway through.
- Enters their Companies House number — company and directors auto-fill.
- Confirms business details, contact, turnover and industry.
- Uploads three documents: certificate of incorporation, proof of business address, recent bank statement (PDF or photo).
- Adds each director with ID and proof of address, plus wallet, then signs the declaration.
- Submits. The bar must reach 25 of 25 and consent must be ticked before Submit enables.
Where submissions land
Everything flows into Supabase automatically. Nothing to file by hand.
| What | Where it goes |
|---|---|
| Form data | Table dbpay_ftpay_onboarding — one row per client, keyed by submission_ref. Status flips invited → submitted. |
| Documents | Private encrypted bucket dbpay-ftpay-docs/<submission_ref>/. Never public; service-role access only. |
| Due diligence | Runs automatically — Companies House, sanctions, scoring — writing dd_verdict, dd_score and dd_dossier_url onto the same row. |
| Security | Short-lived signed upload URLs, per-IP rate limits, keys server-side, consent and wallet-match enforced server-side. |
Live check
The portal publishes itself when a change merges, so there is no deploy step. Last end-to-end verification:
- Page
- 200 · 19,591 bytes · byte-identical to origin/main (sha256 a3f4d737179614bc…)
- Backend
- 6 of 6 functions live · lookup · prefill · intake · ch-doc · ocr-id · sign-upload
- Render
- 0 console errors · progress counter reads 1 of 25
- Checked
- 2026-09-04
Automating the final push into FTFT
The last step — pushing a verified pack into FTFT’s own portal — has no automation on our side [proof: no ftft push handler in _web/portal-netlify/netlify/functions/]. Wiring it needs a look at FTFT’s /mod/ “add client” screen: field labels, which are required, dropdown options, and whether it offers CSV or API rather than just the form.
No document exists for this and nothing is waiting on it. Everything above works and is sendable today; this only removes one manual re-key at the very end.
SME Growth Team OPERATIONS · DB PAY / FT PAY CO-BRANDED ONBOARDING · BLOCK surface.dbpay-ftpay-kyb-onboarding