{"title":"Approve or cancel transfers","category":"default","creationDate":1571779920,"content":"<p>To decrease the risk of unintentional or malicious transfers in your marketplace, you can trigger additional reviews for transfers. Additional reviews require a member of your team to verify a transfer before Adyen processes it. You decide which members of your team are allowed to review transfers by assigning them the <a href=\"#requirements\">required API role<\/a> in your <a href=\"https:\/\/ca-test.adyen.com\/\" target=\"_blank\" rel=\"nofollow noopener noreferrer\" class=\"external-link no-image\">Customer Area<\/a>.<\/p>\n<p>To complete the review, the reviewer must either approve or cancel the transfer. If the transfer is approved, then Adyen continues processing the transfer.<\/p>\n<h2>Requirements<\/h2>\n<p>Before you begin, take into account the following requirements.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left;\">Requirement<\/th>\n<th style=\"text-align: left;\">Description<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/marketplaces\/manage-access\/api-credentials-web-service\">API credential roles<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Make sure that your web service API key has the following role: <ul><li markdown=\"1\"><strong>TransferService Approval role<\/strong><\/li><\/ul><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left;\"><strong><a href=\"\/pt\/development-resources\/webhooks\/configure-and-manage\">Webhooks<\/a><\/strong><\/td>\n<td style=\"text-align: left;\">Subscribe to the following webhook: <ul><li markdown=\"1\"> <a href=\"\/pt\/marketplaces\/webhook-types\/#transfer-webhooks\">\n  <strong>Transfer Webhooks<\/strong>\n<\/a><\/li><\/ul><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How it works<\/h2>\n<p>The following diagram shows the approval flow for a transfer when you trigger an additional review.<\/p>\n<p><img alt=\"\" src=\"\/user\/pages\/reuse\/pfs-transfers\/approve-cancel-transfers\/approval-flow\/approval-flow-diagram.svg?decoding=auto&amp;fetchpriority=auto\" \/><\/p>\n<p>As shown in the previous diagram, the approval flow is the following:<\/p>\n<ol>\n<li>You <a href=\"\/marketplaces\/payout-to-users\/on-demand-payouts?tab=API-1_2#trigger-additional-reviews\">trigger an additional review<\/a> by including the  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers#request-review\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">review<\/a> object in a POST  <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/transfers<\/a> request.<\/li>\n<li>The transfer request is pending approval until a member of your team completes the review.<\/li>\n<li>Depending on the decision of the reviewer, one of the following happens:\n<ul>\n<li>If the reviewer approves the transfer, then the transfer is authorized and Adyen continues processing the  request.<\/li>\n<li>If the reviewer cancels the transfer, then the transfer fails and Adyen can no longer processes the request.<\/li>\n<li>If the reviewer takes no action within 30 days after initiating the transfer request, then the transfer fails and Adyen can no longer processes the request.<\/li>\n<\/ul><\/li>\n<\/ol>\n<p>A reviewer can approve or cancel multiple transfers at the same time. The following sections explain how make API requests to approve or cancel transfers.<\/p>\n<h2>Approve transfers<\/h2>\n<p>To approve initiated transfers, make a POST&nbsp; <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers\/approve\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/transfers\/approve<\/a> request, specifying the following parameter:<\/p>\n<table>\n<thead>\n<tr>\n<th><strong>Parameter name<\/strong><\/th>\n<th style=\"text-align: center;\"><strong>Type<\/strong><\/th>\n<th style=\"text-align: center;\"><strong>Required<\/strong><\/th>\n<th><strong>Description<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers\/approve#request-transferIds\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">transferIds<\/a><\/td>\n<td style=\"text-align: center;\">Body<\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>An array containing the unique identifiers of the transfers that you decide to approve.<br\/> You can include one or more <code>transferIds<\/code> in the request, up to a maximum of 500.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The following code sample shows how to make a POST&nbsp;<code>\/transfers\/approve<\/code> request with two <code>transferIds<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Approve transfers'\" :id=\"'approve-transfer'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/balanceplatform-api-test.adyen.com\\\/btl\\\/v4\\\/transfers\\\/approve \\\\\\n-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n    \\&quot;transferIds\\&quot;: [\\n        \\&quot;APUFHASUFD4AS\\&quot;, \\n        \\&quot;407ASFPUHASFA\\&quot;\\n    ]\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v33.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.transfers.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.transfers.*;\\n\\nClient client = new Client(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nApproveTransfersRequest approveTransfersRequest = new ApproveTransfersRequest()\\n  .transferIds(Arrays.asList(\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;));\\n\\n\\\/\\\/ Send the request\\nTransfersApi service = new TransfersApi(client);\\nservice.approveInitiatedTransfers(approveTransfersRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v24.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Transfers\\\\ApproveTransfersRequest;\\nuse Adyen\\\\Service\\\\Transfers\\\\TransfersApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$approveTransfersRequest = new ApproveTransfersRequest();\\n$approveTransfersRequest\\n  -&gt;setTransferIds(array(\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;));\\n\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new TransfersApi($client);\\n$service-&gt;approveInitiatedTransfers($approveTransfersRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v28.0.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Transfers;\\nusing Adyen.Service.Transfers;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nApproveTransfersRequest approveTransfersRequest = new ApproveTransfersRequest\\n{\\n  TransferIds = { \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; }\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new TransfersService(client);\\nservice.ApproveInitiatedTransfers(approveTransfersRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nconst { Client, TransfersAPI } = require('@adyen\\\/api-library');\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst approveTransfersRequest = {\\n  transferIds: [ \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; ]\\n}\\n\\n\\\/\\\/ Send the request\\nconst transfersAPI = new TransfersAPI(client);\\ntransfersAPI.TransfersApi.approveInitiatedTransfers(approveTransfersRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v17.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/transfers\\&quot;\\n)\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\napproveTransfersRequest := transfers.ApproveTransfersRequest{\\n  TransferIds: []string{\\n    \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;,\\n  },\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.Transfers()\\nreq := service.TransfersApi.ApproveInitiatedTransfersInput().IdempotencyKey(\\&quot;UUID\\&quot;).ApproveTransfersRequest(approveTransfersRequest)\\nservice.TransfersApi.ApproveInitiatedTransfers(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.3.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;transferIds\\&quot;: [ \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; ]\\n}\\n\\n# Send the request\\nadyen.transfers.transfers_api.approve_initiated_transfers(request=json_request, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.1.1\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :transferIds =&gt; [ 'APUFHASUFD4AS', '407ASFPUHASFA' ]\\n}\\n\\n# Send the request\\nadyen.transfers.transfers_api.approve_initiated_transfers(request_body, headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nimport { Client, TransfersAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst approveTransfersRequest: Types.transfers.ApproveTransfersRequest = {\\n  transferIds: [\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;]\\n};\\n\\n\\\/\\\/ Send the request\\nconst transfersAPI = new TransfersAPI(client);\\ntransfersAPI.TransfersApi.approveInitiatedTransfers(approveTransfersRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>If the request is successful, you receive an <strong>HTTP 200 OK<\/strong> response.<\/p>\n<h2>Cancel transfers<\/h2>\n<p>To cancel an initiated transfer, make a POST&nbsp; <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers\/cancel\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\/transfers\/cancel<\/a> request, specifying the following parameter:<\/p>\n<table>\n<thead>\n<tr>\n<th><strong>Parameter name<\/strong><\/th>\n<th style=\"text-align: center;\"><strong>Type<\/strong><\/th>\n<th style=\"text-align: center;\"><strong>Required<\/strong><\/th>\n<th><strong>Description<\/strong><\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfers\/latest\/post\/transfers\/cancel#request-transferIds\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">transferIds<\/a><\/td>\n<td style=\"text-align: center;\">Body<\/td>\n<td style=\"text-align: center;\"><img title=\"-white_check_mark-\" alt=\"-white_check_mark-\" class=\"smileys\" src=\"\/user\/data\/smileys\/emoji\/white_check_mark.png\" \/><\/td>\n<td>An array containing the unique identifiers of the transfers that you decide to cancel.<br> You can include one or more <code>transferIds<\/code> in the request, up to a maximum of 500.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The following code sample shows how to make a POST <code>\/transfers\/cancel<\/code> request with two <code>transferIds<\/code>.<\/p>\n<div data-component-wrapper=\"code-sample\">\n    <code-sample :title=\"'Cancel transfers'\" :id=\"'cancel-transfer'\" :code-data=\"[{&quot;language&quot;:&quot;bash&quot;,&quot;tabTitle&quot;:&quot;curl&quot;,&quot;content&quot;:&quot;curl https:\\\/\\\/balanceplatform-api-test.adyen.com\\\/btl\\\/v4\\\/transfers\\\/cancel \\\\\\n-H 'x-api-key: ADYEN_BALANCE_PLATFORM_API_KEY' \\\\\\n-H 'content-type: application\\\/json' \\\\\\n-X POST \\\\\\n-d '{\\n    \\&quot;transferIds\\&quot;: [\\n        \\&quot;APUFHASUFD4AS\\&quot;, \\n        \\&quot;407ASFPUHASFA\\&quot;\\n    ]\\n}'&quot;},{&quot;language&quot;:&quot;java&quot;,&quot;tabTitle&quot;:&quot;Java&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Java API Library v33.0.0\\nimport com.adyen.Client;\\nimport com.adyen.enums.Environment;\\nimport com.adyen.model.transfers.*;\\nimport java.time.OffsetDateTime;\\nimport java.util.*;\\nimport com.adyen.model.RequestOptions;\\nimport com.adyen.service.transfers.*;\\n\\nClient client = new Client(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, Environment.TEST);\\n\\n\\\/\\\/ Create the request object(s)\\nCancelTransfersRequest cancelTransfersRequest = new CancelTransfersRequest()\\n  .transferIds(Arrays.asList(\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;));\\n\\n\\\/\\\/ Send the request\\nTransfersApi service = new TransfersApi(client);\\nservice.cancelInitiatedTransfers(cancelTransfersRequest, new RequestOptions().idempotencyKey(\\&quot;UUID\\&quot;));&quot;},{&quot;language&quot;:&quot;php&quot;,&quot;tabTitle&quot;:&quot;PHP&quot;,&quot;content&quot;:&quot;&lt;?php\\n\\\/\\\/ Adyen PHP API Library v24.0.0\\nuse Adyen\\\\Client;\\nuse Adyen\\\\Environment;\\nuse Adyen\\\\Model\\\\Transfers\\\\CancelTransfersRequest;\\nuse Adyen\\\\Service\\\\Transfers\\\\TransfersApi;\\n\\n$client = new Client();\\n$client-&gt;setXApiKey(\\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;);\\n$client-&gt;setEnvironment(Environment::TEST);\\n\\n\\n\\\/\\\/ Create the request object(s)\\n$cancelTransfersRequest = new CancelTransfersRequest();\\n$cancelTransfersRequest\\n  -&gt;setTransferIds(array(\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;));\\n\\n$requestOptions['idempotencyKey'] = 'UUID';\\n\\n\\\/\\\/ Send the request\\n$service = new TransfersApi($client);\\n$service-&gt;cancelInitiatedTransfers($cancelTransfersRequest, $requestOptions);&quot;},{&quot;language&quot;:&quot;cs&quot;,&quot;tabTitle&quot;:&quot;C#&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen .net API Library v28.0.0\\nusing Adyen;\\nusing Environment = Adyen.Model.Environment;\\nusing Adyen.Model;\\nusing Adyen.Model.Transfers;\\nusing Adyen.Service.Transfers;\\n\\nvar config = new Config()\\n{\\n    XApiKey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n    Environment = Environment.Test\\n};\\nvar client = new Client(config);\\n\\n\\\/\\\/ Create the request object(s)\\nCancelTransfersRequest cancelTransfersRequest = new CancelTransfersRequest\\n{\\n  TransferIds = { \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; }\\n};\\n\\n\\\/\\\/ Send the request\\nvar service = new TransfersService(client);\\nservice.CancelInitiatedTransfers(cancelTransfersRequest, requestOptions: new RequestOptions { IdempotencyKey = \\&quot;UUID\\&quot;});&quot;},{&quot;language&quot;:&quot;js&quot;,&quot;tabTitle&quot;:&quot;NodeJS (JavaScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nconst { Client, TransfersAPI } = require('@adyen\\\/api-library');\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst cancelTransfersRequest = {\\n  transferIds: [ \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; ]\\n}\\n\\n\\\/\\\/ Send the request\\nconst transfersAPI = new TransfersAPI(client);\\ntransfersAPI.TransfersApi.cancelInitiatedTransfers(cancelTransfersRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;},{&quot;language&quot;:&quot;go&quot;,&quot;tabTitle&quot;:&quot;Go&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Go API Library v17.0.0\\nimport (\\n  \\&quot;context\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/common\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/adyen\\&quot;\\n  \\&quot;github.com\\\/adyen\\\/adyen-go-api-library\\\/v17\\\/src\\\/transfers\\&quot;\\n)\\nclient := adyen.NewClient(&amp;common.Config{\\n  ApiKey:      \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;,\\n  Environment: common.TestEnv,\\n})\\n\\n\\\/\\\/ Create the request object(s)\\ncancelTransfersRequest := transfers.CancelTransfersRequest{\\n  TransferIds: []string{\\n    \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;,\\n  },\\n}\\n\\n\\\/\\\/ Send the request\\nservice := client.Transfers()\\nreq := service.TransfersApi.CancelInitiatedTransfersInput().IdempotencyKey(\\&quot;UUID\\&quot;).CancelTransfersRequest(cancelTransfersRequest)\\nservice.TransfersApi.CancelInitiatedTransfers(context.Background(), req)&quot;},{&quot;language&quot;:&quot;py&quot;,&quot;tabTitle&quot;:&quot;Python&quot;,&quot;content&quot;:&quot;# Adyen Python API Library v13.3.0\\nimport Adyen\\n\\nadyen = Adyen.Adyen()\\nadyen.client.xapikey = \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;\\nadyen.client.platform = \\&quot;test\\&quot; # The environment to use library in.\\n\\n# Create the request object(s)\\njson_request = {\\n  \\&quot;transferIds\\&quot;: [ \\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot; ]\\n}\\n\\n# Send the request\\nadyen.transfers.transfers_api.cancel_initiated_transfers(request=json_request, idempotency_key=\\&quot;UUID\\&quot;)&quot;},{&quot;language&quot;:&quot;rb&quot;,&quot;tabTitle&quot;:&quot;Ruby&quot;,&quot;content&quot;:&quot;# Adyen Ruby API Library v10.1.1\\nrequire \\&quot;adyen-ruby-api-library\\&quot;\\n\\nadyen = Adyen::Client.new\\nadyen.api_key = 'ADYEN_BALANCE_PLATFORM_API_KEY'\\nadyen.env = :test # Set to \\&quot;live\\&quot; for live environment\\n\\n# Create the request object(s)\\nrequest_body = {\\n  :transferIds =&gt; [ 'APUFHASUFD4AS', '407ASFPUHASFA' ]\\n}\\n\\n# Send the request\\nadyen.transfers.transfers_api.cancel_initiated_transfers(request_body, headers: { 'Idempotency-Key' =&gt; 'UUID' })&quot;},{&quot;language&quot;:&quot;ts&quot;,&quot;tabTitle&quot;:&quot;NodeJS (TypeScript)&quot;,&quot;content&quot;:&quot;\\\/\\\/ Adyen Node API Library v23.3.0\\nimport { Client, TransfersAPI, Types } from \\&quot;@adyen\\\/api-library\\&quot;;\\n\\nconst client = new Client({ apiKey: \\&quot;ADYEN_BALANCE_PLATFORM_API_KEY\\&quot;, environment: \\&quot;TEST\\&quot; });\\n\\n\\\/\\\/ Create the request object(s)\\nconst cancelTransfersRequest: Types.transfers.CancelTransfersRequest = {\\n  transferIds: [\\&quot;APUFHASUFD4AS\\&quot;, \\&quot;407ASFPUHASFA\\&quot;]\\n};\\n\\n\\\/\\\/ Send the request\\nconst transfersAPI = new TransfersAPI(client);\\ntransfersAPI.TransfersApi.cancelInitiatedTransfers(cancelTransfersRequest, { idempotencyKey: \\&quot;UUID\\&quot; });&quot;}]\" :enable-copy-link-to-code-block=\"true\" :code-sample-card-size=\"'fullsize'\"><\/code-sample>\n<\/div>\n<p>If the request is successful, you receive an <strong>HTTP 200 OK<\/strong> response.<\/p>\n<h2>Get status updates on transfer reviews<\/h2>\n<p>For every transfer request, Adyen sends multiple <a href=\"\/marketplaces\/webhook-types\">webhooks<\/a> to your server. Webhooks inform you about any status change in the transfers, including the approval status.<\/p>\n<p>During the approval flow, you receive webhooks for the following events:<\/p>\n<ul>\n<li>The transfer is initiated and requires an additional review.<\/li>\n<li>The transfer is canceled.<\/li>\n<li>The transfer expires after 30 days because the review was not completed.<\/li>\n<\/ul>\n<p>Adyen uses two types of webhooks to inform you about the approval status of a transfer:<\/p>\n<ul>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfer-webhooks\/latest\/post\/balancePlatform.transfer.created\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">balancePlatform.transfer.created<\/a>, which informs your server that a transfer was initiated in your marketplace.<\/li>\n<li> <a href=\"https:\/\/docs.adyen.com\/api-explorer\/transfer-webhooks\/latest\/post\/balancePlatform.transfer.updated\" class=\"codeLabel  external-link no-image\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">balancePlatform.transfer.updated<\/a>, which informs your server of changes in the status of the transfer.<\/li>\n<\/ul>\n<p>The following tabs explain how you can identify updates related to the approval status of a transfer.<\/p>\n\n<div id=\"tabNKM9w\">\n    <div data-component-wrapper=\"tabs\">\n        <tabs\n                        :items=\"[{&quot;title&quot;:&quot;Additional review required&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Adyen sends a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.created\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;balancePlatform.transfer.created&lt;\\\/a&gt; webhook to inform your server that a transfer was initiated in your marketplace. You can identify if the transfer requires approval by noting the following values:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Value&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.created#request-data-status\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;status&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Specifies the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;received&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.created#request-data-reason\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;reason&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Provides more information about the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;pending&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.created#request-data-review-numberOfApprovalsRequired\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;review.numberOfApprovalsRequired&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Specifies the number of approvals required to continue processing the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;1&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;The following example shows a webhook that you would receive when an initiated transfer requires approval.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Webhook for an initiated transfer that requires review&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;data\\\\\\&quot;: {\\\\n        \\\\\\&quot;accountHolder\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the account holder\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;AH00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the account holder\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;amount\\\\\\&quot;: {\\\\n            \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n            \\\\\\&quot;value\\\\\\&quot;: 10000\\\\n        },\\\\n        \\\\\\&quot;balanceAccount\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the balance account\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;BA00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the balance account\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;balancePlatform\\\\\\&quot;: \\\\\\&quot;YOUR_BALANCE_PLATFORM\\\\\\&quot;,\\\\n        \\\\\\&quot;balances\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                \\\\\\&quot;received\\\\\\&quot;: -10000\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;category\\\\\\&quot;: \\\\\\&quot;bank\\\\\\&quot;,\\\\n        \\\\\\&quot;categoryData\\\\\\&quot;: {\\\\n            \\\\\\&quot;priority\\\\\\&quot;: \\\\\\&quot;regular\\\\\\&quot;,\\\\n            \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;creationDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:05+02:00\\\\\\&quot;,\\\\n        \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your user description for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;direction\\\\\\&quot;: \\\\\\&quot;outgoing\\\\\\&quot;,\\\\n        \\\\\\&quot;events\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;bookingDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:18+02:00\\\\\\&quot;,\\\\n                \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;EVJN00000000000000000000000001\\\\\\&quot;,\\\\n                \\\\\\&quot;mutations\\\\\\&quot;: [\\\\n                    {\\\\n                        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                        \\\\\\&quot;received\\\\\\&quot;: -10000\\\\n                    }\\\\n                ],\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;received\\\\\\&quot;,\\\\n                \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;accounting\\\\\\&quot;\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;6JKRLZ8LOT47J7RY\\\\\\&quot;,\\\\n        \\\\\\&quot;reason\\\\\\&quot;: \\\\\\&quot;pending\\\\\\&quot;,\\\\n        \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your user reference for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;review\\\\\\&quot;: {\\\\n            \\\\\\&quot;numberOfApprovalsRequired\\\\\\&quot;: 1\\\\n        },\\\\n        \\\\\\&quot;referenceForBeneficiary\\\\\\&quot;: \\\\\\&quot;Your user reference for the beneficiary\\\\\\&quot;,\\\\n        \\\\\\&quot;sequenceNumber\\\\\\&quot;: 1,\\\\n        \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;received\\\\\\&quot;,\\\\n        \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n    },\\\\n    \\\\\\&quot;environment\\\\\\&quot;: \\\\\\&quot;test\\\\\\&quot;,\\\\n    \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;balancePlatform.transfer.created\\\\\\&quot;\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;additional_review_required_0_1&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Transfer approved&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Adyen sends a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;balancePlatform.transfer.updated&lt;\\\/a&gt; webhook to inform your server that a pending transfer was approved. You can identify an approved transfer by noting the following values:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Value&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated#request-data-status\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;status&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Specifies the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;authorised&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated#request-data-reason\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;reason&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Provides more information about the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;approved&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated#request-data-review-numberOfApprovalsRequired\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;review.numberOfApprovalsRequired&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Specifies the number of approvals required to continue processing the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;1&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;The following example shows a webhook that you would receive for an approved transfer.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Webhook for an approved transfer&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;data\\\\\\&quot;: {\\\\n        \\\\\\&quot;accountHolder\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the account holder\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;AH00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the account holder\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;amount\\\\\\&quot;: {\\\\n            \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n            \\\\\\&quot;value\\\\\\&quot;: 10000\\\\n        },\\\\n        \\\\\\&quot;balanceAccount\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the balance account\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;BA00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the balance account\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;balancePlatform\\\\\\&quot;: \\\\\\&quot;YOUR_BALANCE_PLATFORM\\\\\\&quot;,\\\\n        \\\\\\&quot;balances\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                \\\\\\&quot;received\\\\\\&quot;: 0,\\\\n                \\\\\\&quot;reserved\\\\\\&quot;: -10000\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;category\\\\\\&quot;: \\\\\\&quot;bank\\\\\\&quot;,\\\\n        \\\\\\&quot;categoryData\\\\\\&quot;: {\\\\n            \\\\\\&quot;priority\\\\\\&quot;: \\\\\\&quot;regular\\\\\\&quot;,\\\\n            \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;creationDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:05+02:00\\\\\\&quot;,\\\\n        \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your user description for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;direction\\\\\\&quot;: \\\\\\&quot;outgoing\\\\\\&quot;,\\\\n        \\\\\\&quot;events\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;bookingDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:18+02:00\\\\\\&quot;,\\\\n                \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;EVJN00000000000000000000000001\\\\\\&quot;,\\\\n                \\\\\\&quot;mutations\\\\\\&quot;: [\\\\n                    {\\\\n                        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                        \\\\\\&quot;received\\\\\\&quot;: -10000\\\\n                    }\\\\n                ],\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;received\\\\\\&quot;,\\\\n                \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;accounting\\\\\\&quot;\\\\n            },\\\\n            {\\\\n                \\\\\\&quot;bookingDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:18+02:00\\\\\\&quot;,\\\\n                \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;EVJN00000000000000000000000002\\\\\\&quot;,\\\\n                \\\\\\&quot;mutations\\\\\\&quot;: [\\\\n                    {\\\\n                        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                        \\\\\\&quot;received\\\\\\&quot;: 10000,\\\\n                        \\\\\\&quot;reserved\\\\\\&quot;: -10000\\\\n                    }\\\\n                ],\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;authorised\\\\\\&quot;,\\\\n                \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;accounting\\\\\\&quot;\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;6JKRLZ8LOT47J7RY\\\\\\&quot;,\\\\n        \\\\\\&quot;reason\\\\\\&quot;: \\\\\\&quot;approved\\\\\\&quot;,\\\\n        \\\\\\&quot;review\\\\\\&quot;: {\\\\n            \\\\\\&quot;numberOfApprovalsRequired\\\\\\&quot;: 1\\\\n        },\\\\n        \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your user reference for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;referenceForBeneficiary\\\\\\&quot;: \\\\\\&quot;Your user reference for the beneficiary\\\\\\&quot;,\\\\n        \\\\\\&quot;sequenceNumber\\\\\\&quot;: 2,\\\\n        \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;authorised\\\\\\&quot;,\\\\n        \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n    },\\\\n    \\\\\\&quot;environment\\\\\\&quot;: \\\\\\&quot;test\\\\\\&quot;,\\\\n    \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;balancePlatform.transfer.updated\\\\\\&quot;\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;transfer_approved_1_2&quot;,&quot;relation&quot;:&quot;&quot;},{&quot;title&quot;:&quot;Transfer canceled&quot;,&quot;content&quot;:&quot;\\n&lt;p&gt;Adyen sends a  &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;balancePlatform.transfer.updated&lt;\\\/a&gt; webhook to inform your server that a pending transfer was canceled. You can identify a canceled transfer by noting the following values:&lt;\\\/p&gt;\\n&lt;table&gt;\\n&lt;thead&gt;\\n&lt;tr&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Parameter&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Description&lt;\\\/th&gt;\\n&lt;th style=\\&quot;text-align: left;\\&quot;&gt;Value&lt;\\\/th&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/thead&gt;\\n&lt;tbody&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated#request-data-status\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;status&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Specifies the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;cancelled&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;tr&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt; &lt;a href=\\&quot;https:\\\/\\\/docs.adyen.com\\\/api-explorer\\\/transfer-webhooks\\\/latest\\\/post\\\/balancePlatform.transfer.updated#request-data-reason\\&quot; class=\\&quot;codeLabel  external-link no-image\\&quot; target=\\&quot;_blank\\&quot; rel=\\&quot;nofollow noopener noreferrer\\&quot;&gt;reason&lt;\\\/a&gt;&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;Provides more information about the status of the transfer.&lt;\\\/td&gt;\\n&lt;td style=\\&quot;text-align: left;\\&quot;&gt;&lt;strong&gt;unknown&lt;\\\/strong&gt;&lt;\\\/td&gt;\\n&lt;\\\/tr&gt;\\n&lt;\\\/tbody&gt;\\n&lt;\\\/table&gt;\\n&lt;p&gt;The following example shows a webhook that you would receive for a canceled transfer.&lt;\\\/p&gt;\\n&lt;div data-component-wrapper=\\&quot;code-sample\\&quot;&gt;\\n    &lt;code-sample :title=\\&quot;&#039;Webhook for a canceled transfer&#039;\\&quot; :id=\\&quot;&#039;&#039;\\&quot; :code-data=&#039;[{\\&quot;language\\&quot;:\\&quot;json\\&quot;,\\&quot;tabTitle\\&quot;:\\&quot;\\&quot;,\\&quot;content\\&quot;:\\&quot;{\\\\n    \\\\\\&quot;data\\\\\\&quot;: {\\\\n        \\\\\\&quot;accountHolder\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the account holder\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;AH00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the account holder\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;amount\\\\\\&quot;: {\\\\n            \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n            \\\\\\&quot;value\\\\\\&quot;: 10000\\\\n        },\\\\n        \\\\\\&quot;balanceAccount\\\\\\&quot;: {\\\\n            \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your description for the balance account\\\\\\&quot;,\\\\n            \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;BA00000000000000000000001\\\\\\&quot;,\\\\n            \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your reference for the balance account\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;balancePlatform\\\\\\&quot;: \\\\\\&quot;YOUR_BALANCE_PLATFORM\\\\\\&quot;,\\\\n        \\\\\\&quot;balances\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                \\\\\\&quot;received\\\\\\&quot;: -10000\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;category\\\\\\&quot;: \\\\\\&quot;bank\\\\\\&quot;,\\\\n        \\\\\\&quot;categoryData\\\\\\&quot;: {\\\\n            \\\\\\&quot;priority\\\\\\&quot;: \\\\\\&quot;regular\\\\\\&quot;,\\\\n            \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n        },\\\\n        \\\\\\&quot;creationDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:05+02:00\\\\\\&quot;,\\\\n        \\\\\\&quot;description\\\\\\&quot;: \\\\\\&quot;Your user description for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;direction\\\\\\&quot;: \\\\\\&quot;outgoing\\\\\\&quot;,\\\\n        \\\\\\&quot;events\\\\\\&quot;: [\\\\n            {\\\\n                \\\\\\&quot;bookingDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:18+02:00\\\\\\&quot;,\\\\n                \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;EVJN00000000000000000000000001\\\\\\&quot;,\\\\n                \\\\\\&quot;mutations\\\\\\&quot;: [\\\\n                    {\\\\n                        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                        \\\\\\&quot;received\\\\\\&quot;: -10000\\\\n                    }\\\\n                ],\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;received\\\\\\&quot;,\\\\n                \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;accounting\\\\\\&quot;\\\\n            },\\\\n            {\\\\n                \\\\\\&quot;bookingDate\\\\\\&quot;: \\\\\\&quot;2023-02-28T13:30:18+02:00\\\\\\&quot;,\\\\n                \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;EVJN00000000000000000000000002\\\\\\&quot;,\\\\n                \\\\\\&quot;mutations\\\\\\&quot;: [\\\\n                    {\\\\n                        \\\\\\&quot;currency\\\\\\&quot;: \\\\\\&quot;EUR\\\\\\&quot;,\\\\n                        \\\\\\&quot;received\\\\\\&quot;: 10000\\\\n                    }\\\\n                ],\\\\n                \\\\\\&quot;reason\\\\\\&quot;: \\\\\\&quot;unknown\\\\\\&quot;,\\\\n                \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;cancelled\\\\\\&quot;,\\\\n                \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;accounting\\\\\\&quot;\\\\n            }\\\\n        ],\\\\n        \\\\\\&quot;id\\\\\\&quot;: \\\\\\&quot;6JKRLZ8LOT47J7RY\\\\\\&quot;,\\\\n        \\\\\\&quot;reason\\\\\\&quot;: \\\\\\&quot;unknown\\\\\\&quot;,\\\\n        \\\\\\&quot;reference\\\\\\&quot;: \\\\\\&quot;Your user reference for the transfer\\\\\\&quot;,\\\\n        \\\\\\&quot;referenceForBeneficiary\\\\\\&quot;: \\\\\\&quot;Your user reference for the beneficiary\\\\\\&quot;,\\\\n        \\\\\\&quot;sequenceNumber\\\\\\&quot;: 2,\\\\n        \\\\\\&quot;status\\\\\\&quot;: \\\\\\&quot;cancelled\\\\\\&quot;,\\\\n        \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;bankTransfer\\\\\\&quot;\\\\n    },\\\\n    \\\\\\&quot;environment\\\\\\&quot;: \\\\\\&quot;test\\\\\\&quot;,\\\\n    \\\\\\&quot;type\\\\\\&quot;: \\\\\\&quot;balancePlatform.transfer.updated\\\\\\&quot;\\\\n}\\&quot;}]&#039; :enable-copy-link-to-code-block=\\&quot;true\\&quot; :code-sample-card-size=\\&quot;&#039;fullsize&#039;\\&quot;&gt;&lt;\\\/code-sample&gt;\\n&lt;\\\/div&gt;\\n&quot;,&quot;altTitle&quot;:null,&quot;oldTabId&quot;:&quot;transfer_canceled_2_3&quot;,&quot;relation&quot;:&quot;&quot;}]\"\n            :should-update-when-url-changes='false'>\n        <\/tabs>\n    <\/div>\n<\/div>\n\n<h2 id=\"see-also\">See also<\/h2>\n<div class=\"see-also-links output-inline\" id=\"see-also\">\n<ul><li><a href=\"\/marketplaces\/payout-to-users\/on-demand-payouts?tab=API-1_2#trigger-additional-reviews\"\n                        target=\"_self\"\n                        >\n                    Trigger additional reviews for payouts\n                <\/a><\/li><li><a href=\"\/marketplaces\/internal-fund-transfers\/on-demand-fund-transfers?tab=API-1_2#trigger-additional-reviews\"\n                        target=\"_self\"\n                        >\n                    Trigger additional reviews for internal transfers\n                <\/a><\/li><\/ul><\/div>\n","url":"https:\/\/docs.adyen.com\/pt\/marketplaces\/approve-cancel-transfers","articleFields":{"description":"Allow members of your team to approve or cancel transfers before Adyen processes them.","last_edit_on":"11-09-2020 17:20","cache_enable":false,"parameters":{"directoryPath":"\/marketplaces","model":"marketplace","transferType":"transfer"}},"algolia":{"url":"https:\/\/docs.adyen.com\/pt\/marketplaces\/approve-cancel-transfers","title":"Approve or cancel transfers","content":"To decrease the risk of unintentional or malicious transfers in your marketplace, you can trigger additional reviews for transfers. Additional reviews require a member of your team to verify a transfer before Adyen processes it. You decide which members of your team are allowed to review transfers by assigning them the required API role in your Customer Area.\nTo complete the review, the reviewer must either approve or cancel the transfer. If the transfer is approved, then Adyen continues processing the transfer.\nRequirements\nBefore you begin, take into account the following requirements.\n\n\n\nRequirement\nDescription\n\n\n\n\nAPI credential roles\nMake sure that your web service API key has the following role: TransferService Approval role\n\n\nWebhooks\nSubscribe to the following webhook:  \n  Transfer Webhooks\n\n\n\n\nHow it works\nThe following diagram shows the approval flow for a transfer when you trigger an additional review.\n\nAs shown in the previous diagram, the approval flow is the following:\n\nYou trigger an additional review by including the  review object in a POST  \/transfers request.\nThe transfer request is pending approval until a member of your team completes the review.\nDepending on the decision of the reviewer, one of the following happens:\n\nIf the reviewer approves the transfer, then the transfer is authorized and Adyen continues processing the  request.\nIf the reviewer cancels the transfer, then the transfer fails and Adyen can no longer processes the request.\nIf the reviewer takes no action within 30 days after initiating the transfer request, then the transfer fails and Adyen can no longer processes the request.\n\n\nA reviewer can approve or cancel multiple transfers at the same time. The following sections explain how make API requests to approve or cancel transfers.\nApprove transfers\nTo approve initiated transfers, make a POST&nbsp; \/transfers\/approve request, specifying the following parameter:\n\n\n\nParameter name\nType\nRequired\nDescription\n\n\n\n\n transferIds\nBody\n\nAn array containing the unique identifiers of the transfers that you decide to approve. You can include one or more transferIds in the request, up to a maximum of 500.\n\n\n\nThe following code sample shows how to make a POST&nbsp;\/transfers\/approve request with two transferIds.\n\n    \n\nIf the request is successful, you receive an HTTP 200 OK response.\nCancel transfers\nTo cancel an initiated transfer, make a POST&nbsp; \/transfers\/cancel request, specifying the following parameter:\n\n\n\nParameter name\nType\nRequired\nDescription\n\n\n\n\n transferIds\nBody\n\nAn array containing the unique identifiers of the transfers that you decide to cancel. You can include one or more transferIds in the request, up to a maximum of 500.\n\n\n\nThe following code sample shows how to make a POST \/transfers\/cancel request with two transferIds.\n\n    \n\nIf the request is successful, you receive an HTTP 200 OK response.\nGet status updates on transfer reviews\nFor every transfer request, Adyen sends multiple webhooks to your server. Webhooks inform you about any status change in the transfers, including the approval status.\nDuring the approval flow, you receive webhooks for the following events:\n\nThe transfer is initiated and requires an additional review.\nThe transfer is canceled.\nThe transfer expires after 30 days because the review was not completed.\n\nAdyen uses two types of webhooks to inform you about the approval status of a transfer:\n\n balancePlatform.transfer.created, which informs your server that a transfer was initiated in your marketplace.\n balancePlatform.transfer.updated, which informs your server of changes in the status of the transfer.\n\nThe following tabs explain how you can identify updates related to the approval status of a transfer.\n\n\n    \n        \n        \n    \n\n\nSee also\n\n\n                    Trigger additional reviews for payouts\n                \n                    Trigger additional reviews for internal transfers\n                \n","type":"page","locale":"pt","boost":18,"hierarchy":{"lvl0":"Home","lvl1":"Marketplaces","lvl2":"Approve or cancel transfers"},"hierarchy_url":{"lvl0":"https:\/\/docs.adyen.com\/pt","lvl1":"https:\/\/docs.adyen.com\/pt\/marketplaces","lvl2":"\/pt\/marketplaces\/approve-cancel-transfers"},"levels":3,"category":"Marketplaces","category_color":"green","tags":["Approve","cancel","transfers"]}}
