Adyen Balance Control API
Adyen Balance Control APIv1
The Balance Control API lets you transfer funds between merchant accounts that belong to the same legal entity and are under the same company account. Authentication To connect to the Balance Control API, you must authenticate your requests with an API key or basic auth username and password. To learn how you can generate these, see API credentials.Here is an example of authenticating a request with an API key: curl -H "X-API-Key: YourAPIkey" \ -H "Content-Type: application/json" \ ... Note that when going live, you need to generate API credentials to access the live endpoints. Versioning…
- Endpoints
- 1 (1 POST)
- Base URL
https://pal-test.adyen.com/pal/servlet/BalanceControl/v1- Authentication
- API key, Basic auth
- Spec format
- OpenAPI 3.1.0
- API version
- 1
- Provider
- adyen.com
- Categories
- Payments
- Last updated
Use this API in Bruno:
- Download the Bruno collection above and unzip it.
- In Bruno, choose Open Collection and select the unzipped folder.
- Set the
baseUrlvariable (for examplehttps://pal-test.adyen.com/pal/servlet/BalanceControl/v1) and your API key credentials, then send requests.
POST
Start a balance transfer
{{baseUrl}}/balanceTransfer
BODY json
{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}
Examples
REQUEST
CURL *hnd = curl_easy_init();
curl_easy_setopt(hnd, CURLOPT_CUSTOMREQUEST, "POST");
curl_easy_setopt(hnd, CURLOPT_URL, "{{baseUrl}}/balanceTransfer");
struct curl_slist *headers = NULL;
headers = curl_slist_append(headers, "content-type: application/json");
curl_easy_setopt(hnd, CURLOPT_HTTPHEADER, headers);
curl_easy_setopt(hnd, CURLOPT_POSTFIELDS, "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}");
CURLcode ret = curl_easy_perform(hnd);
(require '[clj-http.client :as client])
(client/post "{{baseUrl}}/balanceTransfer" {:content-type :json
:form-params {:amount {:currency ""
:value 0}
:description ""
:fromMerchant ""
:reference ""
:toMerchant ""
:type ""}})
require "http/client"
url = "{{baseUrl}}/balanceTransfer"
headers = HTTP::Headers{
"content-type" => "application/json"
}
reqBody = "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"
response = HTTP::Client.post url, headers: headers, body: reqBody
puts response.body
using System.Net.Http.Headers;
var client = new HttpClient();
var request = new HttpRequestMessage
{
Method = HttpMethod.Post,
RequestUri = new Uri("{{baseUrl}}/balanceTransfer"),
Content = new StringContent("{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}")
{
Headers =
{
ContentType = new MediaTypeHeaderValue("application/json")
}
}
};
using (var response = await client.SendAsync(request))
{
response.EnsureSuccessStatusCode();
var body = await response.Content.ReadAsStringAsync();
Console.WriteLine(body);
}
var client = new RestClient("{{baseUrl}}/balanceTransfer");
var request = new RestRequest("", Method.Post);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}", ParameterType.RequestBody);
var response = client.Execute(request);
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "{{baseUrl}}/balanceTransfer"
payload := strings.NewReader("{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
POST /baseUrl/balanceTransfer HTTP/1.1
Content-Type: application/json
Host: example.com
Content-Length: 152
{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}
AsyncHttpClient client = new DefaultAsyncHttpClient();
client.prepare("POST", "{{baseUrl}}/balanceTransfer")
.setHeader("content-type", "application/json")
.setBody("{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}")
.execute()
.toCompletableFuture()
.thenAccept(System.out::println)
.join();
client.close();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("{{baseUrl}}/balanceTransfer"))
.header("content-type", "application/json")
.method("POST", HttpRequest.BodyPublishers.ofString("{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"))
.build();
HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}");
Request request = new Request.Builder()
.url("{{baseUrl}}/balanceTransfer")
.post(body)
.addHeader("content-type", "application/json")
.build();
Response response = client.newCall(request).execute();
HttpResponse response = Unirest.post("{{baseUrl}}/balanceTransfer")
.header("content-type", "application/json")
.body("{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}")
.asString();
const data = JSON.stringify({
amount: {
currency: '',
value: 0
},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
});
const xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener('readystatechange', function () {
if (this.readyState === this.DONE) {
console.log(this.responseText);
}
});
xhr.open('POST', '{{baseUrl}}/balanceTransfer');
xhr.setRequestHeader('content-type', 'application/json');
xhr.send(data);
import axios from 'axios';
const options = {
method: 'POST',
url: '{{baseUrl}}/balanceTransfer',
headers: {'content-type': 'application/json'},
data: {
amount: {currency: '', value: 0},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
const url = '{{baseUrl}}/balanceTransfer';
const options = {
method: 'POST',
headers: {'content-type': 'application/json'},
body: '{"amount":{"currency":"","value":0},"description":"","fromMerchant":"","reference":"","toMerchant":"","type":""}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
const settings = {
async: true,
crossDomain: true,
url: '{{baseUrl}}/balanceTransfer',
method: 'POST',
headers: {
'content-type': 'application/json'
},
processData: false,
data: '{\n "amount": {\n "currency": "",\n "value": 0\n },\n "description": "",\n "fromMerchant": "",\n "reference": "",\n "toMerchant": "",\n "type": ""\n}'
};
$.ajax(settings).done(function (response) {
console.log(response);
});
val client = OkHttpClient()
val mediaType = MediaType.parse("application/json")
val body = RequestBody.create(mediaType, "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}")
val request = Request.Builder()
.url("{{baseUrl}}/balanceTransfer")
.post(body)
.addHeader("content-type", "application/json")
.build()
val response = client.newCall(request).execute()
const http = require('https');
const options = {
method: 'POST',
hostname: 'example.com',
port: null,
path: '/baseUrl/balanceTransfer',
headers: {
'content-type': 'application/json'
}
};
const req = http.request(options, function (res) {
const chunks = [];
res.on('data', function (chunk) {
chunks.push(chunk);
});
res.on('end', function () {
const body = Buffer.concat(chunks);
console.log(body.toString());
});
});
req.write(JSON.stringify({
amount: {currency: '', value: 0},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
}));
req.end();
const request = require('request');
const options = {
method: 'POST',
url: '{{baseUrl}}/balanceTransfer',
headers: {'content-type': 'application/json'},
body: {
amount: {currency: '', value: 0},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
const unirest = require('unirest');
const req = unirest('POST', '{{baseUrl}}/balanceTransfer');
req.headers({
'content-type': 'application/json'
});
req.type('json');
req.send({
amount: {
currency: '',
value: 0
},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
});
req.end(function (res) {
if (res.error) throw new Error(res.error);
console.log(res.body);
});
const axios = require('axios').default;
const options = {
method: 'POST',
url: '{{baseUrl}}/balanceTransfer',
headers: {'content-type': 'application/json'},
data: {
amount: {currency: '', value: 0},
description: '',
fromMerchant: '',
reference: '',
toMerchant: '',
type: ''
}
};
try {
const { data } = await axios.request(options);
console.log(data);
} catch (error) {
console.error(error);
}
const fetch = require('node-fetch');
const url = '{{baseUrl}}/balanceTransfer';
const options = {
method: 'POST',
headers: {'content-type': 'application/json'},
body: '{"amount":{"currency":"","value":0},"description":"","fromMerchant":"","reference":"","toMerchant":"","type":""}'
};
try {
const response = await fetch(url, options);
const data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
#import
NSDictionary *headers = @{ @"content-type": @"application/json" };
NSDictionary *parameters = @{ @"amount": @{ @"currency": @"", @"value": @0 },
@"description": @"",
@"fromMerchant": @"",
@"reference": @"",
@"toMerchant": @"",
@"type": @"" };
NSData *postData = [NSJSONSerialization dataWithJSONObject:parameters options:0 error:nil];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"{{baseUrl}}/balanceTransfer"]
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:10.0];
[request setHTTPMethod:@"POST"];
[request setAllHTTPHeaderFields:headers];
[request setHTTPBody:postData];
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request
completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
if (error) {
NSLog(@"%@", error);
} else {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSLog(@"%@", httpResponse);
}
}];
[dataTask resume];
open Cohttp_lwt_unix
open Cohttp
open Lwt
let uri = Uri.of_string "{{baseUrl}}/balanceTransfer" in
let headers = Header.add (Header.init ()) "content-type" "application/json" in
let body = Cohttp_lwt_body.of_string "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}" in
Client.call ~headers ~body `POST uri
>>= fun (res, body_stream) ->
(* Do stuff with the result *)
"{{baseUrl}}/balanceTransfer",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => [
'currency' => '',
'value' => 0
],
'description' => '',
'fromMerchant' => '',
'reference' => '',
'toMerchant' => '',
'type' => ''
]),
CURLOPT_HTTPHEADER => [
"content-type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
request('POST', '{{baseUrl}}/balanceTransfer', [
'body' => '{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}',
'headers' => [
'content-type' => 'application/json',
],
]);
echo $response->getBody();
setUrl('{{baseUrl}}/balanceTransfer');
$request->setMethod(HTTP_METH_POST);
$request->setHeaders([
'content-type' => 'application/json'
]);
$request->setContentType('application/json');
$request->setBody(json_encode([
'amount' => [
'currency' => '',
'value' => 0
],
'description' => '',
'fromMerchant' => '',
'reference' => '',
'toMerchant' => '',
'type' => ''
]));
try {
$response = $request->send();
echo $response->getBody();
} catch (HttpException $ex) {
echo $ex;
}
append(json_encode([
'amount' => [
'currency' => '',
'value' => 0
],
'description' => '',
'fromMerchant' => '',
'reference' => '',
'toMerchant' => '',
'type' => ''
]));
$request->setRequestUrl('{{baseUrl}}/balanceTransfer');
$request->setRequestMethod('POST');
$request->setBody($body);
$request->setHeaders([
'content-type' => 'application/json'
]);
$client->enqueue($request)->send();
$response = $client->getResponse();
echo $response->getBody();
$headers=@{}
$headers.Add("content-type", "application/json")
$response = Invoke-WebRequest -Uri '{{baseUrl}}/balanceTransfer' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}'
$headers=@{}
$headers.Add("content-type", "application/json")
$response = Invoke-RestMethod -Uri '{{baseUrl}}/balanceTransfer' -Method POST -Headers $headers -ContentType 'application/json' -Body '{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}'
import http.client
conn = http.client.HTTPSConnection("example.com")
payload = "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"
headers = { 'content-type': "application/json" }
conn.request("POST", "/baseUrl/balanceTransfer", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
import requests
url = "{{baseUrl}}/balanceTransfer"
payload = {
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}
headers = {"content-type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
library(httr)
url <- "{{baseUrl}}/balanceTransfer"
payload <- "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"
encode <- "json"
response <- VERB("POST", url, body = payload, content_type("application/json"), encode = encode)
content(response, "text")
require 'uri'
require 'net/http'
url = URI("{{baseUrl}}/balanceTransfer")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request.body = "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"
response = http.request(request)
puts response.read_body
require 'faraday'
conn = Faraday.new(
url: 'https://example.com',
headers: {'Content-Type' => 'application/json'}
)
response = conn.post('/baseUrl/balanceTransfer') do |req|
req.body = "{\n \"amount\": {\n \"currency\": \"\",\n \"value\": 0\n },\n \"description\": \"\",\n \"fromMerchant\": \"\",\n \"reference\": \"\",\n \"toMerchant\": \"\",\n \"type\": \"\"\n}"
end
puts response.status
puts response.body
use serde_json::json;
use reqwest;
#[tokio::main]
pub async fn main() {
let url = "{{baseUrl}}/balanceTransfer";
let payload = json!({
"amount": json!({
"currency": "",
"value": 0
}),
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
});
let mut headers = reqwest::header::HeaderMap::new();
headers.insert("content-type", "application/json".parse().unwrap());
let client = reqwest::Client::new();
let response = client.post(url)
.headers(headers)
.json(&payload)
.send()
.await;
let results = response.unwrap()
.json::()
.await
.unwrap();
dbg!(results);
}
curl --request POST \
--url {{baseUrl}}/balanceTransfer \
--header 'content-type: application/json' \
--data '{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}'
echo '{
"amount": {
"currency": "",
"value": 0
},
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
}' | \
http POST {{baseUrl}}/balanceTransfer \
content-type:application/json
wget --quiet \
--method POST \
--header 'content-type: application/json' \
--body-data '{\n "amount": {\n "currency": "",\n "value": 0\n },\n "description": "",\n "fromMerchant": "",\n "reference": "",\n "toMerchant": "",\n "type": ""\n}' \
--output-document \
- {{baseUrl}}/balanceTransfer
import Foundation
let headers = ["content-type": "application/json"]
let parameters = [
"amount": [
"currency": "",
"value": 0
],
"description": "",
"fromMerchant": "",
"reference": "",
"toMerchant": "",
"type": ""
] as [String : Any]
let postData = JSONSerialization.data(withJSONObject: parameters, options: [])
let request = NSMutableURLRequest(url: NSURL(string: "{{baseUrl}}/balanceTransfer")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()
RESPONSE HEADERS
Content-Type
application/json
RESPONSE BODY json
{
"amount": {
"currency": "EUR",
"value": 50000
},
"createdAt": "2022-01-24T14:59:11+01:00",
"description": "Your description for the transfer",
"fromMerchant": "MerchantAccount_NL",
"pspReference": "8816080397613514",
"reference": "Unique reference for the transfer",
"status": "transferred",
"toMerchant": "MerchantAccount_DE",
"type": "debit"
}