curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactionsimport requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions', 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}/cards/{cardId}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}/cards/{cardId}/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"items": [
{
"_id": "66f2a7e9b4d3e80012c9a112",
"environment": "LIVE",
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2",
"cardId": "66f2a4b8b4d3e80012c9a0e1",
"availableBalanceBefore": 1250000,
"financialImpactType": "DEBIT",
"msgType": 1100,
"effectiveAt": "2026-11-02T15:20:31.000Z",
"billingAmount": 18990,
"billingAmountAuthorized": 18990,
"billingCurrency": "986",
"external": {
"transactionId": "0F1E2D3C4B5A69788796A5B4C3D2E1F0"
},
"processingType": "INSTANT",
"createdAt": "2026-11-02T15:20:33.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z",
"balanceCategory": "ADS",
"responseCode": 0,
"txnType": 0,
"cardTransaction": {
"_id": "66f2a7e9b4d3e80012c9a115",
"localTime": "2026-11-02T15:20:31.000Z",
"txnCurrency": "986",
"txnAmount": 18990,
"txnAmountAuthorized": 18990,
"linkedTransactions": [
{
"_id": "66f2a7e9b4d3e80012c9a114",
"transactionId": "66f2a7e9b4d3e80012c9a113",
"linkType": "CLEARING_DEBITED_BY",
"createdAt": "2026-11-03T09:12:40.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z"
}
],
"acquiringCountryCode": "076",
"acquiringId": "012345",
"mcc": "5968",
"merchantCity": "SAO PAULO",
"merchantCountry": "BRA",
"merchantId": "000000000473921",
"merchantName": "LOJA EXEMPLO",
"expired": false,
"cleared": true,
"overcleared": false,
"reversed": false,
"posEntryMode": "E-Commerce",
"recurring": false,
"mobileWalletProvider": 103
},
"feeTransaction": {
"_id": "66f2a7e9b4d3e80012c9a117",
"linkedTransactions": [
{
"_id": "66f2a7e9b4d3e80012c9a114",
"transactionId": "66f2a7e9b4d3e80012c9a113",
"linkType": "CLEARING_DEBITED_BY",
"createdAt": "2026-11-03T09:12:40.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z"
}
],
"txnCurrency": "986",
"txnAmount": 664,
"txnAmountAuthorized": 664,
"description": "Tarifa de compra internacional",
"external": {
"invoiceId": "66f2a8a1b4d3e80012c9a120",
"dealId": "66f2a8a1b4d3e80012c9a121",
"contractId": "66f2a8a1b4d3e80012c9a122"
},
"creditParty": {
"type": "LOCAL",
"_id": "66f2a7e9b4d3e80012c9a118",
"local": {
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2"
},
"remote": {
"pixKey": "financeiro@acme.com.br",
"pixDict": "EMAIL"
}
},
"debitParty": {
"type": "LOCAL",
"_id": "66f2a7e9b4d3e80012c9a118",
"local": {
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2"
},
"remote": {
"pixKey": "financeiro@acme.com.br",
"pixDict": "EMAIL"
}
}
},
"enrichment": {
"_id": "66f2a7e9b4d3e80012c9a116",
"merchant": "GOOGLE",
"category": "ADVERTISING_AND_MARKETING",
"rulesVersion": 3
},
"customFields": {
"cost-center": "CC-1020"
},
"spendReview": {
"status": "APPROVED",
"policyId": "6a01b2c3d4e5f60718293a4b",
"policyRequestId": "6a01b2c3d4e5f60718293a4c",
"requester": {
"userId": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"name": "Mariana Costa",
"email": "mariana.costa@acme.com.br"
},
"requestedAt": "2026-11-02T18:02:11.000Z",
"autoApproved": false,
"approvalExpiresAt": "2026-11-09T18:02:11.000Z",
"decidedAt": "2026-11-03T10:15:00.000Z",
"declineOutcome": "DENIED",
"decisionReason": "Receipt missing"
},
"spendReviewSubmissionLeaseUntil": "2026-11-02T18:03:11.000Z",
"receipts": "https://files.example.com/receipt.pdf",
"description": "Campaign ads",
"timezoneOffset": -3,
"internalErrorCode": "INSUFFICIENT_FUNDS",
"__v": 0
}
],
"next": "NjZmMmE3ZTliNGQzZTgwMDEyYzlhMTEy"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "ACCOUNT_NOT_FOUND",
"origin": "BANKING",
"message": "Account not found"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "BANKING",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "merchantName",
"message": "Too big: expected string to have <=256 characters",
"code": "MERCHANTNAME_MAX"
}
]
}List card transactions
Lists a card’s transactions, newest first: purchases, their settlements and refunds, and the fees charged on the card.
curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactionsimport requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions', 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}/cards/{cardId}/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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}/cards/{cardId}/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/accounts/{accountId}/wallets/{walletId}/cards/{cardId}/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"items": [
{
"_id": "66f2a7e9b4d3e80012c9a112",
"environment": "LIVE",
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2",
"cardId": "66f2a4b8b4d3e80012c9a0e1",
"availableBalanceBefore": 1250000,
"financialImpactType": "DEBIT",
"msgType": 1100,
"effectiveAt": "2026-11-02T15:20:31.000Z",
"billingAmount": 18990,
"billingAmountAuthorized": 18990,
"billingCurrency": "986",
"external": {
"transactionId": "0F1E2D3C4B5A69788796A5B4C3D2E1F0"
},
"processingType": "INSTANT",
"createdAt": "2026-11-02T15:20:33.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z",
"balanceCategory": "ADS",
"responseCode": 0,
"txnType": 0,
"cardTransaction": {
"_id": "66f2a7e9b4d3e80012c9a115",
"localTime": "2026-11-02T15:20:31.000Z",
"txnCurrency": "986",
"txnAmount": 18990,
"txnAmountAuthorized": 18990,
"linkedTransactions": [
{
"_id": "66f2a7e9b4d3e80012c9a114",
"transactionId": "66f2a7e9b4d3e80012c9a113",
"linkType": "CLEARING_DEBITED_BY",
"createdAt": "2026-11-03T09:12:40.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z"
}
],
"acquiringCountryCode": "076",
"acquiringId": "012345",
"mcc": "5968",
"merchantCity": "SAO PAULO",
"merchantCountry": "BRA",
"merchantId": "000000000473921",
"merchantName": "LOJA EXEMPLO",
"expired": false,
"cleared": true,
"overcleared": false,
"reversed": false,
"posEntryMode": "E-Commerce",
"recurring": false,
"mobileWalletProvider": 103
},
"feeTransaction": {
"_id": "66f2a7e9b4d3e80012c9a117",
"linkedTransactions": [
{
"_id": "66f2a7e9b4d3e80012c9a114",
"transactionId": "66f2a7e9b4d3e80012c9a113",
"linkType": "CLEARING_DEBITED_BY",
"createdAt": "2026-11-03T09:12:40.000Z",
"updatedAt": "2026-11-03T09:12:40.000Z"
}
],
"txnCurrency": "986",
"txnAmount": 664,
"txnAmountAuthorized": 664,
"description": "Tarifa de compra internacional",
"external": {
"invoiceId": "66f2a8a1b4d3e80012c9a120",
"dealId": "66f2a8a1b4d3e80012c9a121",
"contractId": "66f2a8a1b4d3e80012c9a122"
},
"creditParty": {
"type": "LOCAL",
"_id": "66f2a7e9b4d3e80012c9a118",
"local": {
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2"
},
"remote": {
"pixKey": "financeiro@acme.com.br",
"pixDict": "EMAIL"
}
},
"debitParty": {
"type": "LOCAL",
"_id": "66f2a7e9b4d3e80012c9a118",
"local": {
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"walletId": "66f2a3d1b4d3e80012c9a0d2"
},
"remote": {
"pixKey": "financeiro@acme.com.br",
"pixDict": "EMAIL"
}
}
},
"enrichment": {
"_id": "66f2a7e9b4d3e80012c9a116",
"merchant": "GOOGLE",
"category": "ADVERTISING_AND_MARKETING",
"rulesVersion": 3
},
"customFields": {
"cost-center": "CC-1020"
},
"spendReview": {
"status": "APPROVED",
"policyId": "6a01b2c3d4e5f60718293a4b",
"policyRequestId": "6a01b2c3d4e5f60718293a4c",
"requester": {
"userId": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"name": "Mariana Costa",
"email": "mariana.costa@acme.com.br"
},
"requestedAt": "2026-11-02T18:02:11.000Z",
"autoApproved": false,
"approvalExpiresAt": "2026-11-09T18:02:11.000Z",
"decidedAt": "2026-11-03T10:15:00.000Z",
"declineOutcome": "DENIED",
"decisionReason": "Receipt missing"
},
"spendReviewSubmissionLeaseUntil": "2026-11-02T18:03:11.000Z",
"receipts": "https://files.example.com/receipt.pdf",
"description": "Campaign ads",
"timezoneOffset": -3,
"internalErrorCode": "INSUFFICIENT_FUNDS",
"__v": 0
}
],
"next": "NjZmMmE3ZTliNGQzZTgwMDEyYzlhMTEy"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "ACCOUNT_NOT_FOUND",
"origin": "BANKING",
"message": "Account not found"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "BAD_REQUEST",
"origin": "BANKING",
"message": "Bad Request: Your request is invalid or incomplete. Please make sure you are requesting with the right fields.",
"fields": [
{
"field": "merchantName",
"message": "Too big: expected string to have <=256 characters",
"code": "MERCHANTNAME_MAX"
}
]
}startDate and endDate (both, or neither), to a merchant with merchantName, or to DEBIT / CREDIT / NONE transactions with financialImpactType (comma-separated for several), and page with limit + next. A purchase and its later settlement or refund are separate transactions, linked through cardTransaction.linkedTransactions. Use default as walletId for the organization’s main wallet, and send x-environment: LIVE for a production card.
Any member of the organization can list a card’s transactions.Headers
Environment of the card: LIVE (production) or TEST (sandbox). When you omit it, the request runs in TEST; any other value is rejected.
LIVE, TEST Path Parameters
ID of your realm.
Format: UUID
ID of the organization the card belongs to.
Format: UUID
ID of the organization's account (24 hexadecimal characters).
^[0-9a-fA-F]{24}$ID of the card's wallet (24 hexadecimal characters), or default for the organization's main wallet.
^([0-9a-fA-F]{24}|default)$ID of the card (24 hexadecimal characters).
^[0-9a-fA-F]{24}$Query Parameters
Start of the period, inclusive: an ISO 8601 date-time (2026-11-01T03:00:00.000Z) or date (2026-11-01, read as midnight UTC). The period applies only when you send both startDate and endDate.
End of the period, inclusive, in the same format as startDate.
Only transactions whose merchant name contains this text (case-insensitive).
256Only transactions with these effects on the balance (case-insensitive): DEBIT (money out), CREDIT (money in) or NONE (no effect, such as a declined authorization). Other values match no transaction.
Example (comma-separated list): ?financialImpactType=DEBIT,CREDIT
64Cursor returned as next by the previous page. Omit it for the first page.
Page size. Defaults to 15.
x > 0