Match a payment to a bank transaction
Pairs an UNMATCHED payment with the UNMATCHED bank transaction that settled it, for when reconciliation could not pair them automatically, and sends the merchant its reconciliation webhook. Returns 404 if the payment or the transaction is not the merchant’s, and 409 if either is already matched.
curl --request POST \
--url 'https://api.equalsmoney.com/v2/roqqett/reconciliation/matches?accountId={{accountId}}' \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
}
'import requests
url = "https://api.equalsmoney.com/v2/roqqett/reconciliation/matches"
payload = {
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
paymentId: '9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34',
transactionId: 'e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d'
})
};
fetch('https://api.equalsmoney.com/v2/roqqett/reconciliation/matches', 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://api.equalsmoney.com/v2/roqqett/reconciliation/matches",
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([
'paymentId' => '9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34',
'transactionId' => 'e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://api.equalsmoney.com/v2/roqqett/reconciliation/matches"
payload := strings.NewReader("{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://api.equalsmoney.com/v2/roqqett/reconciliation/matches")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.equalsmoney.com/v2/roqqett/reconciliation/matches")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3b9d6f2a-8c1e-4a7d-9f5b-2e0c4a6d8b13",
"payment": {
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"type": "PAYMENT",
"status": "UNMATCHED",
"amount": {
"amount": "10000.00",
"currencyCode": "GBP"
},
"reference": "RQ123456",
"merchantReference": "ORDER-10421",
"checkoutName": "Example Shop checkout",
"bankDetails": {
"type": "SORT_CODE",
"sortCode": "040004",
"accountNumberLastFour": "5678"
},
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d",
"completedAt": "2026-10-02T12:00:05Z"
},
"transaction": {
"id": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d",
"status": "UNMATCHED",
"direction": "CREDIT",
"amount": {
"amount": "10000.00",
"currencyCode": "USD"
},
"reference": "RQ123456",
"description": "MyRef RQ123456 MyRef2",
"bankDetails": {
"type": "SORT_CODE",
"sortCode": "040004",
"accountNumberLastFour": "5678"
},
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"bookedAt": "2026-10-02T12:00:05Z",
"receivedAt": "2026-10-02T12:10:00Z",
"createdAt": "2019-08-24T14:15:22Z"
},
"createdAt": "2019-08-24T14:15:22Z"
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}Authorizations
Query Parameters
The ID of the account to work with.
"F50091"
Body
Body
The ID of a Roqqett payment or refund record.
36"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34"
The ID of a reconciliation transaction: one line of the merchant's connected bank account statement.
36"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
Response
Created
The ID of a reconciliation match.
36"3b9d6f2a-8c1e-4a7d-9f5b-2e0c4a6d8b13"
A completed payment or refund as reconciliation sees it.
Show child attributes
Show child attributes
One line of the merchant's connected bank account statement, as reconciliation sees it.
Show child attributes
Show child attributes
The date the Resource was initially created. ISO 8601 format without milliseconds.
Was this page helpful?
curl --request POST \
--url 'https://api.equalsmoney.com/v2/roqqett/reconciliation/matches?accountId={{accountId}}' \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
}
'import requests
url = "https://api.equalsmoney.com/v2/roqqett/reconciliation/matches"
payload = {
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
paymentId: '9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34',
transactionId: 'e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d'
})
};
fetch('https://api.equalsmoney.com/v2/roqqett/reconciliation/matches', 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://api.equalsmoney.com/v2/roqqett/reconciliation/matches",
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([
'paymentId' => '9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34',
'transactionId' => 'e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"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://api.equalsmoney.com/v2/roqqett/reconciliation/matches"
payload := strings.NewReader("{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
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://api.equalsmoney.com/v2/roqqett/reconciliation/matches")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.equalsmoney.com/v2/roqqett/reconciliation/matches")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"paymentId\": \"9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34\",\n \"transactionId\": \"e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3b9d6f2a-8c1e-4a7d-9f5b-2e0c4a6d8b13",
"payment": {
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"type": "PAYMENT",
"status": "UNMATCHED",
"amount": {
"amount": "10000.00",
"currencyCode": "GBP"
},
"reference": "RQ123456",
"merchantReference": "ORDER-10421",
"checkoutName": "Example Shop checkout",
"bankDetails": {
"type": "SORT_CODE",
"sortCode": "040004",
"accountNumberLastFour": "5678"
},
"transactionId": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d",
"completedAt": "2026-10-02T12:00:05Z"
},
"transaction": {
"id": "e7bf0d9e-af9e-4ac0-a5ed-0d6c6cec809d",
"status": "UNMATCHED",
"direction": "CREDIT",
"amount": {
"amount": "10000.00",
"currencyCode": "USD"
},
"reference": "RQ123456",
"description": "MyRef RQ123456 MyRef2",
"bankDetails": {
"type": "SORT_CODE",
"sortCode": "040004",
"accountNumberLastFour": "5678"
},
"paymentId": "9c4e1a7b-3d2f-4b6a-8e5c-0f7d2a9b1c34",
"bookedAt": "2026-10-02T12:00:05Z",
"receivedAt": "2026-10-02T12:10:00Z",
"createdAt": "2019-08-24T14:15:22Z"
},
"createdAt": "2019-08-24T14:15:22Z"
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}{
"message": "Checkout session not found.",
"errors": [
{
"path": "string",
"message": "string",
"errorCode": "string"
}
]
}