Capital icon

Dynamic financing offers

Learn how to get dynamic offers with flexible financing amounts and repayment terms.

Limited availability
Variable repayment terms (90, 180, and 360 days) for financing offers are currently in a pilot phase. To request access, reach out to your Adyen contact.


Adyen provides increased flexibility by supporting dynamic financing offers through the Capital API. Rather than presenting a list of fixed amounts, dynamic offers allow users to choose a preferred amount from a specified range.

Based on their processing history, users may receive up to three dynamic offers with repayment terms of 90, 180, and 360 days. Higher amounts are typically available with longer terms.

You can use data from dynamic offers, for example, to implement a slider in your user interface (UI) that lets users select their financing amount. Additionally, you can offer a dropdown or buttons for repayment term selection.

Requirements

Before you begin, take into account the following requirements, limitations, and preparations.

Requirement Description
Integration type You must have an Adyen for Platforms integration that supports Capital.
API credentials You must have a Balance Platform API key (for example, ws[_123456]@BalancePlatform.[YourBalancePlatform]) to access the Capital API.

Your API credential must have the following roles:
  • Balance Platform Capital Configuration role
  • Balance Platform Capital Grant Initiation role
Capabilities Make sure that your user have the following capability:
  • getGrantOffers
Limitations
  • Requests to the following endpoints are subject to rate limits in both Test and Live environments:
  • The amount a user selects on your UI must be within the range available to this user. However, you can set a custom logic for amount increments within the range. For example, you can specify steps of EUR 100 or EUR 500.
  • Each financing offer remains valid for seven days. After this period, a new offer is generated for an account holder if they still meet the qualification criteria. The range may differ from one offer to another.
Setup steps Before you begin, make sure:
  • You followed our compliance guidelines for Capital when creating user interfaces, marketing materials, and other processes.
  • You built a user interface that allows users to select their preferred financing amount from a range.

How it works

The process to get a financing offer through the dynamic offers flow is as follows:

  1. Make an API request to get the range of available financing for a specific account holder. The API may return up to three dynamic offers, each with a different range and repayment term. Use the data from the API response to present offers in your UI.
  2. After the user selects an amount and repayment term, make an API request to calculate a preliminary offer. This returns an initial breakdown of costs and conditions for the selected amount.
  3. When the user confirms their selection, make an API request to create a static offer. This action generates a legally binding offer with a final breakdown of costs and conditions.
  4. Get updates when a new offer is created for your account holder.

The following sections provide more details about each step of integrating dynamic financing offers.

1. Get the range of available financing

To get the financing range available for a specific user:

  1. Make a GET /dynamicOffers request including the following query parameters:

    Parameter Type Required Description
    accountHolderId String Required The unique identifier of that the dynamic offer is for.
    financingType String The type of financing that the offer is for. Currently, only businessFinancing is supported.

    This is the required icon. Required
    This is the conditionally required icon. Conditionally required

    The following code sample shows how to get the range of available financing for the account holder ID AH00000000000000000000001.

  2. The API can return up to three dynamic offers, each with a different range and repayment term. In the response, review the dynamicOffers object, which contains the following parameters for each dynamic offer returned. You can use this data to, for example, implement a slider in your UI, allowing users to choose their financing amount, and provide a dropdown or selector for repayment terms.

    Parameter Description
    accountHolderId` The unique identifier of the account holder that the dynamic offer is for.
    contractType The legal type of the offer. Possible values: loan, cashAdvance.
    expiresAt The expiration date and time of the offer validity period.
    financingType The type of financing that the offer is for. Currently, only businessFinancing is supported.
    id The unique identifier of the dynamic financing offer.
    maximumAmount An object containing the maximum amount of the financing offer, including both the value and the currency.
    minimumAmount An object containing the minimum amount of the financing offer, including both the value and the currency.
    repayment An object containing the details of the repayment configuration.
    repayment.term.estimatedDays The estimated period for repaying the grant, in days.
    repayment.term.maximumDays The maximum period for repaying the grant, in days.
    startsAt The starting date and time of the offer validity period.

2. Calculate a preliminary offer for a selected amount and term

When a user selects an amount and repayment term in your UI, you must show preliminary terms and conditions for the offer. This includes a selected amount, a daily repayment in basis points, a threshold amount, applicable fees, an estimated and a maximum repayment term, and an offer validity period.

The preliminary offer is for informational purposes only and cannot be used to initiate a grant.

To calculate a preliminary offer for selected amount and term:

  1. Make a POST /dynamicOffers/{dynamicOfferId}/calculate request. In the path, include the id of the dynamic offer that the user made a selection from.

    Requests to this endpoint are subject to rate limits. All requests to the endpoint, including those that result in failure, count toward the specified limit.

    • Test environment: 120 requests per minute
    • Live environment: 120 requests per minute
  2. Additionally, specify the following parameters in your request body:

    Parameter Type Required Description
    amount.currency String Required The three-character ISO currency code. This value must match the currency of the dynamic offer.
    amount.value Integer Required The financing amount that the user selected, in minor units. The amount be within the range of the corresponding dynamic offer.

    This is the required icon. Required
    This is the conditionally required icon. Conditionally required

  3. In the response, note the parameters in the following table:

    Parameter Description
    accountHolderId The unique identifier of the account holder that the dynamic offer is for.
    amount An object containing offer currency and value, in minor units.
    contractType The contract type of the offer.
    expiresAt The expiration date and time of the offer validity period.
    fee An object containing the fee currency and value, in minor units.
    repayment An object containing the details of the repayment configuration.
    repayment.basisPoints The repayment amount, in basis points, that is deducted daily from your user's incoming net volume.
    repayment.term.estimatedDays The estimated period for repaying the grant, in days.
    repayment.term.maximumDays The maximum period for repaying the grant, in days.
    repayment.threshold.amount An object containing the details of the minimum threshold amount that your user must repay every 30-day period.
    startsAt The starting date and time of the offer validity period.

3. Create a static offer for a selected amount and term

After the user selects a final amount and repayment term from the dynamic offer, use this data to create a static offer with definitive terms and conditions. This includes a fixed amount, a daily repayment in basis points, a threshold amount, applicable fees, an estimated and a maximum repayment term, and an offer validity period.

This is a formal, legally binding offer that must be provided for the user's review in your UI to comply with the user interface requirements for Capital.

To create a static offer for the selected amount and term:

  1. Make a POST /dynamicOffers/{dynamicOfferId}/grantOffer request. In the path, include the id of the dynamic offer that the user made their final selection from.

    Requests to this endpoint are subject to rate limits. All requests to the endpoint, including those that result in failure, count toward the specified limit.

    • Test environment: 30 requests per minute
    • Live environment: 30 requests per minute
  2. Additionally, specify the following parameters in your request body:

    Parameter Type Required Description
    amount.currency String Required The three-character ISO currency code. This value must match the currency of the dynamic offer.
    amount.value Integer Required The final financing amount that the user selected, in minor units. The amount be within the range of the corresponding dynamic offer.

    This is the required icon. Required
    This is the conditionally required icon. Conditionally required

  3. In the response, note the parameters in the following table. The id parameter represents a static offer and is required to configure a grant.

    Parameter Description
    accountHolderId The unique identifier of the account holder that the dynamic offer is for.
    amount An object containing offer currency and value, in minor units.
    contractType The contract type of the offer.
    expiresAt The expiration date and time of the offer validity period.
    fee An object containing the fee currency and value, in minor units.
    id The unique identifier of the static offer. Required to initiate a grant in the next step.
    repayment An object containing the details of the repayment configuration.
    repayment.basisPoints The repayment amount, in basis points, that is deducted daily from your user's incoming net volume.
    repayment.term.estimatedDays The estimated period for repaying the grant, in days.
    repayment.term.maximumDays The maximum period for repaying the grant, in days.
    repayment.threshold.amount An object containing the details of the minimum threshold amount that your user must repay every 30-day period.
    startsAt The starting date and time of the offer validity period.

4. Get notified about an offer created

You can get updates every time a new offer is created for an account holder by subscribing to the following webhooks:

Next steps