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.

Jump to the "Get Leads" API


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.

Please Note

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