Listar carteiras
Liste as carteiras (contas bancárias) cadastradas na sua conta para recebimento e saque, com paginação, ordenação e filtros por ID ou por data. Use esta operação para montar telas de seleção de conta,
Liste as carteiras (contas bancárias) cadastradas na sua conta para recebimento e saque, com paginação, ordenação e filtros por ID ou por data. Use esta operação para montar telas de seleção de conta, conferir qual carteira é a principal ou auditar as contas disponíveis antes de criar um saque.
GET /v1/wallets
Como funciona
Uma carteira representa uma conta bancária vinculada ao seu negócio (lojista). É para ela que o saldo disponível é enviado quando você solicita um saque (withdrawal). A listagem devolve as carteiras da conta autenticada pela sua SelectKey — você não consulta carteiras de terceiros.
A resposta é paginada por offset: você pede uma "fatia" dos resultados informando offset (quantos itens pular) e limit (quantos trazer). O servidor devolve essa fatia dentro de data, junto com metadados (total, hasMore, page) que dizem se há mais páginas. Os campos de paginação seguem o padrão geral descrito em Paginação.
Existem duas formas de listar carteiras, com formatos de resposta diferentes:
| Endpoint | Resposta | Quando usar |
|---|---|---|
GET /v1/wallets | Objeto paginado (offset, limit, total, data[], merchant, _links) | Padrão. Telas com paginação, grandes volumes, navegação por páginas. |
GET /v1/wallets/listall | Array simples de carteiras (sem envelope) | Quando você quer todas as carteiras de uma vez para preencher um seletor pequeno, sem lidar com metadados de página. |
Projeção leve nas listagens
Os itens em data[] são projeções leves: trazem os campos principais da carteira, mas não incluem accountType. Esse campo só aparece quando você consulta a carteira individual com GET /v1/wallets/{walletId} ou no retorno do POST /v1/wallets. É uma convenção geral da API — veja Convenções.
Quando usar
- Use para listar e paginar as carteiras da conta, encontrar a carteira
primary(principal) ou auditar contas antes de um saque. - Não use para obter o detalhe completo de uma carteira (com
accountType): para isso, consulteGET /v1/wallets/{walletId}. - Para criar uma carteira, veja
POST /v1/wallets; para remover, vejaDELETE /v1/wallets/{walletId}.
Requisição
Headers
| Cabeçalho | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua chave de API. Em produção começa com sl_live_; em sandbox, com sl_test_. Veja Autenticação. |
Esta é uma operação de leitura (
GET), portanto não tem corpo e não usaContent-TypenemX-Idempotency-Key. Nunca useAuthorization: Bearer/Basic— a autenticação é sempre pelo headerSelectKey.
Parâmetros de consulta (query)
Todos são opcionais e valem para GET /v1/wallets e GET /v1/wallets/listall.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
limit | integer | Não | Máximo de itens por página. Intervalo 1..100. Ex.: 20. |
offset | integer | Não | Quantos itens pular antes de começar a página. Mínimo 0. Ex.: 0. |
sort | string | Não | Ordem dos resultados por data de criação. Enum: ascending, descending. |
id | string | Não | Filtra por um ID de carteira específico. Deve casar com o padrão ^[a-z]+_[A-Za-z0-9]+$ (ex.: wall_01hqzvabc). |
daterange | string | Não | Filtra por um único dia de calendário; a API expande o valor para o início e o fim daquele dia no campo de data relevante. ISO 8601 UTC, ex.: 2026-01-01T00:00:00Z. |
daterangegt | string | Não | Limite inferior exclusivo: apenas registros com data estritamente depois deste valor. |
daterangegte | string | Não | Limite inferior inclusivo: registros com data igual ou depois deste valor. |
daterangelt | string | Não | Limite superior exclusivo: registros com data estritamente antes deste valor. |
daterangelte | string | Não | Limite superior inclusivo: registros com data igual ou antes deste valor. |
Combinando filtros de data
Use daterange para um dia específico, ou combine daterangegte (início) e daterangelte (fim) para um intervalo fechado. Os valores são datas ISO 8601 em UTC (sufixo Z) — veja Convenções.
Exemplo de requisição
Listar as 20 carteiras mais recentes, primeira página:
curl -G https://api.selectwin.io/v1/wallets \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "limit=20" \
--data-urlencode "offset=0" \
--data-urlencode "sort=descending"Filtrar por uma carteira específica:
curl -G https://api.selectwin.io/v1/wallets \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "id=wall_01hqzvabc"Trazer todas de uma vez (array simples):
curl https://api.selectwin.io/v1/wallets/listall \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"Resposta
GET /v1/wallets — 200 OK (paginado)
{
"offset": 0,
"limit": 20,
"total": 2,
"hasMore": false,
"page": {
"current": 1,
"total": 1,
"offset": { "first": 0, "prev": null, "next": null, "last": 0 }
},
"data": [
{
"id": "wall_01hqzvabc",
"name": "Conta principal",
"bankName": "Nubank",
"bankCode": "260",
"holderName": "João Santos",
"routingNumber": "0001",
"accountNumber": "12345678",
"primary": true,
"enabled": true,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
],
"merchant": {
"name": "Seller Name",
"merchantId": "bus_1234567890",
"isSubAccount": false
},
"_links": {
"self": {
"href": "https://api.selectwin.io/v1/wallets",
"method": "GET",
"description": "List all wallets."
},
"create": {
"href": "https://api.selectwin.io/v1/wallets",
"method": "POST",
"description": "Create a new wallet."
}
}
}Campos do envelope paginado
| Campo | Tipo | Descrição |
|---|---|---|
offset | integer | Posição inicial dos resultados retornados. |
limit | integer | Quantidade máxima de registros retornados nesta página. |
total | integer | Total de carteiras que casam com a consulta. |
hasMore | boolean | true se há mais resultados além dos retornados. |
page.current | integer | Número da página atual. |
page.total | integer | Total de páginas. |
page.offset.first / .prev / .next / .last | integer | null | Offsets prontos para navegar (prev/next são null quando não há página anterior/seguinte). |
data | array | Carteiras (projeção leve — veja a nota acima). |
merchant | object | Dados do lojista da conta (name, merchantId, isSubAccount). |
_links | object | Links HATEOAS (self, create) para navegar a partir desta resposta. |
Campos de cada carteira em data[]
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador da carteira (wall_...). Trate como string opaca. |
name | string | Nome/apelido da conta. |
bankName | string | Nome do banco resolvido a partir do bankCode. |
bankCode | string | Código do banco (COMPE/ISPB). |
holderName | string | Nome do titular da conta. |
routingNumber | string | Agência. |
accountNumber | string | Número da conta (com dígito). |
primary | boolean | true se esta é a carteira principal usada por padrão nos saques. |
enabled | boolean | true se a carteira está ativa e disponível para uso. |
createdAt / updatedAt | string | Timestamps ISO 8601 UTC. |
GET /v1/wallets/listall — 200 OK (array)
Retorna diretamente um array de carteiras, sem envelope de paginação, merchant ou _links:
[
{
"id": "wall_01hqzvabc",
"name": "Conta principal",
"bankName": "Nubank",
"bankCode": "260",
"holderName": "João Santos",
"routingNumber": "0001",
"accountNumber": "12345678",
"primary": true,
"enabled": true,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
]Os campos de cada item são os mesmos da projeção data[] acima (sem accountType).
Erros
Verifique sempre o error.code (estável, legível por máquina), não a message. Veja Tratamento de Erros e o Catálogo de Códigos de Erro.
error.code | HTTP | Quando ocorre |
|---|---|---|
walletIdIsInvalid | 400 | O id informado no filtro não tem formato válido de ID de carteira. |
invalidParameters | 400 | Algum parâmetro de consulta é inválido (ex.: limit fora de 1..100, sort fora do enum, data malformada). Veja error.params. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Autenticado, mas sem permissão para a operação. |
unprocessableEntity | 422 | A requisição não pôde ser processada por uma regra de negócio. |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. Veja API Limits. |
serverError | 500 | Erro interno inesperado — tente novamente; se persistir, contate o suporte. |
Boas práticas
- Pagine sempre que
hasMorefortrue. Avance somandolimitaooffset(ou usepage.offset.next) atéhasMorevirarfalse. Não presuma que a primeira página traz tudo. - Escolha o endpoint certo. Use
GET /v1/wallets/listallpara preencher um seletor pequeno de uma vez; useGET /v1/walletsquando precisar de paginação e metadados. - Trate
data[]como projeção leve. Se precisar deaccountType, busque o detalhe comGET /v1/wallets/{walletId}— não conte com esse campo na listagem. - Para achar a carteira principal, filtre o resultado pelo campo
primary === trueem vez de assumir que é o primeiro item da lista. - Considere
enabledantes de oferecer uma carteira para saque: uma carteira desabilitada não deve ser usada como destino. - Trate os IDs como opacos. Armazene a string
idinteira; não faça parsing nem confie no prefixo para lógica — veja Convenções. - Não fique fazendo polling para detectar mudanças nas carteiras; reaja a webhooks quando aplicável — veja Proibição de Polling.
Veja também
How is this guide?