Listar saques
Recupera, de forma paginada, o histórico de saques (repasses bancários) da sua conta, com filtros por status, método de pagamento, período e identificador. Use este endpoint para acompanhar repasses,
Recupera, de forma paginada, o histórico de saques (repasses bancários) da sua conta, com filtros por status, método de pagamento, período e identificador. Use este endpoint para acompanhar repasses, conciliar com o extrato bancário e construir relatórios financeiros.
GET /v1/withdrawals
Como funciona
Um saque (recurso withdrawal, prefixo de ID cash_) é uma ordem de transferência do saldo disponível da sua conta para uma carteira bancária (wallet) cadastrada. Cada saque tem um ciclo de vida assíncrono: nasce como pending, é aprovado e, então, liquidado (pago) ou rejeitado.
Este endpoint devolve uma lista paginada desses saques. Alguns pontos do mecanismo que vale entender antes de integrar:
- Projeção leve. Os itens em
data[]são versões resumidas do objeto. Em particular, o campowalletIdnão vem na listagem. Para obter o objeto completo de um saque (incluindowalletId), use Consultar saque com oid. - Paginação por offset. A resposta carrega
offset,limit,total,hasMoree um blocopagecom a página atual e os offsets de navegação (first/prev/next/last). Veja Paginação para o padrão completo. - HATEOAS. O bloco
_linkstraz links navegáveis (self,create) já prontos com método e URL absoluta — útil para descobrir as próximas ações sem montar URLs à mão. - Somente leitura. A listagem não altera nada. Não precisa de chave de idempotência.
O status exato segue o ciclo de vida do saque. Para mudanças de estado em tempo real, prefira webhooks a ficar consultando esta lista em loop — veja Por que não fazer polling.
Quando usar
- Conciliação bancária: cruzar os saques liquidados com as entradas do seu extrato.
- Relatórios e auditoria: montar um histórico financeiro filtrando por período.
- Painéis e monitoramento: listar saques
pendingouapprovedpara acompanhar repasses em andamento.
Quando não usar:
- Para os detalhes completos de um saque (com
walletId), use Consultar saque — é mais barato e traz o objeto inteiro. - Para reagir a uma mudança de status (ex.: saque foi pago), use webhooks em vez de re-listar periodicamente.
Requisição
Headers
| Cabeçalho | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua chave de API: sl_live_… (produção) ou sl_test_… (sandbox). Veja Autenticação. |
Esta é uma requisição GET sem corpo, portanto não envia Content-Type. Autentique sempre pelo header SelectKey — a API não usa Authorization: Bearer nem Basic.
Parâmetros de query
Todos são opcionais. Combine-os para refinar a busca.
| Parâmetro | Tipo | Descrição |
|---|---|---|
limit | integer (1–100) | Máximo de itens por página. Padrão da API quando omitido. |
offset | integer (≥ 0) | Quantos itens pular (paginação). |
sort | string | Ordem dos resultados. Enum: ascending, descending. |
method | string | Filtra pelo método de repasse (ex.: pix, bankTransfer). |
status | string | Filtra pelo status do saque (ex.: pending, approved, paid). |
id | string | Filtra por um ID de saque específico (ex.: cash_abc123). |
daterange | string (ISO 8601) | Restringe a um único dia do calendário; a API expande para o início e fim daquele dia. |
daterangegt | string (ISO 8601) | Limite inferior exclusivo: somente registros estritamente após esta data. |
daterangegte | string (ISO 8601) | Limite inferior inclusivo: registros nesta data ou depois. |
daterangelt | string (ISO 8601) | Limite superior exclusivo: somente registros estritamente antes desta data. |
daterangelte | string (ISO 8601) | Limite superior inclusivo: registros nesta data ou antes. |
Sobre os filtros de data
Use daterange para um único dia. Para um intervalo, combine daterangegte (a partir de) com daterangelte (até). As datas seguem ISO 8601 em UTC (2026-04-12T00:00:00Z) — veja Convenções.
Exemplo curl
# Listar os 20 saques pendentes mais recentes via Pix em abril de 2026
curl -G "https://api.selectwin.io/v1/withdrawals" \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "limit=20" \
--data-urlencode "sort=descending" \
--data-urlencode "status=pending" \
--data-urlencode "method=pix" \
--data-urlencode "daterangegte=2026-04-01T00:00:00Z" \
--data-urlencode "daterangelte=2026-04-30T23:59:59Z"Resposta
200 OK com o objeto paginado. Cada item de data[] é uma projeção leve do saque (sem walletId).
{
"offset": 0,
"limit": 20,
"total": 1,
"page": {
"offset": { "first": 0, "prev": null, "next": null, "last": 0 },
"current": 1,
"total": 1
},
"data": [
{
"id": "cash_01hqzvabc",
"amount": 45000,
"status": "pending",
"method": "bankTransfer",
"currency": "BRL",
"fee": 0,
"transferCode": null,
"paidAt": null,
"approvedAt": null,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
],
"hasMore": false,
"merchant": {
"name": "Seller Name",
"merchantId": "bus_1234567890",
"isSubAccount": false
},
"_links": {
"self": {
"href": "https://api.selectwin.io/v1/withdrawals",
"method": "GET",
"description": "List withdrawals."
},
"create": {
"href": "https://api.selectwin.io/v1/withdrawals",
"method": "POST",
"description": "Make a withdrawal."
}
}
}Campos do envelope paginado
| Campo | Tipo | Descrição |
|---|---|---|
offset | integer | Posição inicial dos resultados retornados. |
limit | integer | Máximo de itens nesta página. |
total | integer | Total de saques disponíveis para o filtro aplicado. |
hasMore | boolean | true se há mais registros 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 para navegar (prev/next são null quando não existem). |
data | array | Projeções leves de saques (sem walletId). |
merchant | object | Identificação da conta: name, merchantId, isSubAccount. |
_links | object | Links HATEOAS (self, create). |
Campos de cada saque (data[])
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do saque (cash_…). Trate como opaco. |
amount | integer | Valor do saque em centavos (45000 = R$ 450,00). |
status | string | Estado atual do saque (ex.: pending, approved, paid). |
method | string | Método de repasse (ex.: bankTransfer, pix). |
currency | string | Moeda ISO 4217 — atualmente BRL. |
fee | integer | Tarifa do saque em centavos. |
transferCode | string | null | Código da transferência bancária, quando disponível. |
paidAt | string | null | Data-hora da liquidação (ISO 8601 UTC) ou null se ainda não pago. |
approvedAt | string | null | Data-hora da aprovação ou null. |
updatedAt | string | Última atualização (ISO 8601 UTC). |
createdAt | string | Criação do saque (ISO 8601 UTC). |
Diferença entre listar e consultar
Na listagem, cada saque é uma projeção e não inclui walletId. Para a carteira de destino e o objeto completo, chame Consultar saque. Veja a regra de projeções leves em Convenções.
Erros
Trate sempre pelo error.code (estável), nunca pela message. Veja Tratamento de Erros e o Catálogo de Códigos de Erro.
error.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | Parâmetro de query inválido (ex.: limit fora de 1–100, data malformada). Veja error.params. |
withdrawalIdIsInvalid | 400 | O id informado no filtro não tem formato válido. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Chave sem permissão para listar saques. |
unprocessableEntity | 422 | Combinação de filtros não processável (regra de negócio). |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes e use backoff. Veja API Limits. |
serverError | 500 | Erro interno — tente novamente; se persistir, contate o suporte. |
Boas práticas
- Pagine sempre. Use
limit(até 100) eoffset; pare quandohasMoreforfalseem vez de assumir um total fixo. Para listagens grandes, prefira_linkse os offsets depagepara navegar. - Filtre no servidor, não no cliente. Restringir por
status,methode o intervalodaterangegte/daterangeltereduz dados trafegados e custo de processamento — mais eficiente do que baixar tudo e filtrar localmente. - Datas em UTC. Envie os filtros de data em ISO 8601 com sufixo
Z; converta para o fuso do usuário apenas na exibição. - Valores em centavos.
amountefeesão inteiros em centavos; divida por 100 só para exibir. - Não construa IDs. Use o
idretornado como string opaca; passe-o direto para Consultar saque quando precisar dos detalhes. - Não faça polling para acompanhar status. Para saber quando um saque foi pago ou recusado, assine os webhooks em vez de re-listar em loop — veja Por que não fazer polling.
- Concilie pelo período correto. Para fechamento, combine
daterangegte/daterangeltecobrindo o ciclo e cruzetransferCodecom o extrato bancário.
Veja também
- Visão geral de Saques — o recurso, o modelo do objeto e o ciclo de vida.
- Criar saque — solicitar um novo repasse.
- Consultar saque — detalhes completos de um saque (com
walletId). - Paginação e Convenções.
How is this guide?