Listar recebíveis
Lista os recebíveis (valores a receber) da sua conta — cada parcela que uma transação gera e que será liquidada no seu saldo. Use este endpoint para acompanhar o que já caiu, o que ainda está pendente
Lista os recebíveis (valores a receber) da sua conta — cada parcela que uma transação gera e que será liquidada no seu saldo. Use este endpoint para acompanhar o que já caiu, o que ainda está pendente e quando cada valor fica disponível, com filtros de status, período e paginação. É a base para conciliação financeira, previsão de caixa e relatórios de receita.
GET /v1/receivables
Recebível (do inglês receivable) é um direito de recebimento: quando uma venda é aprovada, a plataforma cria um ou mais recebíveis (um por parcela) que serão pagos a você na data prevista. Listar recebíveis é, na prática, ver o "extrato futuro e passado" das suas vendas.
Como funciona
Cada transação aprovada gera recebíveis — um para pagamento à vista (parcela 1) ou vários para vendas parceladas (uma parcela por mês). Cada recebível tem um valor bruto (grossAmount, o que o cliente pagou na parcela) e um valor líquido (amount, o que efetivamente entra no seu saldo, já descontadas as taxas). Ele nasce com status: "pending" e tem uma data prevista de liquidação (expectedOn); quando o dinheiro é liberado, o status passa para paid e paidAt é preenchido.
Ciclo de vida típico de um recebível:
Pontos importantes sobre o mecanismo:
- Projeção leve em listas. Os itens em
data[]são uma visão resumida do recebível. Trate os camposnull(paidAt,refundedAt,canceledAt,recipientId,splitId) como "ainda não aconteceu" / "não se aplica" — veja Convenções → null vs. ausente. - Somente leitura. Recebíveis não são criados nem alterados por você; eles são consequência de transações, estornos e disputas. Para mudar o estado, opera-se na transação de origem, não no recebível.
- Resposta paginada padrão. O corpo é o objeto de paginação (não um array direto), com
data[], metadados de página,merchante_linksHATEOAS. Veja Paginação. - Atualizações via webhook, nunca por polling. Para saber quando um recebível muda de status, assine eventos em vez de ficar relistando — veja Proibição de Polling.
Quando usar
- Previsão de caixa: filtre por
status=pendinge por período (daterange*) para ver o que vai entrar. - Conciliação: cruze os recebíveis
paidde um dia com o seu extrato bancário/contábil. - Auditoria de uma transação: filtre por
idou cruze pelotransactionIddos itens.
Quando não usar:
- Para saber o saldo agregado disponível agora, use Consultar Saldo — não some recebíveis manualmente.
- Para métricas e totais de um período (em vez da lista item a item), use o endpoint de analytics de recebíveis (
GET /v1/receivables/analytics). - Para detalhes da venda (cliente, método de pagamento, parcelas), consulte a transação de origem em Listar Transações.
Requisição
Headers
| Cabeçalho | Obrigatório | Valor |
|---|---|---|
SelectKey | Sim | Sua chave de API: sl_live_… em produção, sl_test_… em sandbox. Nunca use Authorization: Bearer/Basic. Veja Autenticação. |
Como é uma leitura (GET), não há corpo nem necessidade de Content-Type ou X-Idempotency-Key.
Parâmetros de query
Todos são opcionais. Combine-os livremente (ex.: status + período + paginação).
| Parâmetro | Tipo | Descrição |
|---|---|---|
limit | number | Quantidade máxima de itens por página. Intervalo: 1 a 50. |
offset | number | Quantidade de itens a pular (paginação). Mínimo: 0. |
sort | string | Ordem do resultado. Enum: ascending | descending. |
released | string | Filtra pelo status de liberação. Valores: yes | no. |
status | string | Filtra pelo status do recebível (ex.: pending, paid). Veja a tabela de status abaixo. |
id | string | Filtra por um recebível específico. Formato rec_… (padrão ^[a-z]+_[A-Za-z0-9]+$). |
daterange | string (ISO 8601) | Filtra por um único dia: a API expande o valor para o início e o fim daquele dia no campo de data relevante. Ex.: 2026-01-01T00:00:00Z. |
daterangegt | string (ISO 8601) | Limite inferior exclusivo: registros estritamente depois deste instante. |
daterangegte | string (ISO 8601) | Limite inferior inclusivo: registros no ou após este instante. |
daterangelt | string (ISO 8601) | Limite superior exclusivo: registros estritamente antes deste instante. |
daterangelte | string (ISO 8601) | Limite superior inclusivo: registros no ou antes deste instante. |
Nota
Para um intervalo (ex.: "todo o mês de abril"), combine daterangegte (início, inclusivo) com daterangelt (próximo dia, exclusivo). Use daterange sozinho apenas quando quiser um único dia civil. Todas as datas são ISO 8601 em UTC (sufixo Z).
Valores de status aceitos:
status | Significado |
|---|---|
pending | Aguardando liberação |
scheduled | Agendado para liquidação futura |
paid | Já liberado no seu saldo |
refunded | Estornado |
canceled | Cancelado |
chargeback | Contestação de cartão |
dispute | Em disputa |
fraud-hold | Retido por suspeita de fraude |
Exemplo curl
Listar os 20 recebíveis pendentes mais recentes:
curl -G https://api.selectwin.io/v1/receivables \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "status=pending" \
--data-urlencode "sort=descending" \
--data-urlencode "limit=20" \
--data-urlencode "offset=0"Filtrar por período (recebíveis liberados em abril/2026):
curl -G https://api.selectwin.io/v1/receivables \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "status=paid" \
--data-urlencode "daterangegte=2026-04-01T00:00:00Z" \
--data-urlencode "daterangelt=2026-05-01T00:00:00Z"Buscar um recebível específico:
curl -G https://api.selectwin.io/v1/receivables \
-H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ" \
--data-urlencode "id=rec_01hqzvabc"Resposta
200 OK — objeto paginado com a lista em data[], metadados de página, merchant e _links.
{
"offset": 0,
"limit": 20,
"total": 128,
"page": {
"offset": { "first": 0, "prev": null, "next": 20, "last": 120 },
"current": 1,
"total": 7
},
"data": [
{
"id": "rec_01hqzvabc",
"transactionId": "tra_01hqzvabc",
"recipientId": null,
"splitId": null,
"currency": "BRL",
"amount": 4850,
"grossAmount": 5000,
"status": "pending",
"installmentNumber": 1,
"anticipationFee": 0,
"liable": true,
"chargeProcessingFee": true,
"description": "Payment successfully completed.",
"paidAt": null,
"refundedAt": null,
"canceledAt": null,
"expectedOn": "2026-04-20T00:00:00.000Z",
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-04-12T17:56:33.000Z"
}
],
"hasMore": true,
"merchant": {
"name": "Seller Name",
"merchantId": "bus_1234567890",
"isSubAccount": false
},
"_links": {
"self": {
"href": "https://api.selectwin.io/v1/receivables/list",
"method": "GET"
},
"analytics": {
"href": "https://api.selectwin.io/v1/receivables/analytics",
"method": "GET"
}
}
}Campos de paginação
| Campo | Tipo | Descrição |
|---|---|---|
offset | integer | Itens pulados nesta consulta |
limit | integer | Tamanho da página aplicado |
total | integer | Total de recebíveis que casam com o filtro |
hasMore | boolean | true se há mais páginas além desta |
page.current | integer | Página atual (começa em 1) |
page.total | integer | Total de páginas |
page.offset.first / prev / next / last | integer | null | Offsets prontos para navegar (use-os em vez de recalcular). prev/next são null nos extremos. |
merchant | object | Identificação do merchant (name, merchantId, isSubAccount) |
_links | object | Links HATEOAS — aqui, self e analytics |
Detalhes em Paginação.
Campos de cada recebível (data[])
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ID do recebível (rec_…). Trate como opaco. |
transactionId | string | Transação que originou o recebível (tra_…). |
recipientId | string | null | Destinatário, quando o valor vai para outra conta (ex.: split). null se for você. |
splitId | string | null | Split que gerou o recebível, quando aplicável. null se não houver split. |
currency | string | Moeda ISO 4217 (BRL). |
amount | integer | Valor líquido em centavos — o que entra no seu saldo (já com taxas descontadas). |
grossAmount | integer | Valor bruto em centavos — o que o cliente pagou nesta parcela. |
status | string | Estado atual (ver tabela de status acima). |
installmentNumber | integer | Número da parcela (1 para à vista). |
anticipationFee | integer | Taxa de antecipação em centavos (0 se não antecipado). |
liable | boolean | Indica se você é responsável por este recebível (ex.: em caso de chargeback). |
chargeProcessingFee | boolean | Se a taxa de processamento incide sobre este recebível. |
description | string | Descrição legível do estado/origem. |
paidAt | string | null | Quando foi liberado (ISO 8601 UTC). null enquanto pendente. |
refundedAt | string | null | Quando foi estornado. null se não estornado. |
canceledAt | string | null | Quando foi cancelado. null se não cancelado. |
expectedOn | string | Data prevista de liquidação (ISO 8601 UTC). |
createdAt / updatedAt | string | Criação / última atualização (ISO 8601 UTC). |
Dica
Para exibir o valor, divida por 100 só na hora de mostrar: amount: 4850 → R$ 48,50. Nunca faça contas financeiras em ponto flutuante — some sempre os inteiros em centavos. Veja Convenções → dinheiro em centavos.
Erros
A API responde com o envelope padrão de erro, em que o que importa é o error.code (estável e legível por máquina), não a message. Veja Tratamento de Erros e o Catálogo de Códigos de Erro.
{
"error": {
"code": "invalidParameters",
"statusCode": 400,
"category": "validation",
"message": "Validation errors occurred.",
"params": [
{ "limit": "limit must be a number between 1 and 50" }
]
}
}error.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | Parâmetro de query inválido (ex.: limit fora de 1–50, data malformada, id sem o padrão prefixo_valor). Veja error.params. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Autenticada, mas sem permissão para este recurso. |
notFound | 404 | Recurso não encontrado. |
unprocessableEntity | 422 | A requisição é válida, mas viola uma regra de negócio. |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes e aplique backoff. Veja API Limits. |
serverError | 500 | Erro interno — repita com backoff; se persistir, contate o suporte. |
Boas práticas
- Pagine pelos
page.offset.*. Avance usandopage.offset.nextatéhasMorevirarfalse, em vez de recalcular offsets na mão — assim você não pula nem repete itens. - Respeite o teto de
limit(50). Pedir mais que 50 retornainvalidParameters. Para grandes volumes, prefira páginas de 50 com intervalos entre as chamadas (evita429). - Filtre por período no servidor. Use
daterangegte+daterangeltpara janelas fechadas, em vez de baixar tudo e filtrar localmente — menos dados, menos chamadas, menos risco de rate limit. - Não some recebíveis para obter saldo. Para o disponível agregado, use Consultar Saldo; os valores já consideram bloqueios, pendências e garantias.
- Distinga
amountdegrossAmount. Para receita líquida, someamount; para o total cobrado do cliente, somegrossAmount. Misturá-los gera divergência de conciliação. - Não fique relistando para detectar mudanças. Assine Webhooks para reagir a liberações/estornos em vez de fazer polling.
- Trate todos os timestamps como UTC. Converta para o fuso do usuário só na exibição; ao filtrar, envie sempre o sufixo
Z.
Veja também
- Visão Geral de Finanças — o recurso e todas as suas operações.
- Consultar Saldo — saldo disponível, pendente e bloqueado.
- Paginação · Convenções · Tratamento de Erros · Proibição de Polling
- Listar Transações — detalhes das vendas que originam os recebíveis.
How is this guide?