Embed funding in your product
Know which customers can get funding, show it inside your own product, and hand them a funding request that already knows what you know.
Most partners already hold what a funding request asks for: the company, its number, when it was formed, who owns it, who you deal with. The Partner API lets you use that, so your customer never types it twice, and so you only put funding in front of customers who can actually get it.
Three pieces, each usable on its own:
| Piece | What it does | Endpoints |
|---|---|---|
| Eligibility | Which kinds of funding one company may qualify for, now | POST /eligibility/check |
| Customers | Your book, synced in bulk, with an answer we keep current | POST /customers/bulk, GET /customers |
| Sessions | A prefilled funding request, opened by a link you hand out | POST /sessions, GET /sessions/{id} |
Events tie them together: customer.became_eligible when a synced customer now likely
qualifies, customer.request_started when they open your link, and
customer.request_submitted when they send the funding request.
1. Sync your customers
Send the businesses on your book, up to 500 per call. A company number is enough for an answer; monthly revenue sharpens it. Businesses only: no people and no personal numbers here.
curl https://sandbox.capvant.com/partner/v1/customers/bulk \
-H "X-API-Key: $CAPVANT_KEY" -H "Content-Type: application/json" \
-d '{
"customers": [
{ "partner_customer_id": "cus_42", "country": "GB", "company_number": "01234567" },
{ "partner_customer_id": "cus_43", "country": "GB", "company_number": "09876543",
"facts": { "monthly_revenue": 45000 } }
]
}'Each customer comes back with its band (likely, possible, not_yet, unlikely, or
not_assessed with a reason). We look again when the next check is due: sooner for
possible, and on the very day a not_yet business has traded long enough.
2. Hear who became eligible
Subscribe to customer.became_eligible with POST /webhook-subscriptions. When a
customer moves to likely, you get:
{
"event": "customer.became_eligible",
"environment": "live",
"data": {
"partner_customer_id": "cus_42",
"market": "UK",
"band": "likely",
"previous_band": "not_yet",
"families": [{ "family": "working_capital", "band": "likely", "previous_band": "not_yet" }]
}
}No lender is ever named. A first sync is silent by default, so importing your whole book does
not flood your endpoint; send "notify_initial": true if you want the first answers as
events too.
3. Show it where your customer already is
Put a quiet card in your product for customers who are likely:
Funding options available. Your business already meets the basic criteria for 3 kinds of funding. [Check my options]
Say "may qualify" or "likely to qualify", never "approved": no lender has assessed the business yet.
4. Open a prefilled session
When the customer clicks, create a session with what you hold. Contact and owner details need your consent record for sharing them with Capvant.
const session = await capvant.post('/sessions', {
country: 'GB',
partner_customer_id: customer.id,
business: { legal_name: customer.legalName, company_number: customer.companyNumber },
contact: { first_name: user.firstName, last_name: user.lastName, email: user.email },
owners: customer.owners.map((o) => ({ first_name: o.firstName, last_name: o.lastName, ownership_percentage: o.percent })),
funding: { amount: 60000 },
consent: { reference: consent.id, captured_at: consent.at, method: 'click_through' },
return_url: 'https://app.example.com/capital',
});
// Send the customer to session.launch_url. session.asks_for lists what is still asked.The launch link opens your own programme domain when it is live, otherwise your page on
Capvant, with the details filled in. It works until expires_at (a week by default), and
POST /sessions/{id}/link issues a new one if it gets lost; the old one stops working.
Personal tax and identity numbers (SSN, ITIN, National Insurance, passport) are refused on every endpoint. The lender step that needs one asks the customer directly.
5. Follow the funding request
customer.request_started fires when the customer opens the link and
customer.request_submitted when they send the funding request. GET /sessions/{id}
carries the request id from then on.
Try it in the sandbox
Every step works on a sandbox key. A sandbox launch link opens a page that shows what would
be prefilled, and POST /sessions/{id}/simulate with {"event":"start"} or
{"event":"submit"} fires the same events a real customer would, so you can prove your
handling before go live.
Check eligibility
Which kinds of business funding a company may qualify for, from its register record and what you already know. Nothing is created and no credit search runs.
Partner API authentication
Exchange your Partner API key for a one hour bearer token, or send the key directly while you are getting started.
