curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/walletsimport requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets', 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}/wallets",
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}/wallets"
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}/wallets")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets")
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": "66f2a3d1b4d3e80012c9a0d2",
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"environment": "LIVE",
"currency": "986",
"status": "ACTIVE",
"createdAt": "2024-10-01T12:30:05.000Z",
"updatedAt": "2024-10-01T12:34:41.000Z",
"external": {
"balanceAccountGroupId": "4f6b0e1d-2b3a-4c5d-8e9f-0a1b2c3d4e5f",
"accountNumber": 10023456,
"branch": "0001",
"accountType": "PREPAID"
},
"customFields": {
"cost-center": "CC-1020"
},
"role": "CHECKING",
"type": "SHARED",
"name": "Marketing",
"shared": [
{
"id": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"role": "OWNER",
"_id": "66f2a3d1b4d3e80012c9a0d3",
"firstName": "Mariana",
"lastName": "Costa",
"email": "mariana.costa@acme.com.br"
}
],
"settings": {
"payment": {
"pix": true,
"bankSlip": true,
"card": true
},
"notification": {
"balanceLimit": {
"amount": 50000,
"email": true,
"isActive": true
}
}
},
"walletProduct": "NORMAL",
"isSuper": false,
"createdBy": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"updatedBy": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"accountType": "PREPAID",
"__v": 0,
"totalBalance": 1250000,
"balances": [
{
"category": "FLEX_INTERNATIONAL",
"amount": 1250000
}
]
}
],
"next": "NjZmMmEzZDFiNGQzZTgwMDEyYzlhMGQy"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "FORBIDDEN_WALLET",
"origin": "BANKING",
"message": "You do not have permission to perform this action on this wallet"
}{
"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": "name",
"message": "Too big: expected string to have <=256 characters",
"code": "NAME_MAX"
}
]
}List wallets
Lists the organization’s wallets, with their balances.
curl --request GET \
--url https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/walletsimport requests
url = "https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets', 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}/wallets",
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}/wallets"
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}/wallets")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.banking.v2.portao3.com.br/realms/{realmId}/organizations/{organizationId}/wallets")
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": "66f2a3d1b4d3e80012c9a0d2",
"realmId": "f495ff0c-ab54-4f99-8e92-ca8682e4de9b",
"organizationId": "c4bd3f21-dfbd-44e8-8055-68ba15bed410",
"accountId": "66f2a1c7b4d3e80012c9a0b4",
"environment": "LIVE",
"currency": "986",
"status": "ACTIVE",
"createdAt": "2024-10-01T12:30:05.000Z",
"updatedAt": "2024-10-01T12:34:41.000Z",
"external": {
"balanceAccountGroupId": "4f6b0e1d-2b3a-4c5d-8e9f-0a1b2c3d4e5f",
"accountNumber": 10023456,
"branch": "0001",
"accountType": "PREPAID"
},
"customFields": {
"cost-center": "CC-1020"
},
"role": "CHECKING",
"type": "SHARED",
"name": "Marketing",
"shared": [
{
"id": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"role": "OWNER",
"_id": "66f2a3d1b4d3e80012c9a0d3",
"firstName": "Mariana",
"lastName": "Costa",
"email": "mariana.costa@acme.com.br"
}
],
"settings": {
"payment": {
"pix": true,
"bankSlip": true,
"card": true
},
"notification": {
"balanceLimit": {
"amount": 50000,
"email": true,
"isActive": true
}
}
},
"walletProduct": "NORMAL",
"isSuper": false,
"createdBy": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"updatedBy": "e3553bc1-5e20-4e17-b22a-a796fda0aa99",
"accountType": "PREPAID",
"__v": 0,
"totalBalance": 1250000,
"balances": [
{
"category": "FLEX_INTERNATIONAL",
"amount": 1250000
}
]
}
],
"next": "NjZmMmEzZDFiNGQzZTgwMDEyYzlhMGQy"
}{
"traceId": "1-68ee2a1b-3c4d5e6f7a8b9c0d1e2f3a4b",
"code": "FORBIDDEN_WALLET",
"origin": "BANKING",
"message": "You do not have permission to perform this action on this wallet"
}{
"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": "name",
"message": "Too big: expected string to have <=256 characters",
"code": "NAME_MAX"
}
]
}orderBy, your own PERSONAL wallet comes first. Wallets of the other environment are not listed, so send x-environment: LIVE for production wallets.
Filter by name (ignoring case — every word in any order for organization admins, the text as typed for other users), status, types, walletProducts, accountId, ids or excludeIds; admins can also filter by ownerIds and sharedUserId. List filters take their values comma-separated (?status=ACTIVE,BLOCKED); repeating the parameter works too. Sort with orderBy + order and page with limit + next.
The balances are read live; send includeBalances=false to leave them out, which is faster. A wallet whose balance can’t be read at that moment comes without it.Headers
Environment whose wallets you list: LIVE (production) or TEST (sandbox). When you omit it, you get the TEST wallets; any other value is rejected.
LIVE, TEST Path Parameters
ID of your realm.
Format: UUID
ID of the organization whose wallets you list.
Format: UUID
Query Parameters
Only wallets whose name contains this text, ignoring case. For organization admins every word counts on its own, in any order; for other users the text must appear as typed.
256Only wallets in these statuses (case-insensitive): PENDING, ACTIVE, BLOCKED, CANCELLING, CANCELLED, REPROVED, FRAUD_ANALYSIS or FRAUD_CONFIRMED. Other values match no wallet.
Example (comma-separated list): ?status=ACTIVE,BLOCKED
64Only wallets of these kinds (case-insensitive): ORGANIZATION, SHARED, PERSONAL or VEHICLE. Other values match no wallet.
Example (comma-separated list): ?types=SHARED,PERSONAL
64Only wallets on these card products.
Example (comma-separated list): ?walletProducts=NORMAL,SUPER
Only wallets whose OWNER is one of these users. Organization admins only: anyone else gets a 403.
Example (comma-separated list): ?ownerIds=e3553bc1-5e20-4e17-b22a-a796fda0aa99,0b6f2c1e-8d4a-4f3b-9a7e-5c2d1e0f9a8b
Only wallets shared with this user, in any role. Organization admins only; ignored for anyone else.
Only wallets of this account. A value that isn't an account ID matches no wallet.
Only these wallets. Values that aren't wallet IDs match no wallet.
Example (comma-separated list): ?ids=66f2a3d1b4d3e80012c9a0d2,66f2a1d0b4d3e80012c9a0b9
Leave these wallets out. Values that aren't wallet IDs are ignored.
Example (comma-separated list): ?excludeIds=66f2a1d0b4d3e80012c9a0b9,6710b8e4c9e77b0012a4d6f3
Field to sort by: createdAt (the default), name, or another wallet field such as updatedAt.
Sort direction of orderBy (case-insensitive). Defaults to DESC.
ASC, DESC false returns the wallets without their balances, which is faster. Balances are included by default.
true, false Cursor returned as next by the previous page. Omit it for the first page.
Page size. Defaults to 15 for organization admins and 20 for other users. Your PERSONAL wallet, when it leads the first page, takes one of those slots — except with limit=1, or when an admin omits limit, where that page holds one more.
x > 0