Cancel transactions (improved)
curl --request POST \
--url https://api.pgw-sandbox.finventi.com/v1/transactions:cancel \
--header 'Content-Type: application/json' \
--data '
{
"transaction_ids": [
123
],
"additional_comment": "<string>"
}
'import requests
url = "https://api.pgw-sandbox.finventi.com/v1/transactions:cancel"
payload = {
"transaction_ids": [123],
"additional_comment": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({transaction_ids: [123], additional_comment: '<string>'})
};
fetch('https://api.pgw-sandbox.finventi.com/v1/transactions:cancel', 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.pgw-sandbox.finventi.com/v1/transactions:cancel",
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([
'transaction_ids' => [
123
],
'additional_comment' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pgw-sandbox.finventi.com/v1/transactions:cancel"
payload := strings.NewReader("{\n \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\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(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pgw-sandbox.finventi.com/v1/transactions:cancel")
.header("Content-Type", "application/json")
.body("{\n \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pgw-sandbox.finventi.com/v1/transactions:cancel")
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 \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cancellationResult": {
"errorDetails": [
{
"id": 123,
"error": "<string>"
}
],
"unprocessedCount": 123
}
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}Cancel payments
Cancel SEPA transaction
Initiates cancellation request for outbound SEPA CT/Instant payments.
POST
/
v1
/
transactions:cancel
Cancel transactions (improved)
curl --request POST \
--url https://api.pgw-sandbox.finventi.com/v1/transactions:cancel \
--header 'Content-Type: application/json' \
--data '
{
"transaction_ids": [
123
],
"additional_comment": "<string>"
}
'import requests
url = "https://api.pgw-sandbox.finventi.com/v1/transactions:cancel"
payload = {
"transaction_ids": [123],
"additional_comment": "<string>"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({transaction_ids: [123], additional_comment: '<string>'})
};
fetch('https://api.pgw-sandbox.finventi.com/v1/transactions:cancel', 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.pgw-sandbox.finventi.com/v1/transactions:cancel",
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([
'transaction_ids' => [
123
],
'additional_comment' => '<string>'
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.pgw-sandbox.finventi.com/v1/transactions:cancel"
payload := strings.NewReader("{\n \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\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(string(body))
}HttpResponse<String> response = Unirest.post("https://api.pgw-sandbox.finventi.com/v1/transactions:cancel")
.header("Content-Type", "application/json")
.body("{\n \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pgw-sandbox.finventi.com/v1/transactions:cancel")
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 \"transaction_ids\": [\n 123\n ],\n \"additional_comment\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"cancellationResult": {
"errorDetails": [
{
"id": 123,
"error": "<string>"
}
],
"unprocessedCount": 123
}
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}Cancel payments cancels SEPA CT/Instant, SEPA Direct Debit, SWIFT and T2 payments through one endpoint, and takes up to 100 payments per request. It is the only endpoint that cancels SWIFT payments.
Overview
This endpoint initiates a cancellation request (camt.056) message to the beneficiary system for outbound SEPA CT/Instant payments.How It Works
- Payment not yet sent to clearing (
Created,To sign,Signed): Changes the payment status directly toCancelled - Payment already sent (
Sent to clear,Accepted,Completed): Sends a camt.056 cancellation request message to the beneficiary’s system
Completed (already settled) payment. In that case the camt.056 acts as a recall, and the funds are only returned if the beneficiary’s bank accepts it.
The beneficiary’s bank decides whether to accept or reject the cancellation request based on the payment status at their end.Body
application/json
Array of transaction IDs
Minimum array length:
1Used in conjunction with 'reason' or 'reason_additional'.
Only allowed when:
- 'CUST' is used as a Recall reason code; or
- 'FRAD', 'AM09' or 'AC03' are used as a Recall reason Proprietary.
Required string length:
1 - 105Cancellation reason.
One of the values must be present 'reason' or 'reason_additional'
Available options:
DUPL, CUST Additional cancellation reason.
One of the values must be present 'reason' or 'reason_additional'.
Available options:
FRAD, TECH, AC03, AM09 Response
Payment scheduled for cancellation
Result of cancel transactions
Show child attributes
Show child attributes
Last modified on August 28, 2026