Skip to content

Lead Management API

Connect’s lead management API supports the following scenarios:

  • Updating a single lead’s stage
  • Getting a single lead’s required documents

All API requests to Connect contain a few critical components; an HTTP Method, API key, a Partner Route, a Path, and a Host.

All HTTP requests have a method; in our API we use primarily ‘GET’, ‘POST’, and ‘DELETE’.

An API key (provided on request) must be included in the headers of every request sent to Connect. This value should be kept secret and not shared for any reason.

For example: x-api-key: CfDJ8Ke4rggGedRLnLycPTg...

Every partner has a unique route, which is part of your path. For a partner named ‘My Finances’ your route might be something like my-finances. This partner route will be given to you by Connect along with your API key.

Each endpoint is identified by a combination of method and path, for example POST /api/v1/my-finances/leads?leadId=abc-123... combines the POST method with the /api/v1/my-finances/Leads path to get a single lead. In this example, we also attached a QueryString, which adds parameters to the call, these are the values following the ? question mark.

The ‘host’ is also called the domain. Our partners have access to two hosts; one you can use for testing and one for your live/production environment.

Putting it all together, you will will see an HTTP request that looks like the following:

Example cURL request
curl \
--location --request POST 'https://qa.connect.crfusa.com/api/v1/your-partner-route/leads' \
--header 'x-api-key: yourapikeyhereCfDJ8Jnsgoaz8OhPpzNEDyvffeyourapikeyhere' \
--header 'Content-Type: application/json' \
--data-raw '{
"id": "9c30a205-a60e-47cb-94b4-6d45cd4c2179",
"status": "Contacted"
}'

Refer to ‘Submitting a test lead’ in the webhooks documentation.

We recommend using postman to test our API interactively.

Configuring the ‘Authorization’ tab

You can find a lead’s ‘ID’ by visiting the partner portal’s leads report

Update a single editable lead owned by your lending partner account. Note that once a lead is funded it is no longer editable.

HTTP Method: POST
Path: /api/v1/{PartnerRoute}/Leads
{
"id": <guid>,
"status": <leadstatus>,
"fundeddate": <datetime option>,
"fundedamount": <decimal option>,
"fundedinterestrate": <decimal option>,
"fundedapr": <decimal option>,
"fundedtermmonths": <int option>,
"fundedamortizationmonths": <int option>,
"disqualifiedreason": <disqualifiedreason option>,
"withdrawnreason": <withdrawnreason option>,
"additionalinfo": <string option>,
"willreceivetechnicalassistance": <bool option>,
"technicalassistanceoptions": <technicalassistance array>
}

The lead status is intended to flow from top to bottom, for example Reviewed goes to Contacted, which goes to Qualified, which goes to Funded. Funded, Disqualified, and Withdrawn are considered ‘terminal’ states, where the lead is considered closed, however leads can be moved from Disqualified or Withdrawn back to a non-terminal state.

Funded is final, so the lead can no longer be updated.

Lead statuses can be skipped entirely; once the lead is ‘Matched’, it can go straight to Funded, Withdrawn or Disqualified, but this is discouraged since it likely fails to track several internal status changes that the service partner is likely following internally.

  • Matched: The initial state, the applicant has chosen your product
  • Reviewed: Service partner has viewed submitted applicant form
  • Contacted: Prospective applicant has been contacted by the product owner, but has not submitted an application to the service partner
  • Qualified: Lead is marked qualified
  • Funded: Lead has been completed / funded
  • Disqualified: Lead was disqualified
  • Withdrawn: Lead stopped responding
  • BorrowerStoppedResponding: Applicant stopped responding
  • Duplicate: Applicant form was a duplicate request
  • LostBidToCompetitor: Bid was lost
  • FraudOrSpam: Lead was fraudulent or spam
  • Other: Withdrawn for any other reason
  • EligibilityIssue: Disqualified because of eligibility issue
  • CreditIssue: Disqualified because of credit issue
  • CashFlowIssue: Disqualified because of cash flow issue
  • CollateralIssue: Disqualified because of collateral issue
  • LoanUseIssue: Disqualified because of loan use issue
  • PersonalGuaranteeIssue: Disqualified because of personal guarantee issue
  • Other: Disqualified for any other reason
  • Accounting: Accounting
  • BusinessPlan: Business Plan
  • BuyOrSellABusiness: Buy/Sell a business
  • CashFlowManagement: Cash-flow management
  • CompanyFormation: Company formation / startup
  • CustomerRelations: Customer relations
  • CreditCounseling: Credit counseling
  • FinancingOrCapital: Financing or capital
  • Franchising: Franchising
  • GovernmentContracting: Government Contracting
  • HumanResourcesAndManagement: Human Resources & Management
  • InternationalTrade: International Trade
  • LegalIssues: Legal Issues
  • MarketingOrSales: Marketing or Sales
  • PrivateSectorProcurement: Private sector procurement
  • TaxPlanning: Tax planning
  • TechnologyAndECommerce: Technology and E-Commerce

The response content will be empty, the status code will indicate the result of the operation.

Response Code

  • 200 - Lead status was updated
  • 400 - Bad request
  • 401 - Request could not be authorized
  • 404 - Editable lead could not be found

Url: POST https://connect.crfusa.com/api/v1/testpartner/leads

Authorization: CfDJ8Ke4rggGedRLnLycPTgRgpNjR3Wa4wee...

Body:

{
"id": "eaffba05-c56c-47a0-8c79-507aafc9f1d1",
"status": "Contacted"
}

Url: POST https://connect.crfusa.com/api/v1/testpartner/leads

Authorization: CfDJ8Ke4rggGedRLnLycPTgRgpNjR3Wa4wee...

Body:

{
"id": "eaffba05-c56c-47a0-8c79-507aafc9f1d1",
"status": "Funded",
"fundedamount": 50000,
"fundedinterestrate": 5.5,
"fundedapr": 10.0,
"fundedtermmonths": 24,
"fundedamortizationmonths": 24,
"willreceivetechnicalassistance": true,
"technicalassistanceoptions": [
"PrivateSectorProcurement"
]
}

Url: POST https://connect.crfusa.com/api/v1/testpartner/leads

Authorization: CfDJ8Ke4rggGedRLnLycPTgRgpNjR3Wa4wee...

Body:

{
"id": "eaffba05-c56c-47a0-8c79-507aafc9f1d1",
"status": "Disqualified",
"disqualifiedreason": "EligibilityIssue",
"additionalinfo": "The lead was ineligible because xyz. This is custom text",
"willreceivetechnicalassistance": true,
"technicalassistanceoptions": [
"PrivateSectorProcurement"
]
}