SelectwinDOCS
Finanças

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 campos null (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, merchant e _links HATEOAS. 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=pending e por período (daterange*) para ver o que vai entrar.
  • Conciliação: cruze os recebíveis paid de um dia com o seu extrato bancário/contábil.
  • Auditoria de uma transação: filtre por id ou cruze pelo transactionId dos 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çalhoObrigatórioValor
SelectKeySimSua 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âmetroTipoDescrição
limitnumberQuantidade máxima de itens por página. Intervalo: 1 a 50.
offsetnumberQuantidade de itens a pular (paginação). Mínimo: 0.
sortstringOrdem do resultado. Enum: ascending | descending.
releasedstringFiltra pelo status de liberação. Valores: yes | no.
statusstringFiltra pelo status do recebível (ex.: pending, paid). Veja a tabela de status abaixo.
idstringFiltra por um recebível específico. Formato rec_… (padrão ^[a-z]+_[A-Za-z0-9]+$).
daterangestring (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.
daterangegtstring (ISO 8601)Limite inferior exclusivo: registros estritamente depois deste instante.
daterangegtestring (ISO 8601)Limite inferior inclusivo: registros no ou após este instante.
daterangeltstring (ISO 8601)Limite superior exclusivo: registros estritamente antes deste instante.
daterangeltestring (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:

statusSignificado
pendingAguardando liberação
scheduledAgendado para liquidação futura
paidJá liberado no seu saldo
refundedEstornado
canceledCancelado
chargebackContestação de cartão
disputeEm disputa
fraud-holdRetido 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

CampoTipoDescrição
offsetintegerItens pulados nesta consulta
limitintegerTamanho da página aplicado
totalintegerTotal de recebíveis que casam com o filtro
hasMorebooleantrue se há mais páginas além desta
page.currentintegerPágina atual (começa em 1)
page.totalintegerTotal de páginas
page.offset.first / prev / next / lastinteger | nullOffsets prontos para navegar (use-os em vez de recalcular). prev/next são null nos extremos.
merchantobjectIdentificação do merchant (name, merchantId, isSubAccount)
_linksobjectLinks HATEOAS — aqui, self e analytics

Detalhes em Paginação.

Campos de cada recebível (data[])

CampoTipoDescrição
idstringID do recebível (rec_…). Trate como opaco.
transactionIdstringTransação que originou o recebível (tra_…).
recipientIdstring | nullDestinatário, quando o valor vai para outra conta (ex.: split). null se for você.
splitIdstring | nullSplit que gerou o recebível, quando aplicável. null se não houver split.
currencystringMoeda ISO 4217 (BRL).
amountintegerValor líquido em centavos — o que entra no seu saldo (já com taxas descontadas).
grossAmountintegerValor bruto em centavos — o que o cliente pagou nesta parcela.
statusstringEstado atual (ver tabela de status acima).
installmentNumberintegerNúmero da parcela (1 para à vista).
anticipationFeeintegerTaxa de antecipação em centavos (0 se não antecipado).
liablebooleanIndica se você é responsável por este recebível (ex.: em caso de chargeback).
chargeProcessingFeebooleanSe a taxa de processamento incide sobre este recebível.
descriptionstringDescrição legível do estado/origem.
paidAtstring | nullQuando foi liberado (ISO 8601 UTC). null enquanto pendente.
refundedAtstring | nullQuando foi estornado. null se não estornado.
canceledAtstring | nullQuando foi cancelado. null se não cancelado.
expectedOnstringData prevista de liquidação (ISO 8601 UTC).
createdAt / updatedAtstringCriação / última atualização (ISO 8601 UTC).

Dica

Para exibir o valor, divida por 100 só na hora de mostrar: amount: 4850R$ 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.codeHTTPQuando ocorre
invalidParameters400Parâmetro de query inválido (ex.: limit fora de 1–50, data malformada, id sem o padrão prefixo_valor). Veja error.params.
unauthorized401SelectKey ausente, inválida ou revogada.
forbidden403Autenticada, mas sem permissão para este recurso.
notFound404Recurso não encontrado.
unprocessableEntity422A requisição é válida, mas viola uma regra de negócio.
tooManyRequests429Limite de requisições excedido — respeite error.retryAfterMinutes e aplique backoff. Veja API Limits.
serverError500Erro interno — repita com backoff; se persistir, contate o suporte.

Boas práticas

  • Pagine pelos page.offset.*. Avance usando page.offset.next até hasMore virar false, 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 retorna invalidParameters. Para grandes volumes, prefira páginas de 50 com intervalos entre as chamadas (evita 429).
  • Filtre por período no servidor. Use daterangegte + daterangelt para 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 amount de grossAmount. Para receita líquida, some amount; para o total cobrado do cliente, some grossAmount. 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

How is this guide?

On this page