--- title: "Collect user data for higher financing amounts" description: "Learn how to collect additional KYC data from your user when they request more than EUR 25,000 in combined business financing." url: "https://docs.adyen.com/capital/collect-user-data" source_url: "https://docs.adyen.com/capital/collect-user-data.md" canonical: "https://docs.adyen.com/capital/collect-user-data" last_modified: "2026-05-25T12:55:00+02:00" language: "en" --- # Collect user data for higher financing amounts Learn how to collect additional KYC data from your user when they request more than EUR 25,000 in combined business financing. [View source](/capital/collect-user-data.md) In specific situations, Adyen may require your users to provide additional information about their businesses to comply with the [European Central Bank's AnaCredit data collection requirements](https://www.ecb.europa.eu/stats/ecb_statistics/anacredit/html/index.en.html). This requirement applies to certain legal entity types when: * A selected financing offer meets the threshold, usually EUR 25,000 or the equivalent in another supported currency. * The combined total of a new financing offer and any existing outstanding balance meets the threshold, usually EUR 25,000 or the equivalent in another supported currency. The amount thresholds and restrictions on legal entity types differ by country or region. Refer to the [country and region-specific regulations](#country-region-regulations) for more details. This page gives an overview of the steps needed to collect Know Your Customer (KYC) data from users requesting higher financing amounts. These instructions apply if you are integrating Capital through our [Capital API](https://docs.adyen.com/api-explorer/capital/latest/overview). If you are using our [UI components for Capital](/capital/capital-components), you can also benefit from this feature. The components automatically facilitate the collection of user data through the Adyen-hosted page, so no additional actions are required on your part. ## 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:- [Balance Platform API key](/capital/manage-access#manage-api-credentials) (for example, **ws\[\_123456]@BalancePlatform.\[YourBalancePlatform]**) to access the [Capital API](https://docs.adyen.com/api-explorer/capital/latest/overview). Ensure that you have asked your Adyen contact to assign the following role to your API credential: * **Balance\_Platform\_Capital\_Configuration\_Role** * **Balance\_Platform\_Capital\_Grant\_Initiation\_Role** - [Legal Entity Management API key](/platforms/manage-access/api-credentials-web-service?tab=create-lem_2) (for example, **ws\[\_123456]@Scope.Company\_\[YourCompanyAccount]**) to access the [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/latest/overview). | | **Capabilities** | Make sure that your user's account holder has the following [capabilities](/capital/manage-user-capabilities):- **getGrantOffers** - **receiveGrants** | | **Webhooks** | Subscribe to the following webhooks:- [Capital webhooks](https://docs.adyen.com/api-explorer/capital-webhooks/latest/overview) - [Configuration webhooks](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/overview) | | **Limitations** | * The feature is compatible only with legal entities created using **version 3 or higher** of the [Legal Entity Management API](https://docs.adyen.com/api-explorer/legalentity/latest/overview). * Requesting a higher financing amount automatically assigns the user to a risk level that requires additional KYC information. This assignment is currently irreversible, so users must provide the required data before receiving any future grants, even if those grants are below the higher financing threshold. * Users must submit their data before the expiration date of the grant offer. Otherwise, the offer expires, and the user need to request the grant again. * When using Adyen's-hosted page to collect user data, consider the following: * You have four minutes to redirect users before a hosted onboarding link expires. * The link can only be clicked once by the user. They have access to the hosted onboarding page for one hour. After this time, the link expires. The link also expires if the user refreshes the page. This ends the user's session. If the link expires, you must generate a new link. | | **Setup steps** | Before you begin, make sure:* You followed our [compliance guidelines for Capital](/capital/compliance-guidelines) when creating user interfaces, marketing materials, and other processes. * You reviewed the [country and region-specific regulations](#country-region-regulations) that may apply to your situation, such as thresholds for combined business financing or restrictions on legal entity types. * You [configured a grant](/capital/make-grant-request) to trigger the required checks. | ## How it works After a user selects a grant offer, you [send an API request to configure a grant](/capital/make-grant-request) for them. Adyen then performs checks to calculate the user's total exposure. This calculation includes the new grant request along with any outstanding balance for that user. If the total amount exceeds the threshold determined for a specific country or region, additional KYC data is required. The procedure is as follows: 1. Adyen performs checks whether the user's exposure exceeds the threshold. 2. Adyen sends webhooks to your server to [notify you that additional KYC data is required](#kyc-required). 3. You [collect the necessary KYC data](#collect-kyc) and submit it to Adyen. 4. Adyen reviews the user data and [notifies you about the verification results](#get-results). 5. After Adyen verifies the data and approves the grant, the grant amount is automatically disbursed to the user. The following diagram illustrates an example when a user selects an offer of EUR 25,000 or more, and how it affects the status of the grant and the user's capabilities. ![Higher financing amounts flow](/user/pages/docs/07.capital/16.collect-user-data/higher-financing-amounts.svg?decoding=auto\&fetchpriority=auto) ## 1. Select a way to collect user data Adyen offers two options for collecting additional KYC data from users requesting higher financing amounts. Select the option that best suits your needs. | Option | Hosted onboarding (recommended) | API-only | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **How it works** | Your users are redirected to a secure, Adyen-hosted page. You make a single API request to generate a one-time link, which you then present to the user in your user interface (UI). The hosted onboarding page handles the entire data collection process and user flow. | You build a custom user interface directly within your platform. You use Adyen's Legal Entity Management APIs to determine what information is needed from the user and then submit that data through subsequent API calls. | | **Provides you with** | * **Speed and simplicity**: Minimal technical effort as Adyen provides a prebuilt UI. * **Guaranteed compliance**: Adyen handles compliance with the latest regulatory requirements. The hosted onboarding page automatically includes all necessary fields for collecting information about the user's legal entity. * **Security**: Adyen manages the secure data collection environment. * **Customized design**: You can optionally [customize your hosted onboarding page](/platforms/onboard-users/customize-hosted-onboarding) so that the interface looks like it is owned by your platform. | - **Complete control**: Full control over UI and user experience. - **Native experienc**e: User never leaves your site. | | **Required from you** | * **Minimal resources**: You make a single API request to create a hosted onboarding link and then present the generated link to the user in your UI. | - **Significant resources**: Requires dedicated development resources. - **Data management**: You are responsible for identifying and submitting data. - **Ongoing maintenance**: You must stay informed and update your integration to comply with the latest regulatory changes. | ## 2. Get updates when additional data is required Adyen sends a webhook to your server to notify you that additional KYC data is required for the user to receive a higher financing amount. Alternatively, you can make an API request to get details about a specific grant. 1. Get updates about the grant status and required actions for higher financing amount using one of the following options: * Listen to [balancePlatform.grants.updated](https://docs.adyen.com/api-explorer/capital-webhooks/latest/post/balancePlatform.grants.updated) webhooks * Make a GET [/grants/{grantId}](https://docs.adyen.com/api-explorer/capital/latest/get/grants/\(grantId\)) request 2. In the webhook payload or the API response, note the following: * `actions.code`: Set to **AnaCreditCapabilityRule** * `actions.resolved`: Set to **false** * `status.code`: Set to **Reviewing** This indicates that an additional KYC data requirement has been established for the grant. To receive the grant, users must provide the necessary information. The grant status remains **Reviewing** until the required actions are completed. **balancePlatform.grants.updated - additional KYC data required** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "GR00000000000000000000001", "grant": { "amount": { "currency": "EUR", "value": 2999999 }, "counterparty": { "accountHolderId": "AH00000000000000000000001" }, "grantAccountId": "CG00000000000000000000001", "balances": { "currency": "EUR", "fee": 0, "principal": 0, "total": 0 }, "id": "GR00000000000000000000001", "status": { "code": "Reviewing", "actions": [ { "actionCode": "AnaCreditCapabilityRule", "resolved": false } ] } } }, "environment": "test", "timestamp": "2025-09-17T12:58:06.749Z", "type": "balancePlatform.grants.updated" } ``` The unresolved **AnaCreditCapabilityRule** code impacts the Capital capabilities, `getGrantOffers` and `receiveGrants`, of your user's account holder:\ \- [verificationStatus](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-verificationStatus): Set to **pending**\ \- [allowed](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-allowed): Set to **false**.\ \- [problems](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-problems): Contains verification errors that must be resolved. ## 3. Collect user data Follow the steps depending on your selected way of data collection: ### Tab: Hosted onboarding (recommended) 1. Create a link to the hosted onboarding page by making a POST [/legalEntities/{id}/onboardingLinks](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities/\(id\)/onboardingLinks) request, using the ID of the main legal entity in the path. You can optionally [customize your hosted onboarding page](/platforms/onboard-users/customize-hosted-onboarding), or the default Adyen page is shown to your user. **Create a hosted onboarding link** #### curl ```bash curl https://kyc-test.adyen.com/lem/v3/legalEntities/LE00000000000000000000001/onboardingLinks \ -H 'Authorization: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "themeId":"YOUR_THEME_ID", "redirectUrl":"https://your-company.example.com", "locale":"nl-NL" }' ``` #### Java ```java // Adyen Java API Library v41.1.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Create the request object(s) // Send the request HostedOnboardingApi service = new HostedOnboardingApi(client); OnboardingLink response = service.getLinkToAdyenhostedOnboardingPage("id", onboardingLinkInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) // Send the request $service = new HostedOnboardingApi($client); $response = $service->getLinkToAdyenhostedOnboardingPage('id', $onboardingLinkInfo); ``` #### C\# ```cs // Adyen .NET API Library v34.0.2 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) // Send the request var service = new HostedOnboardingService(client); var response = service.GetLinkToAdyenhostedOnboardingPage("id", onboardingLinkInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.1.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const onboardingLinkInfo = { themeId: "YOUR_THEME_ID", redirectUrl: "https://your-company.example.com", locale: "nl-NL" } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.HostedOnboardingApi.getLinkToAdyenhostedOnboardingPage("id", onboardingLinkInfo); ``` #### Go ```go // Adyen Go API Library v21.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) // Send the request service := client.LegalEntityManagement() req := service.HostedOnboardingApi.GetLinkToAdyenhostedOnboardingPageInput("id").OnboardingLinkInfo(onboardingLinkInfo) res, httpRes, err := service.HostedOnboardingApi.GetLinkToAdyenhostedOnboardingPage(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v15.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "themeId": "YOUR_THEME_ID", "redirectUrl": "https://your-company.example.com", "locale": "nl-NL" } # Send the request result = adyen.legalEntityManagement.hosted_onboarding_api.get_link_to_adyenhosted_onboarding_page(request=json_request, id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v11.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :themeId => 'YOUR_THEME_ID', :redirectUrl => 'https://your-company.example.com', :locale => 'nl-NL' } # Send the request result = adyen.legalEntityManagement.hosted_onboarding_api.get_link_to_adyenhosted_onboarding_page(request_body, 'id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.1.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.HostedOnboardingApi.getLinkToAdyenhostedOnboardingPage("id", onboardingLinkInfo); ``` 2. In the response, note the `url`. This is the link to the hosted onboarding page. You need to provide this link to the user in the next step. **Hosted onboarding link created** ```json { "url": "YOUR_HOSTED_ONBOARDING_LINK" } ``` 3. Provide the user with a link to the hosted onboarding page. For example, in your UI, show a link or button. When the user selects it, get the hosted onboarding link you generated in the previous step, and redirect the user to the page. ![Collect data through hosted onboarding](/user/pages/docs/07.capital/16.collect-user-data/collect-with-hosted-onboarding.svg?decoding=auto\&fetchpriority=auto) The user can then provide details about their business on the hosted onboarding page. After providing all required information, users must select **Submit data**. This automatically sends the data to Adyen. ### For businesses with an immediate parent or ultimate parent company If the user's business has an immediate parent or ultimate parent company, they must provide the details for those companies. To do this, the user must create separate legal entities for each parent company and link them to their main legal entity. This can be completed on the hosted onboarding page. ![Ownership structure](/user/pages/docs/07.capital/16.collect-user-data/ownership-structure.svg?decoding=auto\&fetchpriority=auto) ### Tab: API-only 1. Determine what data needs to be collected from the user by choosing one of the following options: * Listen to [balancePlatform.accountHolder.updated](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/post/balancePlatform.accountHolder.updated) webhooks * Make a GET [/accountHolders/{id}](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)) request 2. In the webhook payload or API response, note the following for each of the Capital capabilities: * [capabilities](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities) array, including * [verificationStatus](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-verificationStatus): Set to **pending** * [allowed](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-allowed): Set to **false** * [problems](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-problems) array: Contains [verification errors](#verification-errors), including the indication of what data is missing, that must be resolved. **balancePlatform.accountHolder.updated** ```json { "id" : "LE00000000000000000000001", "type" : "organization", "organization" : { "legalName" : "Test", "type" : "privateCompany", "vatNumber" : "NL123456789B01", "registrationNumber" : "12345678", "registeredAddress" : { "street" : "My street", "city" : "AMS", "postalCode" : "1052AA", "country" : "NL" }, "doingBusinessAsAbsent" : true, "registrationNumberAbsent" : false }, "documentDetails" : [ { "id" : "SE00000000000000000000001", "type" : "registrationDocument", "fileName" : "proof_of_registration_number", "description" : "Document type: registrationDocument", "active" : true, "modificationDate" : "2025-09-15T16:30:21.022+02:00" } ], "entityAssociations" : [ { "legalEntityId" : "LE00000000000000000000002", "type" : "signatory", "jobTitle" : "Director", "associatorId" : "LE00000000000000000000001", "entityType" : "individual", "name" : "Test" }, { "legalEntityId" : "LE00000000000000000000003", "type" : "uboThroughControl", "jobTitle" : "Director", "associatorId" : "LE00000000000000000000001", "entityType" : "individual", "name" : "Test" } ], "capabilities" : { "receiveGrants" : { "allowed" : false, "requested" : true, "verificationStatus" : "pending" }, "getGrantOffers" : { "allowed" : false, "requested" : true, "verificationStatus" : "pending" } }, "problems" : [ { "entity" : { "id" : "LE00000000000000000000001", "type" : "LegalEntity" }, "verificationErrors" : [ { "code" : "2_8227", "message" : "Status of legal proceedings was missing.", "type" : "dataMissing", "remediatingActions" : [ { "code" : "2_907", "message" : "Provide 'organization.statusOfLegalProceeding' to legal entity" } ], "capabilities" : [ "receiveGrants" ] }, { "code" : "2_8203", "message" : "organization.economicSector was missing", "type" : "dataMissing", "remediatingActions" : [ { "code" : "2_905", "message" : "Provide 'organization.economicSector' to legal entity" } ], "capabilities" : [ "receiveGrants" ] }, { "code" : "2_8226", "message" : "Legal form was missing.", "type" : "dataMissing", "remediatingActions" : [ { "code" : "2_906", "message" : "Provide 'organization.legalForm' to legal entity" } ], "capabilities" : [ "receiveGrants" ] }, { "code" : "2_8228", "message" : "Date of initiation of legal proceedings was missing.", "type" : "dataMissing", "remediatingActions" : [ { "code" : "2_908", "message" : "Provide 'organization.dateOfInitiationOfLegalProceeding' to legal entity" } ], "capabilities" : [ "receiveGrants" ] } ] } ] } ``` 3. Collect the necessary data from your user through your user interface. Note, if the user's business has an immediate parent or ultimate parent company, [additional steps are required](#parent-company). 4. Make a PATCH [/legalEntities/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)) request using the [id](https://docs.adyen.com/api-explorer/legalentity/4/patch/legalEntities/\(id\)#path-id) of the main legal entity in the path. In the request, include the new details. Only parameters passed in the request body are updated. The following is a complete list of KYC data points that may be required for higher financing amounts eligibility. | Parameter | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | [organization.dateOfInitiationOfLegalProceeding](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-dateOfInitiationOfLegalProceeding) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | Required if the value of `statusOfLegalProceeding` is one of the following:- **underJudicialAdministration** - **bankruptcyInsolvency** - **otherLegalMeasures**The date at which a legal proceeding was initiated, in **YYYY-MM-DD** format. Example: **2000-02-12** | | [organization.economicSector](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-economicSector) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The sector of the economy the legal entity operates within, represented by a 2-4 digit code that may include a ".". Example: **45.11** You can locate economic sector codes for your area by referencing codes defined by the [NACE](https://ec.europa.eu/eurostat/documents/3859598/5902521/KS-RA-07-015-EN.PDF) (Nomenclature of Economic Activities) used in the European Union. | | [organization.financialReports](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports) | Array of objects | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The financial report information of the organization. Required for organizations registered within the EU. | | [organization.financialReports.annualTurnover](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-annualTurnover) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The annual turnover of the business. The value must not include any separator symbols. Example: **400000** Required for organizations registered within the EU. | | [organization.financialReports.balanceSheetTotal](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-balanceSheetTotal) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The balance sheet total of the business.The value must not include any separator symbols. Example: **400000** Required for organizations registered within the EU. | | [organization.financialReports.currencyOfFinancialData](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-currencyOfFinancialData) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The currency used for the annual turnover, balance sheet total, and net assets, in [ISO currency code](/development-resources/currency-codes#currency-codes) format. Example: **EUR** Required for organizations registered within the EU. | | [organization.financialReports.dateOfFinancialData](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-dateOfFinancialData) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The date the financial data were provided, in YYYY-MM-DD format. Example: **2000-02-12** Required for organizations registered within the EU. | | [organization.financialReports.employeeCount](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-employeeCount) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The number of employees of the business. Example: **1234** Required for organizations registered within the EU. | | [organization.financialReports.netAssets](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-financialReports-netAssets) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | The net assets of the business. The value must not include any separator symbols. Example: **400000** Required for organizations registered within the EU. | | [organization.globalLegalEntityIdentifier](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-globalLegalEntityIdentifier) | String | ![Conditionally required](/user/pages/reuse/image-library/01.icons/conditionally-required/conditionally-required.svg?decoding=auto\&fetchpriority=auto) | A 20-character, alpha-numeric [code](https://search.gleif.org/#/search/) for the organization, based on the [ISO 17442 standard](https://www.gleif.org/en/organizational-identity/introducing-the-legal-entity-identifier-lei/iso-17442-the-lei-code-structure). The value is not required if [registrationNumber](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#request-organization-registrationNumber) has been provided. | | [organization.headOfficeIndicator](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-headOfficeIndicator) | Boolean | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | Indicates that the registered business address is also the company's headquarters. | | [organization.institutionalSector](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-institutionalSector) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The institutional sector the organization operates within. The value must be in accordance with the [regulations of the European Central Bank](https://www.ecb.europa.eu/stats/ecb_statistics/anacredit/html/index.en.html). | | [organization.legalForm](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-legalForm) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The legal form for registration of the organization. Use a legal form listed within the [accepted legal forms (.xlsx format)](https://www.ecb.europa.eu/stats/ecb_statistics/anacredit/html/index.en.html) compiled by the Central Bank of Europe. | | [organization.statusOfLegalProceeding](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-organization-statusOfLegalProceeding) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The status of any current or past legal action taken against the legal entity. Possible values:- **noLegalActionsTaken** - **underJudicialAdministration** - **bankruptcyInsolvency** - **otherLegalMeasures**If the value of this field is `noLegalActionsTaken`, then `dateOfInitiationOfLegalProceeding` is not required. Otherwise, it is required. Example: **noLegalActionsTaken** | ![This is the required icon.](/user/pages/reuse/image-library/01.icons/capital-legend/required.svg?decoding=auto\&fetchpriority=auto) Required\ ![This is the conditionally required icon.](/user/pages/reuse/image-library/01.icons/capital-legend/conditionally-required.svg?decoding=auto\&fetchpriority=auto) Conditionally required **Update legal entity details** #### curl ```bash curl https://kyc-test.adyen.com/lem/v3/legalEntities/LE00000000000000000000001 \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X PATCH \ -d '{ "economicSector" : "45.11", "legalForm" : "EU300", "statusOfLegalProceeding" : "noLegalActionsTaken", "financialReports" : [ { "annualTurnover" : "150000", "balanceSheetTotal": "350000", "currencyOfFinancialData" : "EUR", "dateOfFinancialData" : "2024-02-12", "employeeCount" : "50", "netAssets" : "400000" } ] } }' ``` #### Java ```java // Adyen Java API Library v41.1.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Create the request object(s) LegalEntityInfo legalEntityInfo = new LegalEntityInfo(); // Send the request LegalEntitiesApi service = new LegalEntitiesApi(client); LegalEntity response = service.updateLegalEntity("id", legalEntityInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $legalEntityInfo = new LegalEntityInfo(); $legalEntityInfo; // Send the request $service = new LegalEntitiesApi($client); $response = $service->updateLegalEntity('id', $legalEntityInfo); ``` #### C\# ```cs // Adyen .NET API Library v34.0.2 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) LegalEntityInfo legalEntityInfo = new LegalEntityInfo }; // Send the request var service = new LegalEntitiesService(client); var response = service.UpdateLegalEntity("id", legalEntityInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.1.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const legalEntityInfo = { economicSector: "45.11", legalForm: "EU300", statusOfLegalProceeding: "noLegalActionsTaken", financialReports: [ { annualTurnover: "150000", balanceSheetTotal: "350000", currencyOfFinancialData: "EUR", dateOfFinancialData: new Date("2024-02-12"), employeeCount: "50", netAssets: "400000" } ] } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.updateLegalEntity("id", legalEntityInfo); ``` #### Go ```go // Adyen Go API Library v21.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) legalEntityInfo := legalEntityManagement.LegalEntityInfo, } // Send the request service := client.LegalEntityManagement() req := service.LegalEntitiesApi.UpdateLegalEntityInput("id").LegalEntityInfo(legalEntityInfo) res, httpRes, err := service.LegalEntitiesApi.UpdateLegalEntity(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v15.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "economicSector": "45.11", "legalForm": "EU300", "statusOfLegalProceeding": "noLegalActionsTaken", "financialReports": [ { "annualTurnover": "150000", "balanceSheetTotal": "350000", "currencyOfFinancialData": "EUR", "dateOfFinancialData": "2024-02-12", "employeeCount": "50", "netAssets": "400000" } ] } # Send the request result = adyen.legalEntityManagement.legal_entities_api.update_legal_entity(request=json_request, id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v11.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :economicSector => '45.11', :legalForm => 'EU300', :statusOfLegalProceeding => 'noLegalActionsTaken', :financialReports => [ { :annualTurnover => '150000', :balanceSheetTotal => '350000', :currencyOfFinancialData => 'EUR', :dateOfFinancialData => '2024-02-12', :employeeCount => '50', :netAssets => '400000' } ] } # Send the request result = adyen.legalEntityManagement.legal_entities_api.update_legal_entity(request_body, 'id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.1.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const legalEntityInfo: Types.legalEntityManagement.LegalEntityInfo = }; // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.updateLegalEntity("id", legalEntityInfo); ``` ### For businesses with an immediate parent or ultimate parent company If the user's business has an immediate parent or ultimate parent company, you also need to collect the details for those companies. Then, submit this information to Adyen as follows: 1. Create a separate legal entity for each parent company, in addition to the main legal entity. For this, make a POST [/legalEntities](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities) request using the [organization](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#request-organization) details. The following example shows how to create a legal entity for the immediate parent company. **Create legal entity for immediate parent company** #### curl ```bash curl https://kyc-test.adyen.com/lem/v4/legalEntities \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X POST \ -d '{ "type": "organization", "organization": { "economicSector": "69.20", "legalForm": "EU200", "legalName": "Test", "principalPlaceOfBusiness": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "registeredAddress": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "statusOfLegalProceeding": "noLegalActionsTaken" } }' ``` #### Java ```java // Adyen Java API Library v41.1.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Create the request object(s) // Send the request LegalEntitiesApi service = new LegalEntitiesApi(client); LegalEntity response = service.createLegalEntity(legalEntityInfoRequiredType, null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) // Send the request $service = new LegalEntitiesApi($client); $response = $service->createLegalEntity($legalEntityInfoRequiredType); ``` #### C\# ```cs // Adyen .NET API Library v34.0.2 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) // Send the request var service = new LegalEntitiesService(client); var response = service.CreateLegalEntity(legalEntityInfoRequiredType); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.1.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const legalEntityInfoRequiredType = { type: "organization", organization: { economicSector: "69.20", legalForm: "EU200", legalName: "Test", principalPlaceOfBusiness: { city: "AMS", country: "NL", postalCode: "1052AA", street: "My street" }, registeredAddress: { city: "AMS", country: "NL", postalCode: "1052AA", street: "My street" }, statusOfLegalProceeding: "noLegalActionsTaken" } } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.createLegalEntity(legalEntityInfoRequiredType); ``` #### Go ```go // Adyen Go API Library v21.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) // Send the request service := client.LegalEntityManagement() req := service.LegalEntitiesApi.CreateLegalEntityInput().LegalEntityInfoRequiredType(legalEntityInfoRequiredType) res, httpRes, err := service.LegalEntitiesApi.CreateLegalEntity(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v15.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { "type": "organization", "organization": { "economicSector": "69.20", "legalForm": "EU200", "legalName": "Test", "principalPlaceOfBusiness": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "registeredAddress": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "statusOfLegalProceeding": "noLegalActionsTaken" } } # Send the request result = adyen.legalEntityManagement.legal_entities_api.create_legal_entity(request=json_request) ``` #### Ruby ```rb # Adyen Ruby API Library v11.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { :type => 'organization', :organization => { :economicSector => '69.20', :legalForm => 'EU200', :legalName => 'Test', :principalPlaceOfBusiness => { :city => 'AMS', :country => 'NL', :postalCode => '1052AA', :street => 'My street' }, :registeredAddress => { :city => 'AMS', :country => 'NL', :postalCode => '1052AA', :street => 'My street' }, :statusOfLegalProceeding => 'noLegalActionsTaken' } } # Send the request result = adyen.legalEntityManagement.legal_entities_api.create_legal_entity(request_body) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.1.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.createLegalEntity(legalEntityInfoRequiredType); ``` 2. In the response, note the generated legal entity [id](https://docs.adyen.com/api-explorer/legalentity/latest/post/legalEntities#responses-200-id). You need it to associate the additional legal entity with the main legal entity in the next step. **Legal entity for immediate parent company created** ```json { "organization": { "economicSector": "69.20", "legalForm": "EU200", "legalName": "Test", "principalPlaceOfBusiness": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "registeredAddress": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "statusOfLegalProceeding": "noLegalActionsTaken" }, "type": "organization", // Generated legal entity ID "id": "LE00000000000000000000002" } ``` 3. Associate additional legal entity with the main legal entity. For this, make a PATCH [/legalEntities/{id}](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)) request using the [id](https://docs.adyen.com/api-explorer/legalentity/4/patch/legalEntities/\(id\)#path-id) of the main legal entity in the path. In the request, specify an [entityAssociations](https://docs.adyen.com/api-explorer/legalentity/4/patch/legalEntities/\(id\)#request-entityAssociations) array containing the following parameters: When updating the [entityAssociations](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-entityAssociations), note that a PATCH request replaces the whole array. If you only want to update one array item, make sure you include all existing items along with the specific change in your request. | Parameter | Type | Required | Description | | -------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | | [entityAssociations.type](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-entityAssociations-type) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | Defines the relationship of the legal entity to the current legal entity. Set this to **ultimateParentCompany** or **immediateParentCompany**. | | [entityAssociations.legalEntityId](https://docs.adyen.com/api-explorer/legalentity/latest/patch/legalEntities/\(id\)#request-entityAssociations-legalEntityId) | String | ![Required](/user/pages/reuse/image-library/01.icons/required/required.svg?decoding=auto\&fetchpriority=auto) | The unique identifier of the associated legal entity. | ![This is the required icon.](/user/pages/reuse/image-library/01.icons/capital-legend/required.svg?decoding=auto\&fetchpriority=auto) Required\ ![This is the conditionally required icon.](/user/pages/reuse/image-library/01.icons/capital-legend/conditionally-required.svg?decoding=auto\&fetchpriority=auto) Conditionally required **Add entity association** #### curl ```bash curl https://kyc-test.adyen.com/lem/v4/legalEntities/LE00000000000000000000001 \ -H 'x-api-key: ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' \ -H 'content-type: application/json' \ -X PATCH \ -d ' "entityAssociations":[ { "legalEntityId":"LE00000000000000000000002", "type":"immediateParentCompany" } ] }' ``` #### Java ```java // Adyen Java API Library v41.1.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.legalentitymanagement.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.legalEntityManagement.*; Client client = new Client("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment.TEST); // Create the request object(s) LegalEntityInfo legalEntityInfo = new LegalEntityInfo(); // Send the request LegalEntitiesApi service = new LegalEntitiesApi(client); LegalEntity response = service.updateLegalEntity("id", legalEntityInfo, null); ``` #### PHP ```php setXApiKey("ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY"); $client->setEnvironment(Environment::TEST); // Create the request object(s) $legalEntityInfo = new LegalEntityInfo(); $legalEntityInfo; // Send the request $service = new LegalEntitiesApi($client); $response = $service->updateLegalEntity('id', $legalEntityInfo); ``` #### C\# ```cs // Adyen .NET API Library v34.0.2 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.LegalEntityManagement; using Adyen.Service.LegalEntityManagement; var config = new Config() { XApiKey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Create the request object(s) LegalEntityInfo legalEntityInfo = new LegalEntityInfo }; // Send the request var service = new LegalEntitiesService(client); var response = service.UpdateLegalEntity("id", legalEntityInfo); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v30.1.0 const { Client, LegalEntityManagementAPI } = require('@adyen/api-library'); const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const legalEntityInfo = { } // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.updateLegalEntity("id", legalEntityInfo); ``` #### Go ```go // Adyen Go API Library v21.2.0 import ( "context" "github.com/adyen/adyen-go-api-library/v21/src/common" "github.com/adyen/adyen-go-api-library/v21/src/adyen" "github.com/adyen/adyen-go-api-library/v21/src/legalEntityManagement" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", Environment: common.TestEnv, }) // Create the request object(s) legalEntityInfo := legalEntityManagement.LegalEntityInfo, } // Send the request service := client.LegalEntityManagement() req := service.LegalEntitiesApi.UpdateLegalEntityInput("id").LegalEntityInfo(legalEntityInfo) res, httpRes, err := service.LegalEntitiesApi.UpdateLegalEntity(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v15.0.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY" adyen.client.platform = "test" # The environment to use library in. # Create the request object(s) json_request = { } # Send the request result = adyen.legalEntityManagement.legal_entities_api.update_legal_entity(request=json_request, id="id") ``` #### Ruby ```rb # Adyen Ruby API Library v11.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) request_body = { } # Send the request result = adyen.legalEntityManagement.legal_entities_api.update_legal_entity(request_body, 'id') ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v30.1.0 import { Client, LegalEntityManagementAPI, Types } from "@adyen/api-library"; const config = new Config({ apiKey: "ADYEN_LEGAL_ENTITY_MANAGEMENT_API_KEY", environment: EnvironmentEnum.TEST }); const client = new Client(config); // Create the request object(s) const legalEntityInfo: Types.legalEntityManagement.LegalEntityInfo = }; // Send the request const legalEntityManagementAPI = new LegalEntityManagementAPI(client); const response = legalEntityManagementAPI.LegalEntitiesApi.updateLegalEntity("id", legalEntityInfo); ``` The following shows an example response for adding entity association. **Entity association added** ```json { "capabilities": { "getGrantOffers": { "allowed": false, "requested": true, "verificationStatus": "invalid" }, "receiveGrants": { "allowed": false, "requested": true, "verificationStatus": "invalid" } }, "entityAssociations": [ { "associatorId": "LE00000000000000000000001", "entityType": "organization", "legalEntityId": "LE00000000000000000000002", "name": "Test", "type": "immediateParentCompany" } ], "organization": { "doingBusinessAs": "Test", "economicSector": "55", "financialReports": [ { "annualTurnover": "132.00", "currencyOfFinancialData": "EUR", "dateOfFinancialData": "2000-01-01", "employeeCount": "123", "netAssets": "123.00" } ], "legalForm": "EU200", "legalName": "Test", "registeredAddress": { "city": "AMS", "country": "NL", "postalCode": "1052AA", "street": "My street" }, "registrationNumber": "12345678", "statusOfLegalProceeding": "noLegalActionsTaken", "type": "privateCompany", "vatNumber": "NL123456789B01" }, "type": "organization", "id": "LE00000000000000000000001", "problems": [ { "entity": { "id": "LE00000000000000000000001", "type": "LegalEntity" }, "verificationErrors": [ { "capabilities": [ "getGrantOffers", "receiveGrants" ], "code": "2_8141", "message": "'Registration document' was missing.", "remediatingActions": [ { "code": "1_501", "message": "Upload a registration document" } ], "type": "dataMissing" }, { "capabilities": [ "getGrantOffers", "receiveGrants" ], "code": "2_902", "message": "Terms Of Service forms are not accepted.", "remediatingActions": [ { "code": "2_902", "message": "Accept TOS" } ], "type": "invalidInput" } ] } ] } ``` ## 4. Get verification results and grant status updates In order for the grant to be approved, the verification errors must be resolved for the account holder and the necessary actions related to the grant must be completed. 1. Get updates about the verification status and results using one of the following options: * Listen to [balancePlatform.accountHolder.updated](https://docs.adyen.com/api-explorer/balanceplatform-webhooks/latest/post/balancePlatform.accountHolder.updated) webhooks * Make a GET [/accountHolders/{id}](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)) request The webhook and the API response indicates the following for each of the Capital capabilities: * [verificationStatus](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-verificationStatus): Set to **valid** * [allowed](https://docs.adyen.com/api-explorer/balanceplatform/latest/get/accountHolders/\(id\)#responses-200-capabilities-allowed): Set to **true** **balancePlatform.accountHolder.updated webhook - verification completed** ```json { "id" : "LE00000000000000000000001", "type" : "organization", "organization" : { "legalName" : "Test", "type" : "privateCompany", "vatNumber" : "NL123456789B01", "registrationNumber" : "12345678", "registeredAddress" : { "street" : "My street", "city" : "AMS", "postalCode" : "1052AA", "country" : "NL" }, "economicSector" : "55", "legalForm" : "NL206", "statusOfLegalProceeding" : "noLegalActionsTaken", "financialReports" : [ { "employeeCount" : "123", "annualTurnover" : "123.00", "netAssets" : "123.00", "currencyOfFinancialData" : "EUR", "dateOfFinancialData" : "2000-02-12" } ], "doingBusinessAsAbsent" : true, "registrationNumberAbsent" : false }, "documentDetails" : [ { "id" : "SE00000000000000000000001", "type" : "registrationDocument", "fileName" : "proof_of_registration_number_20250915_163020_983", "description" : "Document type: registrationDocument", "active" : true, "modificationDate" : "2025-09-15T16:30:21.022+02:00" } ], "entityAssociations" : [ { "legalEntityId" : "LE00000000000000000000002", "type" : "signatory", "jobTitle" : "Director", "associatorId" : "LE00000000000000000000001", "entityType" : "individual", "name" : "Kishore test" }, { "legalEntityId" : "LE00000000000000000000003", "type" : "uboThroughControl", "jobTitle" : "Director", "associatorId" : "LE00000000000000000000001", "entityType" : "individual", "name" : "Test" } ], "capabilities" : { "receiveGrants" : { "allowed" : true, "requested" : true, "verificationStatus" : "valid" }, "getGrantOffers" : { "allowed" : true, "requested" : true, "verificationStatus" : "valid" } } } ``` 2. Get updates about the grant status and required actions using one of the following options: * Listen to [balancePlatform.grants.updated](https://docs.adyen.com/api-explorer/capital-webhooks/latest/post/balancePlatform.grants.updated) webhooks * Make a GET [/grants/{grantId}](https://docs.adyen.com/api-explorer/capital/latest/get/grants/\(grantId\)) request The webhook and the API response indicates the following: * `actions.code`: Set to **AnaCreditCapabilityRule** * `actions.resolved`: Set to **true** * `status.code`: Set to **Approved** **balancePlatform.grants.updated - grant approved** ```json { "data": { "balancePlatform": "TestBalancePlatform", "id": "GR00000000000000000000001", "grant": { "amount": { "currency": "EUR", "value": 2999999 }, "counterparty": { "accountHolderId": "AH00000000000000000000001" }, "grantAccountId": "CG00000000000000000000001", "balances": { "currency": "EUR", "fee": 0, "principal": 0, "total": 0 }, "id": "GR00000000000000000000001", "status": { "code": "Approved", "actions": [ { "actionCode": "AnaCreditCapabilityRule", "resolved": true } ] } } }, "environment": "test", "timestamp": "2025-09-17T12:58:06.749Z", "type": "balancePlatform.grants.updated" } ``` ## Country and region-specific regulations For each country or region where Capital is available, the following table specifies: * The legal entity types that are subject to additional regulatory reporting. * The thresholds of combined business financing that trigger these requirements. | Country/Region | Additional regulatory reporting requirements | | -------------------------------------------------------------- | ------------------------------------------------ | | Australia | Not applicable | | Canada (excluding Saskatchewan) | Not applicable | | Finland | Organizations From EUR 25,000 | | France | Organizations From EUR 25,000 | | Spain (limited availability while in a pilot phase) | Organizations From EUR 3,000 | | Sweden | Organizations From EUR 25,000 (local equivalent) | | United Kingdom (including the Channel Islands and Isle of Man) | Organizations From EUR 25,000 (local equivalent) | | United States (including Puerto Rico) | Organizations From EUR 25,000 (local equivalent) | ## Verification errors The following are the common verification errors indicating missing data for higher financing amounts with Capital. Complete the corresponding remediation actions to resolve the errors. | Error | Error code | Remediation action | Remediation action code | | -------------------------------------- | ---------- | ---------------------------------------- | ----------------------- | | `ECONOMIC_SECTOR` | 2\_8203 | `provideEconomicSector` | 2\_905 | | `GLOBAL_LEGAL_ENTITY_IDENTIFIER` | 2\_8204 | `provideGlobalLegalEntityIdentifier` | 2\_909 | | `INSTITUTIONAL_SECTOR` | 2\_8225 | `provideInstitutionalSector` | 2\_910 | | `LEGAL_FORM` | 2\_8226 | `provideLegalForm` | 2\_906 | | `STATUS_OF_LEGAL_PROCEEDINGS` | 2\_8227 | `provideStatusOfLegalProceeding` | 2\_907 | | `DATE_OF_INITIATION_LEGAL_PROCEEDINGS` | 2\_8228 | `provideDateOfInitiationLegalProceeding` | 2\_908 | | `HEAD_OFFICE_INDICATOR` | 2\_8229 | `provideHeadOfficeIndicator` | 2\_911 | | `CNAE_NUMBER` | 2\_8230 | `noPossibleRemediation` | 1\_100 | ## Next steps [Get grant details](/capital/get-grant-balances) [Learn how to get information about all grants in your balance platform.](/capital/get-grant-balances) [Manage disbursements](/capital/manage-disbursements) [Learn how to get and update configurations of a disbursement.](/capital/manage-disbursements)