curl --request POST \
--url https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"requests": [
{
"id": "req_001",
"beneficiary_name": "John Doe",
"iban": "FR1420041010050500013M02606"
},
{
"id": "req_002",
"beneficiary_name": "Jane Smith",
"iban": "GB82WEST12345698765432"
},
{
"id": "req_003",
"beneficiary_name": "ACME Corp",
"iban": "DE89370400440532013000"
}
]
}
'import requests
url = "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee"
payload = { "requests": [
{
"id": "req_001",
"beneficiary_name": "John Doe",
"iban": "FR1420041010050500013M02606"
},
{
"id": "req_002",
"beneficiary_name": "Jane Smith",
"iban": "GB82WEST12345698765432"
},
{
"id": "req_003",
"beneficiary_name": "ACME Corp",
"iban": "DE89370400440532013000"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requests: [
{
id: 'req_001',
beneficiary_name: 'John Doe',
iban: 'FR1420041010050500013M02606'
},
{id: 'req_002', beneficiary_name: 'Jane Smith', iban: 'GB82WEST12345698765432'},
{id: 'req_003', beneficiary_name: 'ACME Corp', iban: 'DE89370400440532013000'}
]
})
};
fetch('https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee",
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([
'requests' => [
[
'id' => 'req_001',
'beneficiary_name' => 'John Doe',
'iban' => 'FR1420041010050500013M02606'
],
[
'id' => 'req_002',
'beneficiary_name' => 'Jane Smith',
'iban' => 'GB82WEST12345698765432'
],
[
'id' => 'req_003',
'beneficiary_name' => 'ACME Corp',
'iban' => 'DE89370400440532013000'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee"
payload := strings.NewReader("{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"proof_token": {
"token": "proof_1234567890abcdef"
},
"requests": [
{
"id": "req_001",
"response": {
"match_result": "MATCH_RESULT_MATCH"
}
},
{
"id": "req_002",
"response": {
"match_result": "MATCH_RESULT_CLOSE_MATCH",
"matched_name": "J. Smith"
}
},
{
"id": "req_003",
"error_code": "SINGLE_REQUEST_ERROR_CODE_BAD_REQUEST_ERROR_RESPONDING_BANK_NOT_AVAILABLE"
}
]
}Bulk verify SEPA payees
OAuth scope: payment.write
Verifies multiple payees information by matching IBAN and beneficiary name for each request. Returns match results for each verification request, including success responses and error codes for failed verifications. This endpoint allows processing multiple payee verifications in a single request.
You can also use the Sandbox environment to test the endpoint with mocked IBANs.
Token requirement
The proof_token included in the response is required for initiating a SEPA transfer and will be valid regardless of the verification result. Please review the response, results that are not a MATCH_RESULT_MATCH may indicate a transfer will be sent to a wrong beneficiary.
Please note the token will only be valid for the exact set of IBANs included in this request.
Rate limits
A verification is only intended to be used before initiating SEPA transfers. Rate limits will apply to verifications that are not followed by a transfer initiation. Please perform verification for transfers that will be initiated shortly.
curl --request POST \
--url https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"requests": [
{
"id": "req_001",
"beneficiary_name": "John Doe",
"iban": "FR1420041010050500013M02606"
},
{
"id": "req_002",
"beneficiary_name": "Jane Smith",
"iban": "GB82WEST12345698765432"
},
{
"id": "req_003",
"beneficiary_name": "ACME Corp",
"iban": "DE89370400440532013000"
}
]
}
'import requests
url = "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee"
payload = { "requests": [
{
"id": "req_001",
"beneficiary_name": "John Doe",
"iban": "FR1420041010050500013M02606"
},
{
"id": "req_002",
"beneficiary_name": "Jane Smith",
"iban": "GB82WEST12345698765432"
},
{
"id": "req_003",
"beneficiary_name": "ACME Corp",
"iban": "DE89370400440532013000"
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
requests: [
{
id: 'req_001',
beneficiary_name: 'John Doe',
iban: 'FR1420041010050500013M02606'
},
{id: 'req_002', beneficiary_name: 'Jane Smith', iban: 'GB82WEST12345698765432'},
{id: 'req_003', beneficiary_name: 'ACME Corp', iban: 'DE89370400440532013000'}
]
})
};
fetch('https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee",
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([
'requests' => [
[
'id' => 'req_001',
'beneficiary_name' => 'John Doe',
'iban' => 'FR1420041010050500013M02606'
],
[
'id' => 'req_002',
'beneficiary_name' => 'Jane Smith',
'iban' => 'GB82WEST12345698765432'
],
[
'id' => 'req_003',
'beneficiary_name' => 'ACME Corp',
'iban' => 'DE89370400440532013000'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee"
payload := strings.NewReader("{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://thirdparty.qonto.com/v2/sepa/bulk_verify_payee")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"requests\": [\n {\n \"id\": \"req_001\",\n \"beneficiary_name\": \"John Doe\",\n \"iban\": \"FR1420041010050500013M02606\"\n },\n {\n \"id\": \"req_002\",\n \"beneficiary_name\": \"Jane Smith\",\n \"iban\": \"GB82WEST12345698765432\"\n },\n {\n \"id\": \"req_003\",\n \"beneficiary_name\": \"ACME Corp\",\n \"iban\": \"DE89370400440532013000\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"proof_token": {
"token": "proof_1234567890abcdef"
},
"requests": [
{
"id": "req_001",
"response": {
"match_result": "MATCH_RESULT_MATCH"
}
},
{
"id": "req_002",
"response": {
"match_result": "MATCH_RESULT_CLOSE_MATCH",
"matched_name": "J. Smith"
}
},
{
"id": "req_003",
"error_code": "SINGLE_REQUEST_ERROR_CODE_BAD_REQUEST_ERROR_RESPONDING_BANK_NOT_AVAILABLE"
}
]
}Authorizations
Bearer authorization header: Bearer <token>, where <token> is the access token received from the authorization server at the end of the OAuth 2.0 flow.
Headers
Required only for Sandbox API requests; to get one, please sign up to the Developer Portal.
Body
List of verification requests to be processed in bulk
1 - 400 elementsShow child attributes
Show child attributes
Response
Bulk verification completed (may contain mixed success/error results)
Token ensuring verification of payee was performed for the set of requests. This token must be used to initiate a bulk transfer to the exact same set of payees, validation will fail otherwise. The token can be used regardless of the VOP match result.
Show child attributes
Show child attributes
List of verification request results
Show child attributes
Show child attributes
Was this page helpful?