curl --request POST \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/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.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"environment": "LIVE",
"realmId": "<string>",
"organizationId": "<string>",
"accountId": "<string>",
"walletId": "<string>",
"transactionId": "<string>",
"status": "INITIATED",
"originalEffectiveAt": "2023-11-07T05:31:56Z",
"originalAmount": 123,
"originalCurrency": "784",
"originalCreditParty": {
"bankIspb": "<string>",
"accountType": "CACC",
"document": "<string>",
"keyType": "PHONE",
"key": "<string>",
"name": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"branch": "<string>",
"accountNumber": 123
},
"originalDebitParty": {
"bankIspb": "<string>",
"accountType": "CACC",
"document": "<string>",
"keyType": "PHONE",
"key": "<string>",
"name": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"branch": "<string>",
"accountNumber": 123
},
"reversalReason": "USER_REQUESTED",
"reversalDescription": "<string>",
"reversalEffectiveAt": "2023-11-07T05:31:56Z",
"reversalAmount": 123,
"reversalCurrency": "784",
"_id": "<string>",
"requestedAt": "2023-11-07T05:31:56Z",
"originalPixId": "<string>",
"originalPixBillingId": "<string>",
"originalReceipt": {
"endToEndId": "<string>"
},
"reversalAdditionalInformation": "<string>",
"reversalReceipt": {
"endToEndId": "<string>"
},
"errorCode": "<string>",
"errorDescription": "<string>",
"external": {
"reversalId": "<string>"
},
"processingType": "INSTANT",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"confirmingAt": "2023-11-07T05:31:56Z"
}/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel
curl --request POST \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/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.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/transactions/{transactionId}/reversals/{reversalId}/cancel")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"environment": "LIVE",
"realmId": "<string>",
"organizationId": "<string>",
"accountId": "<string>",
"walletId": "<string>",
"transactionId": "<string>",
"status": "INITIATED",
"originalEffectiveAt": "2023-11-07T05:31:56Z",
"originalAmount": 123,
"originalCurrency": "784",
"originalCreditParty": {
"bankIspb": "<string>",
"accountType": "CACC",
"document": "<string>",
"keyType": "PHONE",
"key": "<string>",
"name": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"branch": "<string>",
"accountNumber": 123
},
"originalDebitParty": {
"bankIspb": "<string>",
"accountType": "CACC",
"document": "<string>",
"keyType": "PHONE",
"key": "<string>",
"name": "<string>",
"street": "<string>",
"city": "<string>",
"state": "<string>",
"postalCode": "<string>",
"branch": "<string>",
"accountNumber": 123
},
"reversalReason": "USER_REQUESTED",
"reversalDescription": "<string>",
"reversalEffectiveAt": "2023-11-07T05:31:56Z",
"reversalAmount": 123,
"reversalCurrency": "784",
"_id": "<string>",
"requestedAt": "2023-11-07T05:31:56Z",
"originalPixId": "<string>",
"originalPixBillingId": "<string>",
"originalReceipt": {
"endToEndId": "<string>"
},
"reversalAdditionalInformation": "<string>",
"reversalReceipt": {
"endToEndId": "<string>"
},
"errorCode": "<string>",
"errorDescription": "<string>",
"external": {
"reversalId": "<string>"
},
"processingType": "INSTANT",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"confirmingAt": "2023-11-07T05:31:56Z"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful response
A reversal of a pix we RECEIVED — money goes back OUT to the original sender.
⚠️ Not to be confused with the legacy PixInReversal* webhook family (connectors/swapBanking/types/webhooks/PIXInReversal.ts) or the domain-side PixRollback, both of which describe the OPPOSITE direction: SWAP telling us a pix we SENT was reversed, money coming back IN.
The original* fields snapshot the CREDIT transaction being reversed; the reversal* fields describe the outgoing refund itself.
LIVE, TEST INITIATED, REQUESTED, CONFIRMED, FAILED, CANCELED 784, 971, 008, 051, 973, 032, 036, 533, 944, 977, 052, 050, 048, 108, 060, 096, 068, 984, 986, 044, 064, 072, 933, 084, 124, 976, 947, 756, 948, 990, 152, 156, 170, 970, 188, 192, 132, 203, 262, 208, 214, 012, 818, 232, 230, 978, 242, 238, 826, 981, 936, 292, 270, 324, 320, 328, 344, 340, 332, 348, 360, 376, 356, 368, 364, 352, 388, 400, 392, 404, 417, 116, 174, 408, 410, 414, 136, 398, 418, 422, 144, 430, 426, 434, 504, 498, 969, 807, 104, 496, 446, 929, 480, 462, 454, 484, 979, 458, 943, 516, 566, 558, 578, 524, 554, 512, 590, 604, 598, 608, 586, 985, 600, 634, 946, 941, 643, 646, 682, 090, 690, 938, 752, 702, 654, 925, 706, 968, 728, 930, 222, 760, 748, 764, 972, 934, 788, 776, 949, 780, 901, 834, 980, 800, 840, 997, 940, 858, 927, 860, 926, 928, 704, 548, 882, 396, 950, 961, 959, 955, 956, 957, 958, 951, 532, 960, 952, 964, 953, 962, 994, 963, 965, 999, 886, 710, 967, 924 Show child attributes
Show child attributes
Show child attributes
Show child attributes
USER_REQUESTED 784, 971, 008, 051, 973, 032, 036, 533, 944, 977, 052, 050, 048, 108, 060, 096, 068, 984, 986, 044, 064, 072, 933, 084, 124, 976, 947, 756, 948, 990, 152, 156, 170, 970, 188, 192, 132, 203, 262, 208, 214, 012, 818, 232, 230, 978, 242, 238, 826, 981, 936, 292, 270, 324, 320, 328, 344, 340, 332, 348, 360, 376, 356, 368, 364, 352, 388, 400, 392, 404, 417, 116, 174, 408, 410, 414, 136, 398, 418, 422, 144, 430, 426, 434, 504, 498, 969, 807, 104, 496, 446, 929, 480, 462, 454, 484, 979, 458, 943, 516, 566, 558, 578, 524, 554, 512, 590, 604, 598, 608, 586, 985, 600, 634, 946, 941, 643, 646, 682, 090, 690, 938, 752, 702, 654, 925, 706, 968, 728, 930, 222, 760, 748, 764, 972, 934, 788, 776, 949, 780, 901, 834, 980, 800, 840, 997, 940, 858, 927, 860, 926, 928, 704, 548, 882, 396, 950, 961, 959, 955, 956, 957, 958, 951, 532, 960, 952, 964, 953, 962, 994, 963, 965, 999, 886, 710, 967, 924 Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
INSTANT, DELAYED Banking-internal atomic-claim lock, taken by the confirm before any money moves and never exposed on the wire (the model's toJSON strips it).