Sign multiple transactions
curl --request POST \
--url https://api.pgw-sandbox.finventi.com/v1/transactions/signatures \
--header 'Content-Type: application/json' \
--data '
{
"transactionIds": [
123
]
}
'import requests
url = "https://api.pgw-sandbox.finventi.com/v1/transactions/signatures"
payload = { "transactionIds": [123] }
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({transactionIds: [123]})
};
fetch('https://api.pgw-sandbox.finventi.com/v1/transactions/signatures', 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/signatures",
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([
'transactionIds' => [
123
]
]),
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/signatures"
payload := strings.NewReader("{\n \"transactionIds\": [\n 123\n ]\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/signatures")
.header("Content-Type", "application/json")
.body("{\n \"transactionIds\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pgw-sandbox.finventi.com/v1/transactions/signatures")
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 \"transactionIds\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"count": 123,
"failedToSignTransactionIds": [
123
]
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}SWIFT Payments
Sign multiple transactions
Signs multiple transactions in bulk that require approval.
POST
/
v1
/
transactions
/
signatures
Sign multiple transactions
curl --request POST \
--url https://api.pgw-sandbox.finventi.com/v1/transactions/signatures \
--header 'Content-Type: application/json' \
--data '
{
"transactionIds": [
123
]
}
'import requests
url = "https://api.pgw-sandbox.finventi.com/v1/transactions/signatures"
payload = { "transactionIds": [123] }
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({transactionIds: [123]})
};
fetch('https://api.pgw-sandbox.finventi.com/v1/transactions/signatures', 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/signatures",
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([
'transactionIds' => [
123
]
]),
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/signatures"
payload := strings.NewReader("{\n \"transactionIds\": [\n 123\n ]\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/signatures")
.header("Content-Type", "application/json")
.body("{\n \"transactionIds\": [\n 123\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pgw-sandbox.finventi.com/v1/transactions/signatures")
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 \"transactionIds\": [\n 123\n ]\n}"
response = http.request(request)
puts response.read_body{
"count": 123,
"failedToSignTransactionIds": [
123
]
}{
"code": "<string>",
"data": {
"errors": [
{
"code": "<string>",
"field_name": "<string>",
"message": "<string>",
"value": "<string>"
}
],
"message": "<string>"
},
"message": "<string>"
}Overview
This endpoint signs multiple transactions at once. Use it to approve several payments waiting for signatures.Prerequisites
Transaction signing must be enabled for your account. Contact Inventi team if you want to enable thisHow It Works
- Submit all IDs that need signature in a single request
- The system signs each transaction
- Response shows successful signatures and any failures
- Payments processing resume automatically after signing
Important Notes
Supported Transaction Types
Only these transaction types support signing:- SEPA Credit Transfers (SCT)
- SEPA Instant Payments (INST)
- SWIFT Payments
TO_SIGN status.
Bulk Signing Behavior
When using this bulk signing endpoint:- Successfully signed transactions appear in the response
- Failed transactions are included in
failedToSignTransactionIds - Transactions fail silently without stopping the entire batch
- Transaction not in
TO_SIGNstatus - User has already signed this transaction
- Transaction type doesn’t support signing
- Insufficient permissions for the user
API vs UI Signing
When your tenant has API signing enabled:- API-created transactions must be signed through the API by a different API client than the one that created them
- UI-created transactions must be signed through the UI interface
Requirements
- Transactions must have
TO_SIGNstatus - Must use a different API client from the one that created the transactions
- User must have signing permissions configured at the tenant level
Last modified on January 20, 2026