SelectwinDOCS
Carteiras

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:

EndpointRespostaQuando usar
GET /v1/walletsObjeto paginado (offset, limit, total, data[], merchant, _links)Padrão. Telas com paginação, grandes volumes, navegação por páginas.
GET /v1/wallets/listallArray 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

Requisição

Headers

CabeçalhoObrigatórioValor
SelectKeySimSua 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 usa Content-Type nem X-Idempotency-Key. Nunca use Authorization: Bearer/Basic — a autenticação é sempre pelo header SelectKey.

Parâmetros de consulta (query)

Todos são opcionais e valem para GET /v1/wallets e GET /v1/wallets/listall.

ParâmetroTipoObrigatórioDescrição
limitintegerNãoMáximo de itens por página. Intervalo 1..100. Ex.: 20.
offsetintegerNãoQuantos itens pular antes de começar a página. Mínimo 0. Ex.: 0.
sortstringNãoOrdem dos resultados por data de criação. Enum: ascending, descending.
idstringNãoFiltra por um ID de carteira específico. Deve casar com o padrão ^[a-z]+_[A-Za-z0-9]+$ (ex.: wall_01hqzvabc).
daterangestringNãoFiltra 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.
daterangegtstringNãoLimite inferior exclusivo: apenas registros com data estritamente depois deste valor.
daterangegtestringNãoLimite inferior inclusivo: registros com data igual ou depois deste valor.
daterangeltstringNãoLimite superior exclusivo: registros com data estritamente antes deste valor.
daterangeltestringNãoLimite 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

CampoTipoDescrição
offsetintegerPosição inicial dos resultados retornados.
limitintegerQuantidade máxima de registros retornados nesta página.
totalintegerTotal de carteiras que casam com a consulta.
hasMorebooleantrue se há mais resultados além dos retornados.
page.currentintegerNúmero da página atual.
page.totalintegerTotal de páginas.
page.offset.first / .prev / .next / .lastinteger | nullOffsets prontos para navegar (prev/next são null quando não há página anterior/seguinte).
dataarrayCarteiras (projeção leve — veja a nota acima).
merchantobjectDados do lojista da conta (name, merchantId, isSubAccount).
_linksobjectLinks HATEOAS (self, create) para navegar a partir desta resposta.

Campos de cada carteira em data[]

CampoTipoDescrição
idstringIdentificador da carteira (wall_...). Trate como string opaca.
namestringNome/apelido da conta.
bankNamestringNome do banco resolvido a partir do bankCode.
bankCodestringCódigo do banco (COMPE/ISPB).
holderNamestringNome do titular da conta.
routingNumberstringAgência.
accountNumberstringNúmero da conta (com dígito).
primarybooleantrue se esta é a carteira principal usada por padrão nos saques.
enabledbooleantrue se a carteira está ativa e disponível para uso.
createdAt / updatedAtstringTimestamps 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.codeHTTPQuando ocorre
walletIdIsInvalid400O id informado no filtro não tem formato válido de ID de carteira.
invalidParameters400Algum parâmetro de consulta é inválido (ex.: limit fora de 1..100, sort fora do enum, data malformada). Veja error.params.
unauthorized401SelectKey ausente, inválida ou revogada.
forbidden403Autenticado, mas sem permissão para a operação.
unprocessableEntity422A requisição não pôde ser processada por uma regra de negócio.
tooManyRequests429Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. Veja API Limits.
serverError500Erro interno inesperado — tente novamente; se persistir, contate o suporte.

Boas práticas

  1. Pagine sempre que hasMore for true. Avance somando limit ao offset (ou use page.offset.next) até hasMore virar false. Não presuma que a primeira página traz tudo.
  2. Escolha o endpoint certo. Use GET /v1/wallets/listall para preencher um seletor pequeno de uma vez; use GET /v1/wallets quando precisar de paginação e metadados.
  3. Trate data[] como projeção leve. Se precisar de accountType, busque o detalhe com GET /v1/wallets/{walletId} — não conte com esse campo na listagem.
  4. Para achar a carteira principal, filtre o resultado pelo campo primary === true em vez de assumir que é o primeiro item da lista.
  5. Considere enabled antes de oferecer uma carteira para saque: uma carteira desabilitada não deve ser usada como destino.
  6. Trate os IDs como opacos. Armazene a string id inteira; não faça parsing nem confie no prefixo para lógica — veja Convenções.
  7. 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?

On this page