Adyen offers greater flexibility by supporting dynamic financing offers through the Capital API. Instead of a list of static offers with fixed financing amounts, a dynamic offer provides a range from which your user can select their preferred financing amount.
You can use the range from dynamic offers to, for example, create a slider in your user interface (UI) that allows your user to select the financing amount. After the user confirms their selection, you can create a static offer for the selected amount.
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:
|
| Capabilities | Make sure that your user have the following capability:
|
| Limitations |
|
| Setup steps | Before you begin, make sure:
|
How it works
The process to get a financing offer through the dynamic offers flow is as follows:
- Make an API request to get the range of available financing for a specific account holder. Use information from the API response to present the offer in your UI. For example, you can build a slider that allows your users to select their preferred amount.
- After the user selects an amount, make an API request to calculate a preliminary offer. This returns an initial breakdown of costs and conditions for the selected financing amount.
- When the user confirms their selection, make an API request to create a static offer for the selected amount. This action generates a legally binding offer with a final breakdown of costs and conditions.
- 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:
-
Make a GET
/dynamicOffersrequest including the following query parameters:Parameter Type Required Description accountHolderIdString The unique identifier of that the dynamic offer is for. financingTypeString The type of financing that the offer is for. Currently, only businessFinancing is supported. Required
Conditionally required
The following code sample shows how to get the range of available financing for the account holder ID AH00000000000000000000001.
-
In the response, note the parameters in the following table:
Parameter Description accountHolderIdThe unique identifier of the account holder that the dynamic offer is for. contractTypeThe contract type of the offer. expiresAtThe expiration date and time of the offer validity period. financingTypeThe type of financing that the offer is for. Currently, only businessFinancing is supported. idThe unique identifier of the dynamic financing offer. maximumAmountAn object containing the maximum amount of the financing offer, including both the value and the currency. minimumAmountAn object containing the minimum amount of the financing offer, including both the value and the currency. repaymentAn object containing the details of the repayment configuration. repayment.term.estimatedDaysThe estimated period for repaying the grant, in days. repayment.term.maximumDaysThe maximum period for repaying the grant, in days. startsAtThe starting date and time of the offer validity period.
2. Calculate a preliminary offer for a selected amount
When a user selects a financing amount in your UI, for example, by moving a slider to a specific value, you must show preliminary repayment configurations. This includes daily repayment in basis points, applicable fees, repayment period, and 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 the selected amount:
-
Make a POST
/dynamicOffers/{dynamicOfferId}/calculaterequest to calculate the repayment configuration for the selected financing offer. In the path, include thedynamicOfferIdreturned when you got the range of available financing.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
-
In the response, note the parameters in the following table:
Parameter Description accountHolderIdThe unique identifier of the account holder that the dynamic offer is for. amountAn object containing offer currency and value, in minor units. contractTypeThe contract type of the offer. expiresAtThe expiration date and time of the offer validity period. feeAn object containing the fee currency and value, in minor units. repaymentAn object containing the details of the repayment configuration. repayment.basisPointsThe repayment amount, in basis points, that is deducted daily from your user's incoming net volume. repayment.term.estimatedDaysThe estimated period for repaying the grant, in days. repayment.term.maximumDaysThe maximum period for repaying the grant, in days. repayment.thresholdAn object containing the details of the minimum threshold amount that your user must repay every 30-day period. startsAtThe starting date and time of the offer validity period.
Additionally, specify the following parameters in your request body:
| Parameter | Type | Required | Description |
|---|---|---|---|
amount.currency |
String | The three-character ISO currency code. This value must match the currency of the dynamic offer. | |
amount.value |
Integer | The financing amount that the user selected, in minor units. The amount be within the range of the corresponding dynamic offer. |
Required
Conditionally required
3. Create a static offer for a selected amount
After the user selects a final amount from the dynamic offer, use this amount to create a static offer with definitive repayment configurations. This includes the fixed financing amount, daily repayment in basis points, applicable fees, repayment period, and 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:
-
Make a POST
/dynamicOffers/{dynamicOfferId}/grantOfferrequest. In the path, include thedynamicOfferIdreturned when you got the range of available financing.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
-
In the response, note the parameters in the following table. The
idparameter represents a static offer and is required to configure a grant.Parameter Description accountHolderIdThe unique identifier of the account holder that the dynamic offer is for. amountAn object containing offer currency and value, in minor units. contractTypeThe contract type of the offer. expiresAtThe expiration date and time of the offer validity period. feeAn object containing the fee currency and value, in minor units. idThe unique identifier of the financing offer. Required to initiate a grant in the next step. repaymentAn object containing the details of the repayment configuration. repayment.basisPointsThe repayment amount, in basis points, that is deducted daily from your user's incoming net volume. repayment.term.estimatedDaysThe estimated period for repaying the grant, in days. repayment.term.maximumDaysThe maximum period for repaying the grant, in days. repayment.thresholdAn object containing the details of the minimum threshold amount that your user must repay every 30-day period. startsAtThe starting date and time of the offer validity period.
Additionally, specify the following parameters in your request body:
| Parameter | Type | Required | Description |
|---|---|---|---|
amount.currency |
String | The three-character ISO currency code. This value must match the currency of the dynamic offer. | |
amount.value |
Integer | The final financing amount that the user selected, in minor units. The amount be within the range of the corresponding dynamic offer. |
Required
Conditionally required
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:
balancePlatform.capital.dynamicOffer.createdwebhook: Notifies your server when a new dynamic offer is created for an account holder.- balancePlatform.balanceAccountHolder.capitalOffer.created webhook: Notifies your server when a new static offer is created for an account holder.