LenderAPI
Introduction
Welcome to our LenderAPI documentation. This API allows lenders to integrate with Lend and join our panel of lenders.
This documentation is aimed at developers / programmers / engineers tech-savvy people, however if there is anything you need assistance with, feel free to reach out to one of the Lend team. See our See Changelog for a history of changes.
Getting Started
To access our LenderAPI, you will need an account set up and a corresponding API Key. If you do not have either of these you will need to contact Lend to get started. If you do have them, you can continue below.
Headers
All requests must contain a set of headers, they are as followed:
Header | Value | Additional Info |
---|---|---|
Accept | application/json | - |
Content-Type | application/json | - |
x-api-key | xxxxxxxxxxx | See "Authentication" (below) for more details |
Environments
We have two environments for the API: Sandbox and Production. They use different API Keys, and the base URL's are noted below:
Environment | Base URL |
---|---|
Production | https://lenders-api.lend.com.au/v1/ |
Sandbox | https://sandbox-lenders-api.lend.com.au/v1/ |
Versioning
Our LenderAPI is versioned, currently in production we only have version 1, and this is used within the URL.
Example: https://lenders-api.lend.com.au/v1/xxxxxx
Authentication
All requests to the API will need to contain your API Key. You provide this by including an x-api-key header, and the value of this header is your API Key. If for any reason you need to revoke an API Key, contact Lend and we can do this for you.
Note: By default we will only provide you with one API Key (per environment), however if you require multiple just let us know.
Monitoring
Our Processes
Our API is being monitored 24/7, and we have procedures in place to ensure maximum up-time, to name a few of the processes, they include:
- Routined Automated Testing
- Error Log Monitoring
- Network Monitoring
- Load Balancing
- Auto-Scaling Instances
- Plus more...
In the event that any of the above procedures detect an issue, we are instantly alerted to resolve the matter ASAP.
System Status GET /
You can check the status of our API at any point by making a GET request to our API's base url. You will be provided with a success bool, and a status message (found in the message field).
Example: https://lenders-api.lend.com.au/
{ "success": true, "message": "The LendersAPI is currently available and no status issues, for documentation please visit https://lenders-api-docs.lend.com.au" }
Note: If at any point the success bool is false, it means we have detected an issue with our API and we are resolving it. Any corresponding information about the error will still be found in the message field.
Collecting Leads
Two Methods
When we send you a lead you have two methods of discovering this, either we notify you via a Webhook (recommended), or, you can check for any new leads via our Get Leads API (detailed below).
Method | Recommended | Event Driven | Info |
---|---|---|---|
Webhook | ✓ | ✓ | As soon as we (or one of our brokers) sends you a lead, we'll send a POST request to an endpoint that you provide on your account. |
API | ✗ | ✗ | As this is not event driven, it involves you periodically checking our /leads API for new leads that we have sent to you. More details below. |
Webhook
If you have an endpoint set up in your account, we'll POST a very small payload of data to the endpoint.
This payload does not contain any sensitive data, it is simply a notification to let you know a lead is waiting for you, and a reference for that lead.
Note: As this data is of a non-sensitive nature, we do not add any signatures/apikeys/authentication to the request.
Example Payload
Here is an example of the data we would post to your endpoint.
{ "message": "You have a new lead from Lend", "lead_ref": "abc1234", "sent_to_you": "1594043167", "been_retrieved": false }
Field | What is it? |
---|---|
message | Just a human-friendly message to let you know a lead has been sent to you. This will be the same everytime. |
lead_ref | A 7-character case-sensitive string - it's the reference for the lead we have sent to you. It's the unique identifier that you'll use for all future API requests regarding this particular lead. |
sent_to_you | This is a Unix timestamp - it's the exact time we sent you the lead. |
been_retrieved | By default, this will always be false - it let's you know if you have already collected this lead. The only time this will be true, is if you're also using the API method to collect leads, and have already collected this lead (we do not recommended running both in conjunction with eachother). |
What do I need to return to the request?
The only thing we are interested in is a http status 200. If we receive a 200 status back, we'll class that as a success.
If you're not familiar with http status code standards, you can read about them here.
What happens in the case of a failure?
If you do not return a status 200, we'll class this as a failed request. Thankfully, we do have processes in place to handle this.
We will attempt to re-send the request to your endpoint a further two (2) times, if each one fails, we'll contact you to let you know that a) you have a lead waiting for you, and that b) your server is experiencing issues accepting leads.
Below, is our process for each time attempt:
Attempt | Delay | Info |
---|---|---|
1 | 0 mins | This is instant (event driven), the moment we (or one of our brokers) sends you a lead, we'll attempt to notify your endpoint. |
2 | 15 mins | If attempt 1 failed, we'll attempt to send again (15 minutes after the first attempt). |
3 | 45 mins | If attempt 2 failed, we'll attempt to send again (45 minutes after the second attempt). |
What do I do once I receive the payload?
Once you have been notified of a new lead, using the reference in the payload we sent, you can now "collect" this lead from our /leads/xxxxxxx API.
API
If you would prefer to periodically check for new leads, you can use our Get Leads API.
This API has a mandatory since parameter, and the result will provide you with an array of all leads sent to you since the date and time you provided. The been_retrieved field will be useful here to identify which leads you have and have-not collected yet.
Resources
Leads
We have a range of APIs to integrate with our leads. We have a Get Leads API as an overview of all leads we have sent to you, and, we have a Get Full Lead API, where you can retrieve all the data we have on a lead.
Each API is detailed below.
Get Leads GET /leads?since=[timestamp]
The Get Leads API allows you to retrieve all the leads we have sent you since a date time you provide.
This API has a mandatory since parameter, and the result will provide you with an array of all leads sent you you since the date and time you provided.
Sandbox Test Leads: We have a range of test leads you can use in our sandbox environment. Jump down to our Test Leads section for more details.
Request Details
Parameter | Required | Value | Info |
---|---|---|---|
since | ✓ | unix timestamp | All the leads we have sent to you since the date time you provide |
Response
Here's a breakdown of the data you'd expect back in the response.
Field | Type | Length | Info |
---|---|---|---|
success | Bool | Whether this request was successful or not. Follows the same data-structure for all APIs. | |
data | Array | Contains all the leads. | |
data[i]lead_ref | String | 7 | The unique identifier for each lead. |
data[i]sent_to_you | String | 13 | Unix timestamp (date time) of when we first sent this lead to you. |
data[i]been_retrieved | Bool | A boolean which highlights which leads you have "collected". To retrieve/collect a lead, use the Get Full Lead API. |
Pseudo Response
Here's a pseudo example of the response you'd expect to see.
{ "success": true, "data": [ { "lead_ref": "abc1234", "sent_to_you": "1594043167", "been_retrieved": false }, { "lead_ref": "xyz5678", "sent_to_you": "1594043167", "been_retrieved": true } ] }
Get Full Lead GET /leads/[lead_ref]
Example URL: https://lenders-api.lend.com.au/v1/leads/abc1234
If you want to access the full data for an individual lead, you can use this API. You use the lead_ref passed to you from one of the two methods mentioned previously (webhook or Get Leads API).
Sandbox Test Leads: We have a range of test leads you can use in our sandbox environment. Jump down to our Test Leads section for more details.
Request Details
URI | Required | Info |
---|---|---|
lead_ref | ✓ | The unique identifier for the lead you're trying to access. |
Response
Here's a breakdown of the data you'd expect back in the response.
Field | Type | Length | Mandatory | Info |
---|---|---|---|---|
success | Bool | ✓ | Whether this request was successful or not. Follows the same data-structure for all APIs. | |
data | Array | ✓ | Contains all the lead data | |
data.lead_ref | String | 7 | ✓ | The reference (unique identifier) for this lead. |
data.number_of_file_attachments | Int | 3 | We allow brokers to upload files for a lead (e.g. PDFs, a copy of a driving licence, etc), this will show the total number of files we have for this lead. Note: A "file collection" API is coming soon for you to be able to download these files. |
|
data.who_to_contact | ✓ | The person you should be contacting regarding this lead, and the source of this lead. | ||
who_to_contact.who | Picklist | 9 | ✓ | The possible values are: Broker (you can look at the data.broker_details object for contact details), and the other value is Applicant (you can look at the data.owner object for contact details). |
who_to_contact.call_on_behalf_of | String | 255 | This is essentially the source of the lead. This will likely only be populated if who_to_contact.who is Applicant. You may want to use this during your initial phone call (e.g. "Hello, we are calling on behalf of 'Aus Biz Loans', they have forwarded your application to us...") | |
data.broker_details | Details about the broker who sent this lead. | |||
broker_details.name | String | 100 | The point of contact's full name. | |
broker_details.number | String | 10 | Australian 10-digit valid phone number. This can be a mobile or landline. | |
broker_details.company | String | 255 | This will be the name of the broker's company. | |
data.lead | ✓ | The applicant's company details for this lead. | ||
lead.business_name | String | 255 | The business name for this lead, for example our's is "Lend". | |
lead.organisation_name | String | 255 | The legal entity name for this lead, for example our's is "Lend Capital Pty Ltd". | |
lead.amount_requested | Decimal | 10,2 | ✓ | The loan amount the applicant is requesting. |
lead.purpose | String | 100 | ✓ | Loan Purpose - What the loan funds will be used for. Note: If you wish, you can access all our purpose values from our Picklist APIs. |
lead.loan_term_requested | Int | 2 | Months - The applicant's preferred loan term in months. | |
lead.company_registration_date | Date | YYYY-MM-DD - The company's registration date. This is the date from the ABN record. | ||
lead.industry | ✓ | Details on what industry this applicant is in. | ||
industry.parent | String | 100 | ✓ | A general industry description. e.g. "Construction". Note: If you wish, you can access all our parent/child values from our Picklist APIs. |
industry.child | String | 100 | More specific details for this lead. e.g. "Electrician". Note: If you wish, you can access all our parent/child values from our Picklist APIs. |
|
lead.product_type | String | 128 | This is the preferred type of product that the applicant is interested in (e.g. "Unsecured Loan"). Note: If you wish, you can access all the product type values from our Picklist APIs. |
|
lead.equipment | If this is an equipment finance lead, we'll provide you with details regarding the equipment. | |||
equipment.type | String | 100 | The type of equipment this applicant wants. (e.g. "Car/Van/Ute"). Note: If you wish, you can access all the equipment type values from our Picklist APIs. |
|
equipment.condition | Picklist | Possible values are: New, Used, or Other. | ||
equipment.already_found | Bool | If the applicant has already found their equipment or not. | ||
equipment.details | String | 100 | A short free-text description from the broker/applicant about the equipment. (e.g. "This is a 2020 Toyota Hilux") | |
lead.business_address | ✓ | The registered address of the business. | ||
business_address.address | String | 100 | The street address for this business. e.g. "Suite 3, Level 2, 1 Taylor Street". | |
business_address.suburb | String | 50 | The suburb for this business. | |
business_address.state | String | 3 | ✓ | The Australian state for this business. We use short names: WA, VIC, etc |
business_address.postcode | String | 4 | The 4-character Australian postcode for this business. e.g. "3189". | |
lead.abn | String | 14 | The 11-character ABN for this business, can contain spaces. e.g. "12 612 877 442" and "12612877442". | |
lead.abn_lookup | If we have a value in lead.abn, then an ABN Lookup search will have been done. These are the details from that search. | |||
abn_lookup.state | String | 3 | The short australian state for this entity from the ABN lookup. e.g. "WA, VIC" etc | |
abn_lookup.postcode | String | 4 | The 4-character australian postcode for this entity from the ABN lookup. e.g. "3189". | |
abn_lookup.entity_type | String | 100 | The full description string for this entity type from the ABN lookup. e.g. "Individual/Sole Trader" | |
abn_lookup.entity_type_code | String | 3 | The 3-4 character entity type code from the ABN lookup. e.g. "IND" | |
abn_lookup.asic_num | String | 11 | The corresponding ASIC number for this ABN. | |
abn_lookup.acn | String | 11 | The corresponding ACN for this ABN. | |
lead.sales_monthly | Decimal | 10,2 | ✓ | Average monthly sales for this business (average per month over the last 6 month period). |
lead.sales_annual | Decimal | 10,2 | Average annual sales (this is only answered if the company has been trading >12 months) | |
lead.expenses_monthly | Decimal | 10,2 | Average monthly expenses for this business (average per month over the last 6 month period). | |
lead.overdraft_loc_limit | Decimal | 10,2 | If the company has an arranged overdraft facility. | |
lead.tax_outstanding_arrangement | Bool | If the company has an ATO debt outstanding and is on a payment arrangement. | ||
lead.gst_registered | Bool | If the company is GST registered. | ||
data.owner | ✓ | More personal details of the actual applicant. | ||
owner.first_name | String | 60 | ✓ | The applicant's first name. |
owner.middle_name | String | 60 | The applicant's middle name. | |
owner.last_name | String | 60 | The applicant's last name - Most leads will have a last name, but not 100% of the time. | |
owner.contact_number | String | 20 | ✓ | A valid 10-digit Australian contact number, this is the applicant's preferred contact number. This can be either a mobile or landline. |
owner.email | String | 255 | ✓ | A valid email address for the applicant. |
owner.home_owner | Bool | ✓ | If the applicant (or the applicant's business) owns their home/property. | |
owner.lvr | String | 7 | The LVR decimal percentage this applicant has in their security (if applicable). Value will include a % symbol. e.g. "75.00%". | |
owner.dob | String | Date | YYYY-MM-DD - The applicant's Date of Birth. | |
owner.driving_licence_num | String | 100 | The applicant's Australian driving licence number. | |
owner.driving_licence_expiry | Date | YYYY-MM-DD - The date this driving licence expires. | ||
owner.driving_licence_state | String | 3 | The shortcode Australian State from where this driving licence is from. e.g. "VIC, WA" etc. | |
owner.address | Personal address of the applicant. | |||
owner.address.address | String | 100 | The street address for the applicant. e.g. "Suite 3, Level 2, 1 Taylor Street". | |
owner.address.suburb | String | 50 | The suburb for the applicant. | |
owner.address.state | String | 3 | ✓ | The Australian state for the applicant. We use short names: WA, VIC, etc |
owner.address.postcode | String | 4 | The Australian postcode for the applicant. | |
owner.owner_type | Picklist | If we have a value for this, the applicant is one of the following: Director & Shareholder, Director Only, Shareholder Only, Partner, Sole Trader, Chairperson, Treasurer, Secretary, Trust Trustee, Trust Beneficiary, Trust Beneficial Owner and Other. If we do not have a value it will return false. | ||
owner.equity | String | 6 | The decimal percent of equity this applicant has in the business. Value will include a % symbol. e.g. "95.00%". | |
owner.credit_history | Picklist | The credit status of the applicant. Values can be Good, No Credit History, Paid Defaults, Unpaid Defaults, Ex Bankrupt and Not Sure. | ||
lead.bank_statements | Bank Statement details for this lead. Note: We collect bank statements using the illion service here. | |||
bank_statements.collected | Bool | Whether we have collected the bank statements from the illion service. | ||
bank_statements.bs_doc_id | Array | An array of strings (up-to 15 characters per string). You can use these strings to retrieve the bank statements from the "Broker Flow" service. | ||
data.notes | String | 1000 | A free-text value - Notes left either by the applicant or the broker. e.g. "I am hoping to have these funds within 24 hours due to an unexpected spike in orders". | |
asset_finance_data * | This object is not always applicable and/or available. Read more about the Asset Finance object here in the "Product-Specific Objects" section of the docs. |
* These objects are what we refer to as "Product-Specific Objects". They will only be available in the payload for specific Product Types (the Product Type field is found at lead.product_type). You can read more information about these objects in our Product-Specific Objects section.
Pseudo Response
Here's a pseudo example of the response you'd expect to see.
{ "success": true, "data": { "lead_ref": "abc1234", "number_of_file_attachments": 2, "who_to_contact": { "who": "Broker", "call_on_behalf_of": "Biz Loans" }, "broker_details": { "name": "Mr Broker Name", "number": "0444333555", "company": "Biz Loans Direct Pty Ltd" }, "lead": { "business_name": "Doe Gardening", "organisation_name": "Doe Gardening Pty Ltd", "amount_requested": 30000.00, "purpose": "Inventory", "loan_term_requested": 12, "company_registration_date": "2018-12-31", "industry": { "parent": "Construction and Trades", "child": "" }, "product_type": "Unsecured Business Loan", "equipment": { "type": "Car/Van/Ute", "condition": "New", "already_found": true, "details": "Free text description" }, "business_address": { "address": "1 Taylor Street", "suburb": "Moorabbin", "state": "VIC", "postcode": "3201" }, "abn": "12 612 877 442", "abn_lookup": { "state": "VIC", "postcode": "3189", "entity_type": "Individual/Sole Trader", "entity_type_code": "IND", "asic_num": "625531197", "acn": "625531197" }, "sales_monthly": 3000.00, "sales_annual": 45000.00, "expenses_monthly": 1500.00, "overdraft_loc_limit": 500.00, "tax_outstanding_arrangement": false, "gst_registered": true }, "owner": { "first_name": "John", "middle_name": "", "last_name": "Doe", "contact_number": "0444444444", "email": "[email protected]", "home_owner": true, "lvr": "70.00%", "dob": "1988-12-31", "driving_licence_num": "xxxxxxxxx", "driving_licence_expiry": "2025-12-31", "driving_licence_state": "VIC", "address": { "address": "1 Taylor Street", "suburb": "Moorabbin", "state": "VIC", "postcode": "3189" }, "owner_type": "Director and Shareholder", "equity": "95.00%", "credit_history": "No Credit History" }, "bank_statements": { "collected": true, "bs_doc_id": ["Z9ND3K5D2","G8HG2K9S7"] }, "notes": "These are some notes, they can be left by the broker or by the applicant themselves" } }
File Attachments GET /leads/get-attachments/[lead_ref]?mins=[minutes]
Example URL: https://lenders-api.lend.com.au/v1/leads/get-attachments/abc1234?mins=2
Our brokers can upload files / documents to a lead (e.g. copies of a driving licence, certificates, trust documents, etc), by default these files are protected and all access is unauthorised.
You can grant yourself access to these files for a short period of time using this API.
Should you call this API with every lead you collect?
You can, however it causes unnecessary overheads on both your side, and our side, so we suggest you don't.
We recommend you only call this API if there are any files attached to the lead. When you use the Get Full Lead API, there is an int field called data.number_of_file_attachments, if this value is 1 or more, then there are file attachments with this lead.
Request Details
URI / Query String | Required | Info |
---|---|---|
lead_ref | ✓ | The unique identifier for the lead you're trying to access. |
mins |
Number of minutes you want to grant yourself access to this lead's files. An integer value. Maximum value: 5, Default value: 2. |
Response
Here's a breakdown of the data you'd expect back in the response.
Field | Type | Length | Info |
---|---|---|---|
success | Bool | Whether this request was successful or not. Follows the same data-structure for all APIs. | |
data | Array | Contains all the file objects | |
data[i]tag | string | 250 | We treat this as a "title", by default it's similar to the file_name, however, a broker can change this to be a more friendly readable name (e.g. Scan of Driving Licence). |
data[i]file_name | string | 250 | The cleansed filename for this file. It will contain the file-extension too (e.g. example-file-1.png) |
data[i]link | longtext | A unique, time-sensitive link to the file. This link will expiry after the number of minutes you requested access for. |
Pseudo Response
Here's a pseudo example of the response you'd expect to see.
{ "success": true, "data": [ { "tag": "Diving Licence Front", "file_name": "example-file-1.png", "link": "https://s3.ap-southeast-2.amazonaws.com/path/to/file/example-file-1.png?..." }, { "tag": "Driving Licence Back", "file_name": "example-file-2.png", "link": "https://s3.ap-southeast-2.amazonaws.com/path/to/file/example-file-2.png?..." } ] }
Product-Specific Objects
Occosionally, the Get Full Lead API will contain an additional object depending on the Product Type. This section will detail a list of the additional data you can collect, which objects you can find them in, and when they will be available.
Asset Finance asset_finance_data
If a broker has completed a full application for Asset Finance, the asset_finance_data object will be available (by default, it will not exist).
For simplicity, you could simply check if the asset_finance_data object exists, if it does, then you can reliably use the data.
Object Location
The asset_finance_data object is located in the same location as the lead object. Below, it is highlighted in yellow.
{
"success": true,
"data": {
"lead_ref": "abc1234",
"number_of_file_attachments": 0,
"who_to_contact": { ... },
"broker_details": { ... },
"lead": { ... },
"owner": { ... },
"bank_statements": { ... },
"asset_finance_data": { ... },
"notes": "..."
}
}
The Object
Here's a breakdown of the data you'd expect back in the asset_finance_data object.
You may notice some similarities with the data.owner object, this is because they are from the same source, data.owner is still the main "Point of Contact", and this asset_finance_data object is all people for the application.
Field | Type | Length | Info |
---|---|---|---|
the_purchase | Details about the equipment purchase that this application is for. | ||
the_purchase.equipment | Picklist |
What category of equipment this purchase falls under. Available Values: Car/Van/Ute, Machinery, Truck, Yellow Goods, Fitout, Computers and Other. |
|
the_purchase.description | String | 255 | A brief description of the equipment they would like to purchase. Freetext. |
the_purchase.year | String | 4 | The year the equipment was manufactured. e.g. 2021. |
the_purchase.make | String | 100 | The make / brand of the equipment, freetext. e.g. Toyota. |
the_purchase.model | String | 100 | The make / brand of the equipment, freetext. e.g. Hilux. |
the_purchase.condition | Picklist |
What the condition of the equipment to be purchased? Available Values: New, Demo, Used and Unsure. |
|
the_purchase.reason_for_purchase | Picklist |
The reason why they are purchasing this equipment. Available Values: Additional, Replacement, Refinance and First Asset. |
|
the_purchase.sale_type | Picklist |
What type of sale is this? Available Values: Private Sale, Sale Hire Back, Inside Sales,Dealer, Other Sale, Balloon Refinance, Mid Term Refinance and Capital Refinance. |
|
the_purchase.reason_description | String | 255 | Any more details about the reason for purchase. Freetext. |
the_purchase.supplier_found | Bool | If they have found a supplier for the equipment yet. | |
the_purchase.supplier | String | 100 | The name of the supplier, e.g. "Melb CBD Toyota Dealership" |
the_purchase.supplier_type | Picklist |
DEPRECATED - Please use the_purchase.sale_type instead. Available Values: Dealer,Private without ABN,Private with ABN,Auction and Unsure |
|
the_purchase.supplier_address | String | 100 | The "street address" for this supplier. e.g. "Suite 3, Level 2, 1 Taylor Street". |
the_purchase.supplier_suburb | String | 50 | The suburb for this address. |
the_purchase.supplier_state | String | 3 | The Australian state for this address. We use short names: WA, VIC, etc |
the_purchase.supplier_postcode | String | 4 | The 4-character Australian postcode for this business. e.g. "3189". |
the_purchase.supplier_country | String | 2 | The 2-character country code for this address. e.g. "AU" for Australia. |
the_purchase.purchase_price | Decimal | A decimal value for the equipment purchase, for example 45000.00 | |
the_purchase.deposit | Decimal | A decimal value for the equipment deposit, for example 5000.00 | |
the_purchase.tradein | Decimal |
A decimal value for any equipment that is being traded in, for example 2000.00. Note: This is the tradein_value minus the tradein_debt. |
|
the_purchase.tradein_value | Decimal | A decimal value for the value of any equipment being traded in, for example 5000.00 | |
the_purchase.tradein_debt | Decimal | A decimal value for any outstanding finance on equipment being traded in, for example 3000.00 | |
the_purchase.balloon | Decimal | A decimal value for any balloon payment they want to arrange, for example 10000.00 | |
the_purchase.vehicle_type | Picklist | Available Values: Hybrid and Electric | |
the_purchase.odometer | Int | If applicable, how many kilometers has the vehicle done. Example: 20000 | |
the_purchase.hours | Int | If applicable, how many hours has the equipment been used for. 45 | |
the_purchase.personal_service_use | Picklist |
If applicable, what type of personal service will this be used for. Available Values: Taxi, Courier, Hire and Ride Share |
|
the_purchase.third_party_use | Picklist |
If applicable, is this going to be used by a third party? Available Values: Lease and Hire |
|
people | An array that contains all the people objects in this application. | ||
people[i]is_guarantor | Bool | If this person is a guarantor for the application. | |
people[i]title | Picklist |
The title for this person. Available Values: Dr, Mrs, Miss, Mr, Ms and Prefer not to say. |
|
people[i]first_name | String | 60 | This person's first name. |
people[i]middle_name | String | 60 | This person's middle name. |
people[i]last_name | String | 60 | This person's last name. |
people[i]sex | Picklist |
The sex for this person. Available Values: Male, Female, and Prefer not to say. |
|
people[i]marital_status | Picklist |
The marital status for this person. Available Values: Single, Married, De facto and Prefer not to say. |
|
people[i]contact_number | String | 20 | This person's preferred contact number. A valid 10-digit Australian contact number. This can be either a mobile or landline. |
people[i]email | String | 255 | A valid email address for this person. |
people[i]equity | String | 7 | The equity share of the business this person has. A decimal percentage. Value will include a % symbol. e.g. "75.00%". |
people[i]dob | String | Date | YYYY-MM-DD - This person's Date of Birth. |
people[i]number_of_dependants | Int | 2 | Total number of dependants this person has that are under the age of 18. |
people[i]driving_licence_num | String | 100 | This person's Australian driving licence number. |
people[i]driving_licence_expiry | Date | YYYY-MM-DD - The date this driving licence expires. | |
people[i]driving_licence_state | String | 3 | The shortcode Australian State from where this driving licence is from. e.g. "VIC, WA" etc. |
people[i]owner_type | Picklist | If we have a value for this, this person is one of the following: Director & Shareholder, Director Only, Shareholder Only, Partner, Sole Trader, Chairperson, Treasurer, Secretary, Trust Trustee, Trust Beneficiary, Trust Beneficial Owner and Other. If we do not have a value it will return false. | |
people[i]credit_score | Int | The Equifax credit score for this person. This is currently a value provided by the broker, it has not been verified by Lend. | |
people[i]credit_history | Picklist | The credit status of this person. Values can be Good, No Credit History, Paid Defaults, Unpaid Defaults, Ex Bankrupt and Not Sure. | |
people[i]notes | String | 250 | Any short-note specifically about this person. Freetext. This can be a note left by the broker, or by the person themselves. |
people[i]assets | An array that contains all personal asset objects (for that person). | ||
assets[ii]asset_type_name | Picklist |
The type of asset this is, example: Shares. Note: If you wish, you can access all our asset type picklist values from our Picklist APIs. They are categorised as "personal" and "business", the ones relevent to this field are the "personal" ones. |
|
assets[ii]description | String | 250 | Freetext string contain a brief description of the asset. |
assets[ii]value | Decimal | A decimal value of the asset, for example 5000.00 | |
assets[ii]finance_outstanding | Bool |
If this asset has any finance outstanding on it. Note: If this value is true, there will usually be a liability (in the liabilities array) to "pair" up with this asset. |
|
people[i]liabilities |
An array that contains all personal liability objects (for that person). Note: Fields in each liability object may not always be applicable, it depends on what the liability is. Examples: a Credit Card would use the limit and used fields, whereas a Home Loan would use the loan_balance and repayment_pm fields. There's two examples in the Pseudo Object below. |
||
liabilities[ii]liability_name | Picklist |
This is the type of liability this is, example: Credit Card. Note: If you wish, you can access all our liability type picklist values from our Picklist APIs. They are categorised as "personal" and "business", the ones relevent to this field are the "personal" ones. |
|
liabilities[ii]description | String | 250 | Freetext string contain a brief description of the liability. |
liabilities[ii]limit | Decimal | The maximum limit the person was approved for. A decimal value, for example 10000.00 | |
liabilities[ii]used | Decimal | The amount used (of their limit) the person was approved for. A decimal value, for example 250.30 | |
liabilities[ii]loan_balance | Decimal | If the liability is a loan, this is their remaining balance. A decimal value, for example 130000.00 | |
liabilities[ii]repayment_pm | Decimal | The monthly repayment amount for this liability. A decimal value, for example 415.56 | |
liabilities[ii]financier | String | 50 | This is freetext. The financier of the liability. |
liabilities[ii]to_pay_out | Bool | If this loan application needs to "pay out" this liability. Can be null. | |
people[i]addresses | An array of address objects for this person. In total, the array should contain at least 3 years worth of data. |
||
addresses[ii]living_status | Picklist |
What their current living arrangements are. Available Values: Owned Outright, Mortgaged, Renting, Boarding and Other |
|
addresses[ii]living_status_other | String | 250 | A freetext description of their living status. We ask this is their living status is "Other". Usually null. |
addresses[ii]landlord_name | String | 50 | The landlord's full name for this address. |
addresses[ii]landlord_contact_number | String | 10 | Valid AU phone number for the landlord. |
addresses[ii]address | String | 100 | The "street address" for this address. e.g. "Suite 3, Level 2, 1 Taylor Street". |
addresses[ii]suburb | String | 50 | The suburb for this address. |
addresses[ii]state | String | 3 | The Australian state for this address. We use short names: WA, VIC, etc |
addresses[ii]postcode | String | 4 | The 4-character Australian postcode for this business. e.g. "3189". |
addresses[ii]country | String | 2 | The 2-character country code for this address. e.g. "AU" for Australia. |
addresses[ii]date_from | Date | YYY-MM-DD - The date this person started living here. | |
addresses[ii]date_to | Date | YYY-MM-DD - The date this person ended living here. Can be null. | |
people[i]employment | An array of employment objects for this person. In total, the array should contain at least 3 years worth of data. |
||
employment[ii]employment_type | Picklist |
What type of employment is this. Available Values: Permanent Full Time, Permanent Part Time, Casual Full Time, Casual Part Time, Self Employed Contractor, Pensioner, Self Funded Retiree and Other. |
|
employment[ii]employer | String | 50 | Freetext string. The company name for this employment. |
employment[ii]position | String | 50 | Freetext string. The position this person held at this employment. |
employment[ii]date_from | Date | YYY-MM-DD - The date this person started this employment. | |
employment[ii]date_to | Date | YYY-MM-DD - The date this person ended this employment. Can be null. | |
business_assets | An array of business-asset objects for the business in this application. | ||
business_assets[i]asset_type_name | Picklist |
The type of asset this is, example: Property. Note: If you wish, you can access all our asset type picklist values from our Picklist APIs. They are categorised as "personal" and "business", the ones relevent to this field are the "business" ones. |
|
business_assets[i]description | String | 250 | Freetext string contain a brief description of the asset. |
business_assets[i]value | Decimal | A decimal value of the asset, for example 5000.00 | |
business_assets[i]finance_outstanding | Bool |
If this asset has any finance outstanding on it. Note: If this value is true, there will usually be a liability (in the liabilities array) to "pair" up with this asset. |
|
business_assets[i]debtors_money_owed | Decimal | A decimal value of the money owed by debtors to the business, for example 15000.00 | |
business_liabilities |
An array that contains all business liability objects (for the business in this application). Note: Fields in each liability object may not always be applicable, it depends on what the liability is. Examples: a OD/LOC would use the limit and used fields, whereas a Loan option would use the loan_balance and repayment_pm fields. There's two examples in the Pseudo Object below. |
||
business_liabilities[i]liability_name | Picklist |
This is the type of liability this is, example: ATO Debt. Note: If you wish, you can access all our liability type picklist values from our Picklist APIs. They are categorised as "personal" and "business", the ones relevent to this field are the "business" ones. |
|
business_liabilities[i]description | String | 250 | Freetext string contain a brief description of the liability. |
business_liabilities[i]limit | Decimal | The maximum limit the business was approved for. A decimal value, for example 10000.00 | |
business_liabilities[i]used | Decimal | The amount used (of the limit). A decimal value, for example 250.30 | |
business_liabilities[i]loan_balance | Decimal | If the liability is a loan, this is the remaining balance. A decimal value, for example 130000.00 | |
business_liabilities[i]repayment_pm | Decimal | The monthly repayment amount for this liability. A decimal value, for example 415.56 | |
business_liabilities[i]financier | String | 50 | This is freetext. The financier of the liability. |
business_liabilities[i]amount | Decimal | The total amount that was financed in this liability. This is usually assoiated with the Asset Finance liability types. | |
business_liabilities[i]commenced | Date | YYYY-MM-DD - This date value is the commencment date for the liability. This is usually assoiated with the Asset Finance liability types. | |
business_liabilities[i]term | Int | 2 | Months - This liabilities loan term in months, starting from the business_liabilities[i]commenced date. |
business_liabilities[i]balance | Decimal | A decimal value for the remaining loan balance. e.g. 125800.00 | |
business_liabilities[i]balloon | Decimal | A decimal value for any balloon arrangement on the loan. e.g. 5000.00 | |
business_liabilities[i]num_of_assets | Int | 4 | If this liability was used to gain a number of assets, this is the amount of assets. e.g. the liability type is "Asset Finance (multiple)". Can be null. |
business_liabilities[i]to_pay_out | Bool | If this loan application needs to "pay out" this liability. Can be null. | |
references | An array of references for this application. Note: Fields in each object may not always be applicable, it depends on who the reference is. | ||
references[i]reference_type | Picklist |
Who / What type of referee this is. Available Values: Accountant, Trade Reference, Personal Reference and Financier Reference. |
|
references[i]company_name | String | 100 | The name of the company this referee is from. Freetext. |
references[i]full_name | String | 100 | The referree's full name. |
references[i]email | String | 150 | The referree's valid email address. |
references[i]contact_number | String | 10 | A valid AU phone number for the referee. |
references[i]address | String | 100 | The "street address" for this referee. e.g. "Suite 3, Level 2, 1 Taylor Street". |
references[i]suburb | String | 50 | The suburb for this referee. |
references[i]state | String | 3 | The Australian state for this referee. We use short names: WA, VIC, etc |
references[i]postcode | String | 4 | The 4-character Australian postcode for this referee. e.g. "3189". |
references[i]country | String | 2 | The 2-character country code for this referee. e.g. "AU" for Australia. |
references[i]financier | String | 50 | If the reference type is a Financier Reference, this is who the financier is. Freetext. |
references[i]financier_acc_num | String | 50 | If the reference type is a Financier Reference, this is the applicant's account number with that financier. Freetext. |
references[i]date_completed | Date | 10 | YYYY-MM-DD - This field is relevant only for the Financier Reference Reference Type. The date the finance term finished. If no data we will return null. |
trust_details | If applicable, an object detailing all information about the trust entity. | ||
trust_details.type | Picklist |
What type of trust is this. Available Values: Corporate, Individual and Partnership. |
|
trust_details.ABN | String | The 11-character ABN for this business, can contain spaces. e.g. "12 612 877 442" and "12612877442". | |
trust_details.ACN | String | The 9-character ABN for this business, can contain spaces. e.g. "612 877 442" and "612877442". | |
trust_details.trustee_name | String | If applicable, what the entity name for the trust is. | |
trust_details.settlor | String | Available Values: Settlor is Applying Trustee,Settlor is Deceased,Settlor contributed <$10k at Establishment and None of the Above. | |
business_addresses | An object containing two values. | ||
business_addresses.mailing_address | An object containing all the details for the business mailing address. | ||
mailing_address.address | String | 100 | The "street address" for this address. e.g. "Suite 3, Level 2, 1 Taylor Street". |
mailing_address.suburb | String | 50 | The suburb for this address. |
mailing_address.state | String | 3 | The Australian state for this address. We use short names: WA, VIC, etc |
mailing_address.postcode | String | 4 | The 4-character Australian postcode for this business. e.g. "3189". |
mailing_address.country | String | 2 | The 2-character country code for this address. e.g. "AU" for Australia. |
business_addresses.registered_address | An object containing all the details for the businesses registered address. | ||
registered_address.address | String | 100 | The "street address" for this address. e.g. "Suite 3, Level 2, 1 Taylor Street". |
registered_address.suburb | String | 50 | The suburb for this address. |
registered_address.state | String | 3 | The Australian state for this address. We use short names: WA, VIC, etc |
registered_address.postcode | String | 4 | The 4-character Australian postcode for this business. e.g. "3189". |
registered_address.country | String | 2 | The 2-character country code for this address. e.g. "AU" for Australia. |
has_a_quote | Bool | This is purely a flag to inform you if a quote has been generated by the broker (and accepted by their client). | |
quote_details |
An object containing the broker's quote details. Note: If has_a_quote is false this key will be null. |
||
quote_details.brokerage_fee | Decimal | The brokerage fee the broker would like to charge. This is a decimal value and can either be a percentage or a set figure. Example: 4.00 or 1200.00. (Refer to brokerage_fee_unit to see which type it is). | |
quote_details.brokerage_fee_unit | Picklist |
This is the type of unit that brokerage_fee is using. Available Values: % or $. |
|
quote_details.origination_fee | Decimal | The broker's original fee. This is a $ decimal value. Example: 900.00. | |
quote_details.fees_included | Bool | Whether all fees were included in the quote or not. |
Pseudo Object
{ "the_purchase": { "equipment": "Car\/Van\/Ute", "description": "Brand new 2021 toyota hilux", "year": "2021", "make": "Toyota", "model": "Hilux", "condition": "New", "reason_for_purchase": "Additional", "reason_description": "I currently have 5, I need a 6th to keep up with demand.", "sale_type": "Balloon Refinance", "supplier_found": true, "supplier": "Melb CBD Toyota Dealership", "supplier_type": "Dealer", // Deprecated - Do not use "supplier_address": "123 Collins Street", "supplier_suburb": "Melbourne", "supplier_state": "VIC", "supplier_postcode": "3000", "supplier_country": "AU", "purchase_price": 45000.00, "deposit": 5000.00, "tradein": 2000.00, "tradein_value": 5000.00, "tradein_debt": 3000.00, "balloon": 2000.00, "vehicle_type": "Hybrid", "odometer": 20000, "hours": 45, "personal_service_use": "Uber", "third_party_use": "Lease" }, "people": [ { "title": "Mr", "first_name": "John", "middle_name": null, "last_name": "Doe", "is_guarantor": true, "sex": "Male", "marital_status": "Married", "contact_number": "0444555666", "email": "[email protected]", "equity": "70.00%", "dob": "1988-05-17", "number_of_dependants": 2, "driving_licence_num": "12345678", "driving_licence_expiry": "2024-05-01", "driving_licence_state": "VIC", "owner_type": "Director & Shareholder", "credit_score": 720, "credit_history": "Good", "notes": "Any notes here about this person.", "employment": [ { "employer": "Doe Gardening Pty Ltd", "employment_type": "Self Employed Contractor", "position": "Director", "date_from": "2015-01-01", "date_to": null } ], "addresses": [ { "living_status": "Mortgaged", "living_status_other": null, "landlord_name": null, "landlord_contact_number": null, "address": "32 Odonohue Road", "suburb": "ANGLESEA", "state": "VIC", "postcode": "3230", "country": "AU", "date_from": "2016-10-01", "date_to": null } ], "assets": [ { "asset_type_name": "Motor Vehicle", "description": "A ute, Ford", "value": 20000.00, "finance_outstanding": true }, { "asset_type_name": "Investment Property", "description": "An apartment in Melbourne CBD", "value": 630000.00, "finance_outstanding": true } ], "liabilities": [ { "liability_name": "Motor Vehicle Loan", "description": null, "limit": null, "used": null, "loan_balance": 10000.00, "financier": "CBA", "repayment_pm": 700.00, "to_pay_out": false }, { "liability_name": "Credit Card", "description": null, "limit": 1000.00, "used": 100.00, "loan_balance": null, "financier": "ING Bank", "repayment_pm": 500.00, "to_pay_out": null } ] } ], "business_assets": [ { "asset_type_name": "Property", "description": "Our day-to-day office", "value": 600000.00, "finance_outstanding": true, "debtors_money_owed": null }, { "asset_type_name": "Debtors", "description": "Who owe our business money", "value": null, "finance_outstanding": null, "debtors_money_owed": 15000.00 } ], "business_liabilities": [ { "liability_name": "Property Loan", "description": "Day to Day office", "loan_balance": "520000.00", "repayment_pm": "1200.00", "financier": "CBA", "limit": null, "used": null, "amount": null, "commenced": null, "term": null, "balance": null, "to_pay_out": null, "num_of_assets": null, "balloon": null, "ato_payplan_arranged": null }, { "liability_name": "Asset Finance (multiple)", "description": "Our fleet of cars", "loan_balance": "83000.00", "repayment_pm": "2400.00", "financier": "CBA", "limit": null, "used": null, "amount": null, "commenced": "2018-05-17", "term": 48, "balance": 42000.00, "to_pay_out": false, "num_of_assets": 4, "balloon": 6000.00, "ato_payplan_arranged": null } ], "references": [ { "reference_type": "Accountant", "company_name": "Google Inc", "full_name": "Joe Bloggs", "email": "[email protected]", "contact_number": "0444333222", "address": "123B-123C King Road", "suburb": "FAIRFIELD WEST", "state": "NSW", "postcode": "2165", "country": "AU", "financier": null, "financier_acc_num": null, "date_completed": null } ], "trust_details": { "type" : "Corportate", "ACN": "123456789", "ABN": "12345678910", "trustee_name": "Trust Entity Name", "settlor": "Settlor is Deceased" }, "business_addresses": { "mailing_address": { "address": "32 Odonohue Road", "suburb": "ANGLESEA", "state": "VIC", "postcode": "3230", "country": "AU" }, "registered_address": { "address": "32 Odonohue Road", "suburb": "ANGLESEA", "state": "VIC", "postcode": "3230", "country": "AU" } }, "has_a_quote": true, "quote_details": { "brokerage_fee": 4.00, "brokerage_fee_unit": "%", "origination_fee": 120.00, "fees_included": true } }
Updating
A compulsory part of being a lender on our panel involves providing real-time (or as close-as) status updates back to us. This is for all leads we send to you. These Updating APIs can be used to achieve this.
Status Update POST /leads/[lead_ref]
Example URL: https://lenders-api.lend.com.au/v1/leads/abc1234
This same API can be used for posting any updates to us about the lead. Below you will find examples on updating the status and also declining the lead (you're not going to fund the application).
Sandbox Test Leads: We have a range of test leads you can use in our sandbox environment. Jump down to our Test Leads section for more details.
Request - URI Details
URI | Required | Info |
---|---|---|
lead_ref | ✓ | The unique identifier for the lead you're trying to update. |
Request - Body Details
Field | Type | Required | Info |
---|---|---|---|
status | String | ✓ | The status you are updating the application to, see our Statuses API here for an up-to-date list of statuses you can use. This value must be one of the statuses from the Statuses API, otherwise your request will be rejected and an error will be returned. |
status_changed | String | ✓ | A Unix Timestamp of when this status was changed. |
notes | String | One or multiple Note Objects that you would like to push through to us. See the Note Objects section for more details. |
Pseudo Request Body
Here's a pseudo example of the payload you'd expect to post to us to a normal status update.
{ "status": "Attempting Contact", "status_changed": "1594043167", "notes": [] }
Pseudo Request Body - Declined Reasons
Here's also a pseudo example of the payload you'd expect to post to us for a declined status. There is essentially no difference, it's just you have selected the most accurate status for this decline.
{ "status": "Declined - Serviceability", "status_changed": "1594043167", "notes": [] }
Loan Offer POST /leads/[lead_ref]
Example URL: https://lenders-api.lend.com.au/v1/leads/abc1234
This same API can be used for posting any loan offers you make to the applicant. Although you can add the offer_amount field at any time, we suggest using it in conjuction with the "Offer Made" status, as this provides clear transparency to the broker.
Sandbox Test Leads: We have a range of test leads you can use in our sandbox environment. Jump down to our Test Leads section for more details.
Request - URI Details
URI | Required | Info |
---|---|---|
lead_ref | ✓ | The unique identifier for the lead you're trying to update. |
Request - Body Details
Field | Type | Required | Info |
---|---|---|---|
status | String | ✓ | The status you are updating the application to, when making a loan offer, we suggest using the "Offer Made" status. See our Statuses API here for an up-to-date list of statuses you can use. This value must be one of the statuses from the Statuses API, otherwise your request will be rejected and an error will be returned. |
status_changed | String | ✓ | A Unix Timestamp of when this status was changed. |
offer_amount | Decimal | ✓ | A decimal values of the loan amount you're offer the client. for example 46000.32 |
notes | String | One or multiple Note Objects that you would like to push through to us. See the Note Objects section for more details. |
Pseudo Request Body
{ "status": "Offer Made", "status_changed": "1594043167", "offer_amount": 46000.00, "notes": [] }
Funded POST /leads/[lead_ref]
Example URL: https://lenders-api.lend.com.au/v1/leads/abc1234
This same API can be used for posting back to us when a loan has been funded. You must pass us some basic details regarding this loan in the funded_details object. More details below.
Sandbox Test Leads: We have a range of test leads you can use in our sandbox environment. Jump down to our Test Leads section for more details.
Request - URI Details
URI | Required | Info |
---|---|---|
lead_ref | ✓ | The unique identifier for the lead you're trying to update. |
Request - Body Details
Field | Type | Required | Info |
---|---|---|---|
status | String | ✓ | You must use one of our "Funded" statuses. This is letting the broker know the application has been funded. Note: You can see what our funded statuses are by calling our Statuses API. These values rarely change, so you should be comfortable knowing the strings you see will always be accepted for your api version. |
status_changed | String | ✓ | A Unix Timestamp of when the application was funded. |
funded_details | Object | ✓ | More specific details of the loan provided, see fields below. |
funded_details.product | String | ✓ | The name of the product the loan is for. e.g. "Unsecured Business Loan". |
funded_details.deal_type | Picklist | ✓ |
The type of deal this is. Accepted Values: New Deal and Refinance |
funded_details.funded_amount | Decimal | ✓ | The loan amount the applicant was approved for. A decimal value, for example 46000.32 |
funded_details.funded_date | String | ✓ | A Unix Timestamp for when the loan was funded. |
funded_details.total_payback | Decimal | The total amount that the client has to pay back. A decimal value, for example 52620.90 | |
funded_details.broker_commission | Decimal | ✓ | The total amount of commission we should pay our broker. A decimal value, for example 420.00 |
funded_details.lend_commission | Decimal | ✓ | The total commission payment we should expect from you, (this means the total amount you will pay to Lend). A decimal value, for example 620.00.
Note: In this example, if lend_commission is 620, and broker_commission is 420, that means we pay the broker 420 out of the 620 you pay to us, leaving a balance of 200 as our commission. |
notes | String | One or multiple Note Objects that you would like to push through to us. See the Note Objects section for more details. |
Pseudo Request Body
{ "status": "Funded", "status_changed": "1594043167", "funded_details": { "product": "Name of Product", "deal_type": "Refinance", "funded_amount": 45000.00, "funded_date": "1594043167", "total_payback": 54000.00, "broker_commission": 400.00, "lend_commission": 500.00 }, "notes": [] }
Miscellaneous
Objects
Throughout this documentation we make references to certain objects within our APIs. Below you can find the more detailed breakdown of these objects.
Note Objects
The "Note" object is a very small object, you can submit multiple of them at the same time to the "Updating" range of APIs. They consist of just two fields.
Field | Type | Length | Info |
---|---|---|---|
note | String | 1000 | Any free-text note you'd like to share with the broker about their lead. |
note_added | String | 13 | the date time this note was added in Unix Timestamp format. |
{ "note": "Any free-text notes you would like to send to us.", "note_added": "1594043167" }
Statuses
To ensure the best possible experience for our brokers, we have a uniform set of statuses that all lenders must use. These statuses do not often change (however we do occasionally add some new ones), so you can rely on the values you see in the API response knowing it will be accepted.
Get Statuses GET /statuses
This API will give you an up-to-date list of statuses we will accept in the "Updating" range of APIs.
Response
Here's a breakdown of the data you'd expect back in the response.
Field | Type | Length | Info |
---|---|---|---|
success | Bool | Whether this request was successful or not. Follows the same data-structure for all APIs. | |
data[i] | Object |
A multi-dimensional array of different statuses you can use in the "Updating" APIs. You can not submit the key-name as a status, it must be one of the strings within the group. Statuses are "grouped" by their key names, they are: Attempting, In Progress, Rejected and Settled. |
Pseudo Response
Here's a pseudo example of the response you'd expect to see.
{ "success": true, "data": { "Attempting": [ "Attempting contact", "1st Attempted Call", "2nd Attempted Call", "3rd Attempted Call", .... ], "In Progress": [ "Work in progress", "Waiting on client", "Docs requested", .... ], "Rejected": [ "Unable to reach", "Duplicate", "Client declined - Do not contact", "Client declined - Not interested", "Client declined - No longer required", "Declined - General", .... ], "Settled": [ "Funded" .... ] } }
Picklists
To ensure the best possible experience for our brokers, we have a uniform set of values that all lenders must use. These values do not often change, and so you can rely on the values you see in these API responses. You can either GET all picklist values, or if you prefer, individual picklists.
See below for more details on each API.
Get All Picklists GET /picklists
If you want a full breakdown of all the picklists values we provide, this API will give you an up-to-date list. It includes all possible picklist values throughout our range of APIs (where detailed above).
Pseudo Response
Here's a pseudo example of the response you'd expect to see.
{ "success": true, "data": { "purpose": [ "Working Capital", "Inventory", ... ], "industry": [ { "industry": "Arts & Lifestyle", "children": ["Health & Fitness Centres, Gyms", "Other", ... ] }, ... ], "product_type": [ { "product_type_name": "Unsecured Loan", "children": null }, { "product_type_name": "Private Lending", "children": ["Bridging", "Term Loan", "Capitalised Interest", "Interest Only", ... ] }, ... ], "equipment": ["Car/Ute/Van", "Truck", ... ], "books_package": ["MYOB", "QuickBooks", "Xero", ... ], "asset_type": { "business": ["Property", "Savings", "Plant & Equipment", ... ], "personal": ["Home", "Investment Property", "Savings", ... ] }, "liability_type": { "business": ["ATO Debt", "Loan", "OD\/LOC", ... ], "personal": ["Credit Card", "Personal Loan", "Other Loan", ... ] } } }
Get Picklist GET /picklists/[picklist_type]
Example URL: https://lenders-api.lend.com.au/v1/picklists/purpose
If you don't want to retrieve all picklists (see Get All Picklists API), and instead you only want to retrieve a specific picklist, you can do so using this API. Simply append the type of picklist to the end of the URL. See below for possible values.
Request Details
URI | Required | Info |
---|---|---|
picklist_type | ✓ |
The individual picklist values you want to retrieve. Possible values are: purpose, product_type, equipment, industry, books_package, asset_type and liability_type. |
Pseudo Response (purpose)
Here's a pseudo example of the response you'd expect to see if you was to request the purpose picklist.
{ "success": true, "data": [ "Working Capital", "Inventory", ... ] }
Pseudo Response (product_type)
Here's a pseudo example of the response you'd expect to see if you was to request the product_type picklist.
{ "success": true "data": [ { "product_type_name": "Unsecured Loan", "children": null }, { "product_type_name": "Private Lending", "children": ["Bridging", "Term Loan", "Capitalised Interest", "Interest Only"] }, ... ] }
Test Leads
Your Webhook
As detailed in the Collecting Leads section, we can post lead refs to you. If you want to emulate this same behaviour, we suggest you use Postman (or a similar RESTful client such as "Insomnia") and POST the payload to your webhook. You can use the payload detailed in the Webhook section, just simply change the lead_ref to one from the test leads table below.
Sandbox Test Leads
In our Sandbox environment we have a handful of test leads for you to experiment with. These leads will work across all APIs, and, one (1) particular lead will always return an error when you try to retrieve it. This is by design so you can test different scenarios.
Below are the lead_refs for these test leads, with some basic information and the expected behaviour from the APIs.
Sandbox leads are the same for all API users, this provides you a consistent and expected behaviour. The behaviour for each test lead is detailed in the table below.
To maintain this consistent and exact behaviour for Sandbox users, we instantly "cleanse" a lead once an API request has finished. We do this by terminating all data you posted and returning the lead back to it's previous state.
Test Lead Refs
Lead Ref | Info | GET APIs | POST APIs | |
---|---|---|---|---|
/leads | /leads/xxxxxxx | All Endpoints | ||
abc1234 | This is a lead that a Broker has sent to you, and that broker would like you to liaise with them directly (no communication with the applicant). | It will be listed in the API, and we always display a "sent to you" time of 30-mins ago. The been_retrieved field will be false. | You will be able to access the full details (pseudo) of this lead. | You will be able to process status updates as normal. |
def5678 | This is a lead that a Broker has sent to you, and that broker does not want any involvement with this lead (you contact the applicant directly). | It will be listed in the API, and we always display a "sent to you" time of 30-mins ago. The been_retrieved field will be false. | You will be able to access the full details (pseudo) of this lead. | You will be able to process status updates as normal. |
ghi1234 | This is a lead that a Broker has sent to you, and that broker would like you to liaise with them directly (no communication with the applicant). | It will be listed in the API, and we always display a "sent to you" time of 30-mins ago. The been_retrieved field will be false. | You will be able to access the full details (pseudo) of this lead. Note: The asset_finance_data object is available for this lead (you can read about it here). |
You will be able to process status updates as normal. |
uvw5432 | On rare occasions, we may send you a lead with no broker details. This is usually collected from one of our edge-case flows, this lead would have come directly from Lend. The actual lead data is the same, however the source of the lead (broker_details field) will probably be missing. | It will be listed in the API, and we always display a "sent to you" time of 30-mins ago. The been_retrieved field will be true. | You will be able to access the full details (pseudo) of this lead. | You will be able to process status updates as normal. |
xyz9876 | See comment in the GET APIs column (right). | It will be listed in the API, and we always display a "sent to you" time of 30-mins ago. The been_retrieved field will be false. | You will not be able to retrieve this lead, and we will return an Error to you. The error you'll receive is "You are no longer the active lender on this lead", you can read more info about this scenario in the Errors List. | You will be able to process status updates as normal. |
Errors
Data-Structure
All our API responses follow a uniformed data-structure, so you will always have a success key which is a boolean.
If for some reason your request was unsuccessful, success will be false, and you will have an error message returned to you in the error field.
Pseudo Response
Here's a pseudo example of the response you'd expect to see when your request was unsuccessful.
{ "success" : false, "error" : "ERROR MESSAGE HERE" }
Error List
We also extensively use http status codes too. Below is a table of error messages and http status codes. If you're not familiar with http status code standards, you can read about them here.
Error Message | HTTP Status Code | Info |
---|---|---|
Internal Server Error | 500 | The one we all hate... a generic Internal Server Error. Hopefully you should never experience this, however, if you do, rest assured we have been alerted and we will be investigating it ASAP. If this error persists feel free to reach out to us. |
Unauthorised - Lender Account is disabled | 403 | Your account with Lend is not active, you will need to get in touch with us. |
Unauthorised - API Key has been revoked | 403 | The API key you are using is no longer active, you will need to get in touch with us to generate a new one. |
Unauthorised - Invalid API Key | 403 | The API key you are using is not recognised with any account. |
You are unauthorised to access this lead | 403 | You were never sent the lead you are trying to access, so you do not have permission to view it. |
You are unauthorised to update this lead | 403 | You were never sent the lead you are trying to update, so you can not update it. |
You are no longer the active lender on this lead | 403 | This error is specific to the GET Full Lead API. In theory this scenario should never happen if you retrieve your leads in a timely manner. Why would this happen? You're essentially too late / slow at retrieving the lead (e.g. a few hours+, sometimes days). As part of your SLA Agreement you will have to attempt contact in a timely manner, if you haven't even retrieved a lead then it's evident you are not attempting contact, and so, the broker has revoked you (they no longer want you to work on this lead), and they sent it to another lender. Note: If for some mysterious reason you do have this lead in your system (e.g. manually added, or an old lead, etc) then you can still process status updates via the POST APIs. |
[FIELD_NAME] - This field is required | 422 | The data you're submitting in your POST request body is missing a field that is required. |
[NAME_OF_FIELD] - This field is required with a [STATUS_GROUP] status | 422 | The data you're submitting in your POST request body is missing a field that is required for this particular status group. All required fields for status updates are detailed in the Updating range of APIs. |
Invalid [URL_PARAM] parameter, should be a unix timestamp | 400 | The [URL_PARAM] is the name of a parameter in your request URL. Example: Using ?since=Yesterday would produce the following error: "Invalid since parameter, should be a unix timestamp". |
[FIELD_NAME] - Invalid field name | 400 | The data you're submitting in your POST request body contains a field we do not accept. |
The status provided is not a valid status | 400 | We only accept statuses that are from our uniformed list. If you provide an incorrect/invalid status it will not be accepted. Read here for more details. |
Changelog
All Updates
Here you're going to find a full list of changes and improvements to the LenderAPI.
Date | API Version | Change |
---|---|---|
2021-05-12 | v1 | The Product Specific Object "Asset Finance" is no longer Beta. The Product Specific Object (Asset Finance) has been in a Beta release since 25-11-2020, as of today this object has now officially been released and is no longer in Beta. As part of this official release we renamed the trust_details.partnership_name field to trust_details.trustee_name. |
2021-04-22 | v1 | Sandbox ghi1234 test lead has been updated On the 12th Apr 2021 (the last changelog entry) we released additional fields to the "Asset Finance Data" object. All those new additional fields are available in our Sandbox environment using the ghi1234 test lead. You can read more about this test lead here. |
2021-04-12 | v1 | Additional Data available in the Asset Finance object The Product Specific Asset Finance object has been updated. These include Credit Scores, and three new categories of data: Trust Details, Business Addresses, Finance Quote Details. |
2021-04-12 | v1 | DEPRECATION NOTICE: A field in the Asset Finance object has been deprecated We have deprecated the the_purchase.supplier_type field from the Product Specific Asset Finance object. As of 2022-04-11 (Monday) this field will no longer we available, instead we encourage you to use the new the_purchase.sale_type field. |
2021-01-25 | v1 | 1800 & 1300 phone numbers For all phone numbers in this documentation, we describe the fields as "Australian 10-digit valid phone number", this description is still true, however, the API now supports Australian 1800 & 1300 phone numbers. |
2021-01-13 | v1 | Bug Fix for an edge-case scenario The Get Full Lead API had a rare edge-case scenario, where a field in the API which is usually mandatory was throwing an error because no data existed for it. No integrations are impacted as this field will continue to be mandatory. We quickly resolved this within 2 business-hours of being alerted. |
2020-12-10 | v1 | Attachments API is finally here! You can now download any files attached to a lead by using the new "Get Attachments" API. These files are uploaded by our Brokers and can include sensitive data (e.g. Copies of a Driving Licence, etc). For this reason, once you make a request for the files, the links are time-sensitive and will expire. You can read more about it in the Get Attachments API here. |
2020-12-07 | v1 | We've added an additional test lead to sandbox. On the 25th Nov 2020 we launched the "Asset Finance Data" object (see changelog below), you now have a test lead in the sandbox environment to test this new object. Simply use lead ref ghi1234 to access it. You can read more about this test lead here. |
2020-12-04 | v1 | Monitoring - We've added a System Status API You now have the ability to live-monitor the API to check our system status. Have a look at the Monitoring section for more details. |
2020-11-26 | v1 | We extended the Picklist APIs by adding three new types. Those new types are: books_package gives you the accounting software options, asset_type gives you a breakdown of the different type of assets that can be added to a lead, they are categorised by business (for business assets) and personal (for personal assets), and finally, we added liability_type to see what liabilities we collect (again, these are categorised by business and personal). Click Here to see them. |
2020-11-25 | v1 | Added the new "Asset Finance Data" object. Our brokers were introduced to a huge update, part of this update is the ability for Brokers to submit much more detailed information when the lead is for "Asset Finance". Click here to read about the new asset_finance_data object, and when you can access it. |
Beginning of changelog - changes prior this this are undocumented |