SelectwinDOCS
Recebíveis

Métricas e análises

Retorna um recorte resumido dos seus recebíveis dentro de um intervalo de datas obrigatório, voltado a relatórios, dashboards e conciliação agregada. A resposta vem na chave list (não data) e não é pa

Retorna um recorte resumido dos seus recebíveis dentro de um intervalo de datas obrigatório, voltado a relatórios, dashboards e conciliação agregada. A resposta vem na chave list (não data) e não é paginada no formato padrão — pense nela como um "extrato" de período em vez de uma listagem completa.

GET /v1/receivables/analytics

Como funciona

Um recebível (receivable) é um valor a receber gerado por uma transação aprovada. Cada parcela de uma venda parcelada e cada destinatário de um split geram seus próprios recebíveis, com data prevista de liberação (expectedOn) e status próprio — veja Visão Geral.

O endpoint Analytics roda uma consulta sobre os recebíveis que caem no período entre initdate e enddate (ambos obrigatórios) e devolve, para cada recebível encontrado, uma projeção leve — um subconjunto dos campos. Em comparação com Listar, os itens aqui não trazem transactionId, recipientId, splitId, installmentNumber, description, paidAt, refundedAt nem canceledAt. A ideia é entregar exatamente o que um relatório precisa (valores, status, datas) sem o peso da projeção completa.

Pontos importantes do comportamento:

  • É somente leitura. Nenhum recebível é criado, alterado ou movido. Você pode chamar este endpoint quantas vezes quiser, com segurança, e ele não tem efeitos colaterais (é uma operação idempotente — repetir não muda nada no servidor).
  • A janela de datas é obrigatória. Sem initdate e enddate, a requisição falha com invalidParameters (400). Isso evita varreduras acidentais sobre toda a base.
  • A resposta usa list, não data. Quem já integra a listagem precisa ajustar o caminho de leitura: o array de itens está em list[].
  • _links (HATEOAS) traz o link self desta consulta e o link list para a listagem paginada completa, para você navegar entre as duas visões sem montar URLs à mão.

Quando usar (e quando não usar)

Use Analytics quando você precisa de uma visão agregada/resumida de um período fechado: alimentar um dashboard, montar um relatório mensal de recebíveis previstos, ou exportar um recorte enxuto para conciliação.

Prefira Listar quando você precisa:

  • da projeção completa de cada recebível (incluindo transactionId, installmentNumber, description, paidAt/refundedAt/canceledAt);
  • de paginação robusta (offset, limit, hasMore, page) para percorrer grandes volumes;
  • de filtrar por daterange* sobre um único campo de data com limites inclusivos/exclusivos.

Nota

Para reagir a mudanças de status em tempo real (um recebível que vira paid, refunded, chargeback…), não fique consultando este endpoint em loop. Use os eventos receivable.* por webhook — veja Proibição de Polling.

Requisição

Headers

CabeçalhoObrigatórioDescrição
SelectKeySimSua chave de API. Em produção começa com sl_live_; em sandbox, com sl_test_. Nunca use Authorization: Bearer/Basic. Veja Autenticação.

Como é uma requisição GET sem corpo, não há Content-Type nem X-Idempotency-Key (idempotência só se aplica a escritas).

Parâmetros de query

ParâmetroTipoObrigatórioDescrição
initdatestring (ISO 8601 UTC)SimInício do período analisado. Ex.: 2026-01-01T00:00:00Z.
enddatestring (ISO 8601 UTC)SimFim do período analisado. Ex.: 2026-01-31T23:59:59Z.
statusstringNãoFiltra por status. Enum: pending, paid, refunded, canceled, scheduled, chargeback, dispute, fraud-hold.
releasedstringNãoFiltra por situação de liberação. Enum: yes, no.
idstringNãoFiltra por um recebível específico. Padrão ^[a-z]+_[A-Za-z0-9]+$ (ex.: rec_abc123).
sortstringNãoOrdem do resultado. Enum: ascending, descending (ex.: descending).
limitnumberNãoTamanho da página (ex.: 50).
offsetnumberNãoDeslocamento de paginação (ex.: 0).

Atenção

initdate e enddate são obrigatórios. Datas seguem ISO 8601 em UTC (sufixo Z). Envie initdate menor ou igual a enddate; intervalos invertidos ou malformados retornam invalidParameters (400).

Exemplo curl

Período de janeiro inteiro, apenas recebíveis pendentes, ordenados do mais recente para o mais antigo:

curl -X GET "https://api.selectwin.io/v1/receivables/analytics?initdate=2026-01-01T00:00:00Z&enddate=2026-01-31T23:59:59Z&status=pending&sort=descending" \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"

Versão mínima (apenas o período obrigatório):

curl -X GET "https://api.selectwin.io/v1/receivables/analytics?initdate=2026-01-01T00:00:00Z&enddate=2026-01-31T23:59:59Z" \
  -H "SelectKey: sl_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ"

Resposta 200 OK

{
  "list": [
    {
      "id": "rec_01hqzvabc",
      "status": "pending",
      "currency": "BRL",
      "amount": 4850,
      "grossAmount": 5000,
      "anticipationFee": 0,
      "liable": true,
      "chargeProcessingFee": true,
      "expectedOn": "2026-04-20T00:00:00.000Z",
      "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/receivables/analytics",
      "method": "GET"
    },
    "list": {
      "href": "https://api.selectwin.io/v1/receivables/list",
      "method": "GET"
    }
  }
}

Campos da resposta

CampoTipoDescrição
list[]arrayRecebíveis do período (projeção leve).
list[].idstringIdentificador do recebível (rec_...). Trate como opaco.
list[].statusstringStatus do recebível (pending, paid, refunded, canceled, scheduled, chargeback, dispute, fraud-hold).
list[].currencystringMoeda ISO 4217 (atualmente BRL).
list[].amountintegerValor líquido em centavos (após taxas). 4850 = R$ 48,50.
list[].grossAmountintegerValor bruto em centavos (antes de taxas). 5000 = R$ 50,00.
list[].anticipationFeeintegerTaxa de antecipação aplicada, em centavos.
list[].liablebooleanSe o destinatário responde por chargebacks deste recebível.
list[].chargeProcessingFeebooleanSe a taxa de processamento incide sobre este recebível.
list[].expectedOnstring (date-time)Data prevista de liberação (ISO 8601 UTC).
list[].updatedAtstring (date-time)Última atualização.
list[].createdAtstring (date-time)Criação do recebível.
merchant.namestringNome do estabelecimento (sua conta).
merchant.merchantIdstringID do estabelecimento.
merchant.isSubAccountbooleanSe a conta é uma subconta.
_links.selfobjectLink desta consulta (href + method).
_links.listobjectLink para a listagem paginada completa.

Importante

Os itens de list[] são uma projeção leve. Campos como transactionId, recipientId, splitId, installmentNumber, description, paidAt, refundedAt e canceledAt não aparecem aqui. Para a projeção completa de cada recebível, use Listar.

Erros

error.codeHTTPQuando ocorre
invalidParameters400Parâmetro inválido ou faltando — tipicamente initdate/enddate ausentes, datas malformadas, intervalo invertido, ou status/released/sort fora do enum. Veja error.params para o campo.
unauthorized401SelectKey ausente, inválida ou revogada. Veja Autenticação.
forbidden403Chave autenticada, mas sem permissão para este recurso.
notFound404Recurso não encontrado (ex.: filtro id que não existe).
unprocessableEntity422Requisição bem-formada, mas viola uma regra de negócio.
tooManyRequests429Limite de requisições excedido — respeite error.retryAfterMinutes no backoff. Veja API Limits.
serverError500Erro interno — tente novamente com backoff; se persistir, contate o suporte.

Trate sempre pelo error.code (estável), nunca pela message. A estrutura do envelope está em Tratamento de Erros e a lista completa em Catálogo de Códigos de Erro.

Boas práticas

  • Sempre envie initdate e enddate. Não há padrão — a janela é obrigatória. Trate explicitamente o erro invalidParameters quando o período faltar ou estiver invertido.
  • Use janelas fechadas e curtas (ex.: um mês por vez) para relatórios previsíveis e respostas rápidas; particione períodos longos em chamadas menores.
  • Some valores em centavos (amount/grossAmount são inteiros) e divida por 100 só na exibição. Nunca acumule dinheiro em ponto flutuante.
  • Distinga líquido de bruto: grossAmount é o valor antes de taxas; amount é o que efetivamente cai na conta. Para análise de margem, compare os dois e considere anticipationFee.
  • Combine status e released para recortes úteis: status=pending mostra o que ainda está por liquidar; released=yes separa o que já foi liberado.
  • Não use Analytics para detalhe transacional. Se precisar do transactionId, da parcela ou do description, vá para Listar — a projeção leve daqui não os inclui.
  • Não faça polling deste endpoint para detectar mudanças de status; assine os eventos receivable.* por webhook — veja Proibição de Polling.

Veja também

How is this guide?

On this page