--- title: "Integration and go-live checklist" description: "Checklist for building and taking your Adyen payouts integration live." url: "https://docs.adyen.com/payouts/payout-service/integration-checklist" source_url: "https://docs.adyen.com/payouts/payout-service/integration-checklist.md" canonical: "https://docs.adyen.com/payouts/payout-service/integration-checklist" last_modified: "2026-05-24T12:54:31+02:00" language: "en" --- # Integration and go-live checklist Checklist for building and taking your Adyen payouts integration live. [View source](/payouts/payout-service/integration-checklist.md) ##### Adyen APIs Postman collections ![](/user/pages/reuse/pfs-general/link-to-postman-collections/postman-icon.svg?decoding=auto\&fetchpriority=auto) Fork our [Postman collections](https://www.postman.com/adyendev/workspace/adyen-apis/overview) in your private workspace to start testing API calls with your own credentials. On this page, you can learn about the steps required to develop and go live with your Adyen Payouts integration. **Not yet in touch with Adyen?** [Contact us](https://www.adyen.com/contact/sales) to register your interest for Adyen Payouts. ## Requirements Before you begin, take into account the following requirements and preparations. | Requirement | Description | | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | **Integration type** | Use this information to build an [Adyen payouts integration](/payouts/payout-service). | | **[API credentials](/development-resources/api-credentials/)** | Make sure that you have [received your API credentials](/payouts/payout-service/get-started#get-test-accounts) from your Adyen contact. | | **Setup steps** | You must have completed the following steps with your Adyen contact: - [Designed your implementation](/payouts/payout-service/get-started#design-implementation). - Set up a [balance platform](/payouts/payout-service/account-structure-resources#balance-platform), along with other required resources. - Defined a settlement model that determines how sales funds are settled into your balance account. | ## Review your account structure Before you start the integration process, you must be familiar with the Adyen account structure. Every Adyen Payout integration must have at least the following resource types: * **Company account**: the account tied to your core business entity, that contains your merchant accounts. * **Merchant account**: the account where we process payments for your business. You can have multiple merchant accounts. * **Balance platform**: the accounting system in which you manage the flow of your business' funds. Your merchant account is connected to your balance platform. * **Legal entity**: represents your business entity, holds and links information required for verification checks. * **Account holder**: represents your business in the balance platform. The account holder is linked to the legal entity resource. * **Balance account**: the account where your business' funds are held. All financial activities, such as initiating payouts, happen through balance accounts. You can have multiple balance accounts, but in most use cases, one balance account is enough. * **Transfer instrument**: your verified bank account where you can pay out your funds. For details on the different account structures and example use cases, see [Account structure](/payouts/payout-service/account-structure-resources). ## Get ready for development At the end of this section you should have the API key and the webhook configuration that you need to start integrating. ### Check out Adyen’s server-side libraries Adyen provides [server-side API libraries](/development-resources/libraries/) in several languages. Installing a library is not required, but will save you development time, because a library: * Uses the latest API version. * Has generated models and examples to help you construct requests. * Sends the request to Adyen using its built-in HTTP client, so you do not have to create your own. Pick a library in the language of your choice and follow the [installation instructions](/development-resources/libraries). ### Generate and test your API keys Adyen is an API-first payment service provider, which means that you must integrate with our APIs to build and customize your implementation. You can [generate your API credentials](/payouts/payout-service/manage-access/api-credentials-web-service) in your [Customer Area](https://ca-test.adyen.com/). You need credentials for the following APIs: | API | Credential | Description | | ------------------------------------------------------------------------------ | ---------------------------------------------- | -------------------------------------------------------- | | [Transfers API](https://docs.adyen.com/api-explorer/transfers/latest/overview) | **ws\@BalancePlatform.\[YourBalancePlatform]** | Use this API to transfer funds and make one-off payouts. | To verify that your test API credential is working, make your first request. The following example shows a GET [/transfers](https://docs.adyen.com/api-explorer/transfers/latest/get/transfers) request: **Example GET /transfers request** #### curl ```bash curl https://balanceplatform-api-test.adyen.com/btl/v4/transfers?createdSince=2024-10-12T09:20:30Z&createdUntil=2024-11-13T08:45:30Z&limit=5 \ -H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \ -H 'content-type: application/json' \ -X GET \ -d '' ``` #### Java ```java // Adyen Java API Library v37.0.0 import com.adyen.Client; import com.adyen.enums.Environment; import com.adyen.model.transfers.*; import java.time.OffsetDateTime; import java.util.*; import com.adyen.service.transfers.*; Client client = new Client("ADYEN_BALANCE_PLATFORM_API_KEY", Environment.TEST); // Send the request TransfersApi service = new TransfersApi(client); FindTransfersResponse response = service.getAllTransfers(LocalDateTime.parse("2024-10-12T09:20:30Z");, LocalDateTime.parse("2024-11-13T08:45:30");, 5, null); ``` #### PHP ```php setXApiKey("ADYEN_BALANCE_PLATFORM_API_KEY"); $client->setEnvironment(Environment::TEST); $requestOptions['queryParams'] = array('createdSince' => '2024-10-12T09:20:30', 'createdUntil' => '2024-11-13T08:45:30', 'limit' => 5); // Send the request $service = new TransfersApi($client); $response = $service->getAllTransfers($requestOptions); ``` #### C\# ```cs // Adyen .net API Library v31.0.0 using Adyen; using Environment = Adyen.Model.Environment; using Adyen.Model; using Adyen.Model.Transfers; using Adyen.Service.Transfers; var config = new Config() { XApiKey = "ADYEN_BALANCE_PLATFORM_API_KEY", Environment = Environment.Test }; var client = new Client(config); // Send the request var service = new TransfersService(client); var response = service.GetAllTransfers(createdSince: DateTime.Parse("2024-10-12T09:20:30"), createdUntil: DateTime.Parse("2024-11-13T08:45:30"), limit: 5); ``` #### NodeJS (JavaScript) ```js // Adyen Node API Library v26.1.0 const { Client, TransfersAPI } = require('@adyen/api-library'); const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransfersApi.getAllTransfers(Date.parse("2024-10-12T09:20:30"), Date.parse("2024-11-13T08:45:30"), 5); ``` #### Go ```go // Adyen Go API Library v20.0.0 import ( "context" "github.com/adyen/adyen-go-api-library/v20/src/common" "github.com/adyen/adyen-go-api-library/v20/src/adyen" "github.com/adyen/adyen-go-api-library/v20/src/transfers" ) client := adyen.NewClient(&common.Config{ ApiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", Environment: common.TestEnv, }) // Send the request service := client.Transfers() req := service.TransfersApi.GetAllTransfersInput() req = req.CreatedUntil(DateTime.Parse("2024-11-13T08:45:30")).Limit(5) res, httpRes, err := service.TransfersApi.GetAllTransfers(context.Background(), req) ``` #### Python ```py # Adyen Python API Library v13.4.0 import Adyen adyen = Adyen.Adyen() adyen.client.xapikey = "ADYEN_BALANCE_PLATFORM_API_KEY" adyen.client.platform = "test" # The environment to use library in. query_parameters = { "createdSince" : "2024-10-12T09:20:30", "createdUntil" : "2024-11-13T08:45:30", "limit" : "5" } # Send the request result = adyen.transfers.transfers_api.get_all_transfers(query_parameters=query_parameters) ``` #### Ruby ```rb # Adyen Ruby API Library v10.2.0 require "adyen-ruby-api-library" adyen = Adyen::Client.new adyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY' adyen.env = :test # Set to "live" for live environment # Create the request object(s) query_params = { :createdSince => '2024-10-12T09:20:30', :createdUntil => '2024-11-13T08:45:30', :limit => '5' } # Send the request result = adyen.transfers.transfers_api.get_all_transfers(query_params: query_params) ``` #### NodeJS (TypeScript) ```ts // Adyen Node API Library v26.1.0 import { Client, TransfersAPI, Types } from "@adyen/api-library"; const client = new Client({ apiKey: "ADYEN_BALANCE_PLATFORM_API_KEY", environment: "TEST" }); // Send the request const transfersAPI = new TransfersAPI(client); const response = transfersAPI.TransfersApi.getAllTransfers(Date.parse("2024-10-12T09:20:30"), Date.parse("2024-11-13T08:45:30"), 5); ``` If the call is successful, you receive an **HTTP 200 OK** result code along with the [data](https://docs.adyen.com/api-explorer/transfers/latest/get/transfers#responses-200-data) and [\_links](https://docs.adyen.com/api-explorer/transfers/latest/get/transfers#responses-200-_links) parameters. ## Set up webhooks Adyen sends webhooks to communicate events, such as when a resource was created or a payout was triggered. 1. **Configure a webhook endpoint**.\ [Set up a webhook endpoint](/development-resources/webhooks/configure-and-manage) in your system to receive webhooks from Adyen. 2. **Configure webhooks**.\ [Configure webhooks](/development-resources/webhooks/configure-and-manage) in your Customer Area. 3. **(Recommended) Verify the HMAC signature**.\ [Verify that the webhook](/development-resources/webhooks/secure-webhooks/verify-hmac-signatures) is sent from Adyen. 4. **Accept webhooks**.\ Adyen sends a webhook for every status update in the payout lifecycle. [Acknowledge](/development-resources/webhooks/handle-webhook-events#accept-webhooks) every webhook that you receive from Adyen. 5. **(Recommended) Develop a fallback logic for payout errors**.\ In case that a payout fails, we recommend that you develop a fallback logic that attempts to fix the error automatically. You can identify the cause of the payout error by using the [reason code](/payouts/payout-service/pay-out-to-bank-accounts/payout-webhooks/#reason-codes). ## Pay out Pay out funds to your beneficiaries or to your own transfer instrument. 1. **Pay out to third parties on demand**.\ Pay out to third-party [bank accounts](/payouts/payout-service/pay-out-to-bank-accounts) or [cards](/payouts/payout-service/pay-out-to-cards). 2. **Pay out to your transfer instrument**.\ You can pay out your sales funds to your transfer instrument. You can decide how much reserve to maintain in your balance account and transfer any excess funds to your external bank account. Transfers can be made either through scheduled payouts or on-demand payouts. 3. **Listen to webhooks**.\ Learn which webhooks Adyen sends to inform your server of your payouts to [bank accounts](/payouts/payout-service/pay-out-to-bank-accounts/payout-webhooks) or [cards](/payouts/payout-service/pay-out-to-cards/payout-webhooks). ## Accounting and reconciliation Use reports to reconcile payments and balances in your system. 1. **Set up your reports credentials**.\ Your Adyen contact will provide you with a reports credential, which you will need if you want to programmatically download reports. 2. **Download reports**.\ [Download reports](/payouts/payout-service/prepare-reports#download-reports), either manually or automatically through your Customer Area. 3. **Reconcile using reports**.\ Familiarize yourself with the [common reconciliation processes](/payouts/payout-service/reconciliation-use-cases/) at Adyen. ## Going live To get your Payouts integration live, you need to apply for a [live account](/payouts/payout-service/get-started#apply-for-live-account). When you have your live account, follow the steps below to take your integration live. 1. **Replicate your test account setup**.\ The setup from your test account is *not* replicated to your live account. 2. **Update your code base**. * Switch to live Balance Platform API credentials: get your live API credentials from your Adyen contact. Use these credentials in your live platform. * Switch from test to live endpoints: change the endpoints from `test` to `live`. For example, `https://balanceplatform-api-test.adyen.com/btl/v4` to live `https://balanceplatform-api-live.adyen.com/btl/v4`. 3. **Run end-to-end tests**. * Live Balance Platform API credentials: make your [first live API request](#test-credentials) to make sure that your live API credentials are working. * Payouts: test successful payout scenarios as well as error handling scenarios. * [Webhooks](/development-resources/webhooks/configure-and-manage): confirm that you can receive and accept webhooks in the live environment. ## See also * [Manage access for your team](/payouts/payout-service/manage-access/) * [Payout lifecycle](/payouts/payout-service/payout-lifecycle/)