Customising offers

The offers API also allows clients to select a specific advance amount and override the default offer presets, instead returning a larger number of offers for that amount. This can be executed either on the initial request to the /offers endpoint as a primary user experience, or through a subsequent call to it after offers have already been generated for the merchant.

This is controlled by two fields on the application object in the request body, amount_requested and apply_offer_presets. These can be used individually or together.

  • By setting an amount_requested, Liberis will attempt to gather prices for that amount specifically. If omitted, offers returned will be for the maximum amount the merchant eligible for based on our decisioning checks.
  • By toggling apply_offer_presets, Liberis will either return a smaller preset list of offers or a larger set of all offers for that merchant. This can be used in tandem with amount_requested to return a larger set of offers for a specified amount. This larger set of prices allows the client to build a 'customise' function, providing the merchant offer refinement functionality by moving through the list of offers returned using field filters.

Requesting custom offers

For experiences where a Merchant has predefined their preferred advance amount prior to searching for finance providers or/and the partner wants to display a larger set of offers choose from:

🚧

We may not be able to return any offers for the merchant when providing an advance amount if they aren't eligible for that limit. When customising advance amount after an initial offer request, use the 'limits' returned in the initial response as a range.

Request

{
 "application": {
        "merchant_id": "PO12345",
        "intended_use_of_funds": "Purchase Stock",
        "amount_requested": 25000.00,
        "apply_offer_presets": false,
        "currency": "GBP",
    },
    "consents": {... },
    "applicants": [{}],
    "company": {...}
}

Will return a large number of none preset offers for that advance amount:

Response

{
 "products": [
        {
            "product_id": "aeb18063-fcae-4151-997e-ec965aaf4f60",
            "name": "BCA",
            "description": "Business cash advance, repay in line with your revenue.",
            "decision": "Accepted",
            "repayment_mechanism": "Terminal Split",
            "limits": {
                "minimum": 5000.00,
                "maximum": 25000.00
            },
            "offers": [
                {
                  "advance_amount":25000.00,
                  ...
                },
                {  
                  "advance_amount":25000.00,
                  ...
                },
                {...},
                {...},
                {...},
                {...},
                {...},
                {...},
                {...}
            ]
        }
    ]
}

UI example


Customising after already requesting offers

For an experience where a set of offers has already been requested and the merchant wants to refine their prices:

Customising an offer using this method requires a prior call to the offers endpoint and an application to exist for the merchant.

  • Subsequent requests to the /offers endpoint in order to customise an offer will use the merchant_id as the reference to an existing application/set of offers.
  • As part of the initial request to the /offers endpoint, the limits for the merchants advance are returned and should be used if providing the advance amount in the request.
{
    "products": [
        {
            "limits": {
                "minimum": 5000.00,
                "maximum": 25000.00
            }
            ...
        }
    ]
}

NOTE: productId here is required and can be pulled from the response of the initial call to the /offers endpoint. This allows for forward compatibility as Liberis adds more product types.


Customising existing application using an advance amount

By providing a merchant_id and amount_requested the API will use the previously submitted application data to calculate a preset list of prices for that specific advance amount.

Request

{
    "application": {
        "merchant_id": "PO12345",
        "amount_requested":50000.00,
        "productId": "c1390cb3-fbdb-4564-8d68-acd80863f5af",
    }
}

Response

{
 "products": [
        {
            "product_id": "aeb18063-fcae-4151-997e-ec965aaf4f60",
            "name": "BCA",
            "description": "Business cash advance, repay in line with your revenue.",
            "decision": "Accepted",
            "repayment_mechanism": "Terminal Split",
            "limits": {
                "minimum": 5000.00,
                "maximum": 25000.00
            },
            "offers": [
                {
                  "advance_amount":50000.00,
                  ...
                },
                {  
                  "advance_amount":50000.00,
                  ...
                },
                {
                  "advance_amount":50000.00
                  ...
                }
            ]
        }
    ]
}

A set of advance amount specific offers are returned but are filtered to the agreed partner presets, allowing a concise user experience.

Example of UI:


Customising existing application using an advance amount and no presets.

By providing a merchant_id, amount_requested and apply_offer_presets flag, the API will use the previously submitted application data to calculate a larger set of prices for that specific advance amount.

Request

{
    "application": {
        "merchant_id": "PO12345",
        "amount_requested":25000.00,
        "apply_offer_presets": false,
        "productId": "c1390cb3-fbdb-4564-8d68-acd80863f5af",
    }
}

Response

{
 "products": [
        {
            "product_id": "aeb18063-fcae-4151-997e-ec965aaf4f60",
            "name": "BCA",
            "description": "Business cash advance, repay in line with your revenue.",
            "decision": "Accepted",
            "repayment_mechanism": "Terminal Split",
            "limits": {
                "minimum": 5000.00,
                "maximum": 25000.00
            },
            "offers": [
                {
                  "advance_amount":25000.00,
                  ...
                },
                {  
                  "advance_amount":25000.00,
                  ...
                },
                {...},
                {...},
                {...},
                {...},
                {...},
                {...},
                {...}
            ]
        }
    ]
}

The resulting data can be used in a more granular customise function. The offers returned can be navigated through using the fields on the offers object. In the example below, an advance amount of 25k has been requested and the UI moves through the offers set using the split percentage as the filter field:

Resulting UI


Offer expiry

An application and set of offers have a set expiry set at the point of creation. When attempting to customise an offer that has expired, the request will return a 404 and a new application will need to be submitted. If using our auto decisioning, this means a credit check will be executed on the merchants consumer file for a second time.

This implies partners should ideally keep track of this expiry after an initial set of offers is created rather than relying on the endpoint returning a 404 to control a process.