Download OpenAPI specification:Download
This page contains documentation on how to use the Funding Circle Partner API.
We believe that small businesses deserve access to finance that’s quick and hassle-free.
That’s why we have launched a Funding Circle lending API. Our API makes it fast, simple and straightforward for partners to offer Funding Circle loans from within their own website, platform or mobile app.
We also offer other ways to partner with us including referrals and co-branded landing pages. To learn more about partnership opportunities or to gain access to our Sandbox, email us at fcpartner@fundingcircle.com or register your interest using this link.
The API is under OAuth 2.0 Client Credentials Grant flow. In order to make a request, your client must be authorised.
A first step is to generate an access_token
, the way to do this is to make a POST request to the Authentication endpoint, passing a base 64 token generated from your unique client_id:client_secret
:
curl --request POST \
--url "https://auth.sandbox.api.fundingcircle.co.uk/oauth2/token" \
--header "Authorization: Basic 'base64(client_id:client_secret)'" \
--data-urlencode "grant_type=client_credentials"
The access_token
can only be used for 24 hours and must be set in the HTTP header of each request:
Authorization: Bearer eyJraWQiOiJkd1ZKOFFhaGNcL2V4bFBwRUN3TDVNaTA3YmRqOFhNK3MzY.....
Note that you must not include the access_token
when making the PUT request to upload a document.
An x-amzn-trace-id
header will be returned with each request. We can use this ID to debug problems with a particular API request. Ideally, you should store the x-amzn-trace-id
so we can look into a specific request, if required.
We follow the error response format proposed in RFC 7807 also known as Problem Details for HTTP APIs. As with our normal API responses, your client must be prepared to gracefully handle additional members of the response.
This response means that the API cannot process your request due to something that is perceived to be a client error (e.g., malformed request query, invalid request body, or deceptive request routing). To resolve this, please ensure that the request syntax is correct and includes all mandatory fields.
This response means that the API cannot process your request due to a wrongly typed or malformed path parameter. To resolve this, please ensure that the parameter value matches the expected pattern.
This response means that your client is not authorised to access the API, make sure you've called the Auth endpoint first to fetch the access_token
. Note that each token expires in 24 hours.
This response means that your access_token
might be valid, but you're temporarily not allowed to access the API.
This response means that the API understands the request, but refuses to authorise it. To resolve this, please ensure you have permission to access the resource.
This response means that the API has processed your request, but the resource could not be found.
This response means that the API has processed your request, but the resource has now permanently expired.
This response means that the API refuses to accept the request because of the payload format. To resolve this, please select content-type application/json
.
This response means that the API has processed the request, but the client is not allowed to proceed. Some of the highlighted reasons are:
This response means that the requested action couldn't be performed because it depends on another action that has failed.
Approved partners will be provided access to our sandbox, which contains scenarios that can be used for testing.
The companies_house_id
included in the request will result in the below eligibilities:
00000000
- an eligibility with a low
score00000001
- an eligibility with a medium
score00000002
- an eligibility with a high
scoreRequests including a different value, will return a not-eligible
score, which means the company is not currently eligible for any of the Funding Circle products.
The business_name
used in the loan application will result in different journeys, as described below:
Bighead Catshark Ltd
- a successful application with a credit offerBlotchy Swellshark Ltd
- an application that requires actionLoop Shark Ltd
- an application that remains in "processing"Broadmouth Shark Ltd
- a rejected applicationInflight Shark Ltd
- an application that triggers an error due to another ongoing application from the same companyRequests with no business name or with a different value to any of the above, will also lead to an application that remains in "processing".
As a current limitation, uploading and submitting documents will change the status of the loan application to "in progress" indefinitely.
The eligibility endpoints can be used to get a view of a company's eligibility for our Term Loan product.
Eligibility does not provide a full credit decision, but instead presents an indicative representation of a company's likeliness of receiving a credit offer, based on a small number of data inputs.
Two endpoints are available which allow for a variety of use cases. The suggested use cases for each endpoint are explained below. The eligibility endpoints will return a score of “H”, “M”, “L” or “N” for each.
Score | Eligibility |
---|---|
H | High |
M | Medium |
L | Low |
N | Not scored |
The single eligibility endpoint should be used to receive eligibility for a single company. This allows introducers to use eligibility data in real time, to help optimise their customer journey.
companies_house_id required | string^[0-9]{8}$|^[A-Z]{2}[0-9]{6}$ Example: SC645837 Company ID as per the Companies House registration. |
{- "companies_house_id": "SC645837",
- "eligibility": [
- {
- "product": "term_loan",
- "score": "H"
}
], - "_links": {
- "self": {
- "href": "/eligibility/SC645837"
}
}
}
The bulk eligibility endpoint should be used to receive eligibility for multiple companies in bulk. This allows introducers to optimise marketing campaigns and target customer segments, based on eligibility outcomes. The endpoint can handle up to 400k companies in one single bulk to process.
Csv file containing the eligibility batch. Every row should only contain a Companies House ID.
companies_house_id 00000000 00000001
companies_house_id,term_loan_score 00000000,L 00000001,M
Submit a full application for a term loan. The initial POST
initiates the application process and returns a
link to a resource that provides information on this process. When processing is complete this resource will
contain a link to a resource showing the credit decision, or a resourcing indicating what further information
is needed; the API provides endpoints to upload documents when required for a credit decision.
The overall flow is shown below:
Some of our endpoints follow the Microsoft Asynchronous Request-Reply Pattern, meaning that the actual processing will happen in the background even though the call returns immediately. The response will contain a placeholder rather than the actual result. To know when the result is ready, you should fetch by the related uuid.
Most of the loan applications will receive an instant decision, but for some applications we will require additional information. For this reason, some of the enpoints are not required to be called for every application and have the tag applied.
Submit a term loan application for processing. Credit reports will be pulled for the company and any supplied EBOs (Executive Business Owner). The duration of processing will vary depending on the loan details, availability of 3rd party data providers and internal Funding Circle business rules. Successful calls to this endpoint contain a link to a status resource containing any available information on the expected duration.
broker_email | string <email> [ 1 .. 80 ] characters ^.+@.+$ (BETA) Email address of the associated Broker if applicable, this allows to tag them for commissions. Brokers must be registered under the same organisation using the API. |
callback_url | string^https:\/\/[\w\.-]{2,}\.[\D]{2,}\b([-\w_.?&\/... (BETA) If included in the request, when an action is required or a decision is made, we will call your webhook using the payload described in the callbacks section. |
partner_reference | string [ 1 .. 36 ] characters A free value supplied by the partner for their own reference, e.g. an internal identifier for the customer or loan. |
required | object A reference uniquely identifying a business. This must contain the Companies House ID. |
required | Array of objects non-empty unique List of Executive Business Owners (EBOs). These are shareholders that play a day-to-day role in the business and add up to 50% or more ownership of the applicant company, with at least one EBO holding 20% or more shares. Names need to match what is listed on companies house. |
required | object Information about the applicant. This must be a director of the business. |
required | object Please provide the following inputs for the company requesting finance. |
required | object Information about the loan. |
required | object Purpose of the loan. |
required | object Client consent. |
broker_commission | number (Amount between 0-6.5%, must be an incremental input of 0.5%) Enum: 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 Commission rate must be included for all broker requests. If you are set up as a partner then your commission will be pre-determined from our partner agreement. Therefore partners do not need to share a commission amount as these will be ignored if sent. Fee may change depending on whether the loan offer falls under our core lending product or the Recovery Loan Scheme. Please reach out to your Partnership Manager if you have any questions. |
{- "broker_email": "john.smith@example.com",
- "partner_reference": "HG79872",
- "business_reference": {
- "companies_house_id": "SC645837",
- "business_name": "FUNDING CIRCLE LTD"
}, - "ebo_list": [
- {
- "ebo_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "dob": "1977-01-27",
- "percent_shares_held": 60.25,
- "current_address": {
- "house_number_or_name": "18",
- "postcode": "E1W 3AZ"
}
}
], - "customer_info": {
- "contact_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "email": "john.smith@example.com",
- "phone_number": "+441632960045"
}, - "business_info": {
- "company_type": "Limited Company",
- "self_stated_industry": "Finance",
- "full_time_employees": 2,
- "self_stated_turnover": {
- "currency": "GBP",
- "value": 800000
}, - "profit_loss_amount": {
- "currency": "GBP",
- "value": 50000
}, - "overdraft_maximum_available": {
- "currency": "GBP",
- "value": 0
}, - "overdraft_current_usage": {
- "currency": "GBP",
- "value": 0
}, - "other_debt_amount": {
- "currency": "GBP",
- "value": 0
}, - "self_stated_2019_turnover": {
- "currency": "GBP",
- "value": 700000
}, - "company_established_or_registered_in_northern_ireland": false,
- "company_part_of_group_operating_in_northern_ireland": false,
- "company_provides_specific_service_to_northern_ireland": false
}, - "loan_info": {
- "amount_requested": {
- "currency": "GBP",
- "value": 30000
}, - "term_requested_months": 72
}, - "loan_purpose": {
- "type": "Expansion/growth",
- "buy_land_property_to_rent": false,
- "change_of_business": false,
- "settle_personal_debt": false,
- "opportunity_outside_uk": false,
- "other_company": false
}, - "client_consent": {
- "client_application_consent": true,
- "client_agreement_privacy_and_tac": true
}, - "broker_commission": 0.5
}
{- "type": "BAD_REQUEST_BODY",
- "title": "Invalid request body",
- "detail": "[Object has missing required properties (['some_property'])]"
}
{- "callback_uuid": "a5764857-ae35-34dc-8f25-a9c9e73aa898",
- "created_at": "2017-07-21T17:32:28Z",
- "submitted_at": "2017-07-21T17:32:28Z",
- "status_uri": "/loan_application_status/a5764857-ae35-34dc-8f25-a9c9e73aa898"
}
Submit a FlexiPay application for processing. Credit reports will be pulled for the company and any supplied EBOs (Executive Business Owner). The duration of processing will vary depending on the loan details, availability of 3rd party data providers and internal Funding Circle business rules. Successful calls to this endpoint contain a link to a status resource containing any available information on the expected duration.
broker_email | string <email> [ 1 .. 80 ] characters ^.+@.+$ Email address of the associated Broker if applicable, this allows to tag them for commission. Brokers must be registered under the same organisation using the API. |
required | object A reference uniquely identifying a business. This must contain the Companies House ID. |
required | Array of objects non-empty unique List of Executive Business Owners (EBOs). These are shareholders that play a day-to-day role in the business and add up to 50% or more ownership of the applicant company, with at least one EBO holding 20% or more shares. Names need to match what is listed on companies house. |
required | object Information about the applicant. This must be a director of the business. |
required | object Please provide the following inputs for the company requesting finance. |
{- "broker_email": "john.smith@example.com",
- "business_reference": {
- "companies_house_id": "SC645837",
- "business_name": "FUNDING CIRCLE LTD"
}, - "ebo_list": [
- {
- "ebo_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "dob": "1977-01-27",
- "percent_shares_held": 60.25,
- "current_address": {
- "house_number_or_name": "18",
- "postcode": "E1W 3AZ"
}
}
], - "customer_info": {
- "contact_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "email": "john.smith@example.com",
- "phone_number": "+441632960045"
}, - "business_info": {
- "company_type": "Limited Company",
- "self_stated_turnover": {
- "currency": "GBP",
- "value": 800000
}, - "profit_loss_amount": {
- "currency": "GBP",
- "value": 50000
}, - "overdraft_maximum_available": {
- "currency": "GBP",
- "value": 0
}, - "other_debt_amount": {
- "currency": "GBP",
- "value": 0
}
}
}
{- "type": "BAD_REQUEST_BODY",
- "title": "Invalid request body",
- "detail": "[Object has missing required properties (['some_property'])]"
}
Retrieves a resource that describes the current status of a submitted loan application. This endpoint is intended to be polled and clients should adjust their polling frequency as follows:
Interval | Polling frequency |
---|---|
0 to 2 minutes | Every second |
2 to 10 minutes | Every minute |
10 minutes to 6 hours | Every hour |
6 hours and over | Every 12 hours |
Interval | Polling frequency |
---|---|
0 to 2 minutes | Every second |
2 minutes and over | Every 12 hours |
loan_application_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the loan application. |
{- "loan_application_uuid": "a5764857-ae35-34dc-8f25-a9c9e73aa898",
- "reason": "processing",
- "created_at": "2017-07-21T17:32:28Z",
- "updated_at": "2017-07-21T17:32:28Z",
- "_links": {
- "self": {
- "href": "/loan_application_status/a5764857-ae35-34dc-8f25-a9c9e73aa898"
}
}
}
Retrieve the current state of a processed loan application. The loan application can be one of three states:
in_progress
Funding Circle are actively processing the application.action_required
the application requires an action to be taken before a decision can be made. See more details on how to upload documents here.decision_made
a credit decision has been reached. A link to the decision is provided.loan_application_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the loan application. |
{- "status": "in_progress",
- "loan_application_uuid": "22e0ee76-e496-4488-b813-2de2c90c5e0f",
- "loan_application_details": {
- "partner_reference": "HG79872",
- "business_reference": {
- "companies_house_id": "SC645837",
- "business_name": "FUNDING CIRCLE LTD"
}, - "ebo_list": [
- {
- "ebo_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "dob": "1977-01-27",
- "current_address": {
- "house_number_or_name": "18",
- "postcode": "E1W 3AZ"
}
}
], - "customer_info": {
- "contact_name": {
- "first_name": "John",
- "last_name": "Smith"
}, - "email": "john.smith@example.com",
- "phone_number": "+441632960045"
}, - "business_info": {
- "company_type": "Limited Company",
- "self_stated_industry": "Finance",
- "full_time_employees": 2,
- "self_stated_turnover": {
- "currency": "GBP",
- "value": 800000
}, - "profit_loss_amount": {
- "currency": "GBP",
- "value": 50000
}, - "overdraft_maximum_available": {
- "currency": "GBP",
- "value": 0
}, - "overdraft_current_usage": {
- "currency": "GBP",
- "value": 0
}, - "other_debt_amount": {
- "currency": "GBP",
- "value": 0
}, - "self_stated_2019_turnover": {
- "currency": "GBP",
- "value": 700000
}, - "company_established_or_registered_in_northern_ireland": false,
- "company_part_of_group_operating_in_northern_ireland": false,
- "company_provides_specific_service_to_northern_ireland": false
}, - "loan_info": {
- "amount_requested": {
- "currency": "GBP",
- "value": 30000
}, - "term_requested_months": 72
}, - "loan_purpose": {
- "type": "Expansion/growth",
- "buy_land_property_to_rent": false,
- "change_of_business": false,
- "settle_personal_debt": false,
- "opportunity_outside_uk": false,
- "other_company": false
}, - "broker_commission": 0.5
}, - "_links": {
- "self": {
- "href": "/loan_application/cdbce47c-85a7-3f2d-9ede-8adc37087d59"
}
}
}
Retrieve the decision for a processed loan application. The decision is either:
offered
the application was successful and the offer details are contained within the payload.rejected
the application was not successful, and a high level reason for the rejection is contained within the payload.action_required
the application requires an action to be taken before a decision can be made. See more details on how to upload documents here.loan_application_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the loan application. |
{- "created_at": "2019-08-24T14:15:22Z",
- "status": "action_required",
- "actions": [
- "amend_bank_statements"
], - "amend_bank_statements_reasons": [
- {
- "reason": "date_range",
- "description": "Unacceptable last transaction date. Bank statements should cover the last 6 months."
}
], - "_links": {
- "self": {
- "href": "/loan_application/cdbce47c-85a7-3f2d-9ede-8adc37087d59/decision"
}, - "upload_api": {
- "href": "/loan_application/cdbce47c-85a7-3f2d-9ede-8adc37087d59/document_upload_url"
}, - "loan_application": {
- "href": "/loan_application/cdbce47c-85a7-3f2d-9ede-8adc37087d59"
}
}
}
Get a document upload url when an action is required.
A pre-signed url can be used to upload a document. Documents can only be uploaded when an application has one of the following required actions:
upload_bank_statements
: upload bank statements of the last 6 monthsamend_bank_statements
: allow to reupload bank statements if previous upload had wrong or insufficient dataupload_filed_accounts
: upload most recent set of financial statementsThe upload has to be a PUT request with the header x-amz-server-side-encryption:aws:kms
. For this request do not include the access_token
:
curl ${document_upload_url} -X PUT -T ./document.pdf -H "x-amz-server-side-encryption:aws:kms"
Each pre-signed url has a lifespan of 30 seconds and can be used to upload a single document.
A document must be in PDF format and the maximum permitted file size is 100 MB.
loan_application_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the loan application. |
{- "s3_key": "999d22d5-f5dc-4726-955a-f86b1ca34aa3/bank_statement_1.pdf",
- "_links": {
- "self": {
- "href": "/loan_application/a5764857-ae35-34dc-8f25-a9c9e73aa898/document_upload_url"
}
}
}
Submit the required action when there are documents that have been uploaded.
The duration of processing will vary depending on the number of documents.
loan_application_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the loan application. |
s3_keys required | Array of strings [ 1 .. 30 ] items unique List of s3 keys representing uploaded documents. |
{- "s3_keys": [
- "999d22d5-f5dc-4726-955a-f86b1ca34aa3/document_1.pdf",
- "999d22d5-f5dc-4726-955a-f86b1ca34aa3/document_2.pdf"
]
}
{- "type": "BAD_REQUEST_BODY",
- "title": "Invalid request body",
- "detail": "[Object has missing required properties (['some_property'])]"
}
Get paid with FlexiPay, you can generate a FlexiPay payment link that can be shared to your customers. This link can be presented to customers as a payment method, allowing them to get access to the benefits of FlexiPay at point of sale. A customer can use the payment link to disburse under 2k instantly with WlexiPay, if over 2k will be asked to enter credentials for FlexiPay. If customer has not been authorised for FlexiPay with Line of Credit, will be presented with a custom onboarding flow. As current limitation, the payment link will expire after 14 days, and only one instant payment with FlexiPay can be made per customer, after that they will be asked to enter credentials for FlexiPay with Line of Credit.
(BETA) Allow to create a flexipay payment link so can be sent to the customer to make a payment.
companies_house_id required | string^[0-9]{8}$|^[A-Z]{2}[0-9]{6}$ Companies House ID of the payee, aka the company that will receive the payment. |
required | object Payee's bank account details, aka where the money will be sent. |
amount required | number [ 100 .. 20000 ] The requested payout amount in GBP for this payment link, must be equal or greater than £100.00. If the amount is under 2k, will be allowed to pay with FlexiPay, if more than 2k payment will be done via FleiPay with Line of Credit. |
reference required | string^(?=^[A-Za-z0-9. &]{6,18}$)(?!^(.)\1*$).*$ Reference for the payment. |
string <email> [ 1 .. 80 ] characters ^.+@.+$ Email address of the payee. Once the payment is made, we will send a confirmation email to this address, if set. | |
redirect_url | string^https:\/\/[\w\.-]{2,}\.[\D]{2,}\b([-\w_.?&\/... URL to redirect the customer after payment is made. Note that we will append the payment_link_uuid as a query parameter to the URL, so you can identify the payment link. Eg, if you set |
{- "companies_house_id": "SC645837",
- "payee_account": {
- "name": "John Doe",
- "account_number": "12345678",
- "sort_code": "123456"
}, - "amount": 100,
- "reference": "Invoice 1234",
- "email": "email@example.com",
}
{- "payment_link": "string",
- "payment_link_uuid": "22e0ee76-e496-4488-b813-2de2c90c5e0f"
}
(BETA) Fetch payment link relevant informations by its uuid.
payment_link_uuid required | string <uuid> ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]... Example: 22e0ee76-e496-4488-b813-2de2c90c5e0f Unique identifier for the payment link. |
{- "payment_link": "string",
- "payment_link_uuid": "22e0ee76-e496-4488-b813-2de2c90c5e0f",
- "status": "in_progress"
}