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
initdateeenddate, a requisição falha cominvalidParameters(400). Isso evita varreduras acidentais sobre toda a base. - A resposta usa
list, nãodata. Quem já integra a listagem precisa ajustar o caminho de leitura: o array de itens está emlist[]. _links(HATEOAS) traz o linkselfdesta consulta e o linklistpara 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çalho | Obrigatório | Descrição |
|---|---|---|
SelectKey | Sim | Sua 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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
initdate | string (ISO 8601 UTC) | Sim | Início do período analisado. Ex.: 2026-01-01T00:00:00Z. |
enddate | string (ISO 8601 UTC) | Sim | Fim do período analisado. Ex.: 2026-01-31T23:59:59Z. |
status | string | Não | Filtra por status. Enum: pending, paid, refunded, canceled, scheduled, chargeback, dispute, fraud-hold. |
released | string | Não | Filtra por situação de liberação. Enum: yes, no. |
id | string | Não | Filtra por um recebível específico. Padrão ^[a-z]+_[A-Za-z0-9]+$ (ex.: rec_abc123). |
sort | string | Não | Ordem do resultado. Enum: ascending, descending (ex.: descending). |
limit | number | Não | Tamanho da página (ex.: 50). |
offset | number | Não | Deslocamento 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
| Campo | Tipo | Descrição |
|---|---|---|
list[] | array | Recebíveis do período (projeção leve). |
list[].id | string | Identificador do recebível (rec_...). Trate como opaco. |
list[].status | string | Status do recebível (pending, paid, refunded, canceled, scheduled, chargeback, dispute, fraud-hold). |
list[].currency | string | Moeda ISO 4217 (atualmente BRL). |
list[].amount | integer | Valor líquido em centavos (após taxas). 4850 = R$ 48,50. |
list[].grossAmount | integer | Valor bruto em centavos (antes de taxas). 5000 = R$ 50,00. |
list[].anticipationFee | integer | Taxa de antecipação aplicada, em centavos. |
list[].liable | boolean | Se o destinatário responde por chargebacks deste recebível. |
list[].chargeProcessingFee | boolean | Se a taxa de processamento incide sobre este recebível. |
list[].expectedOn | string (date-time) | Data prevista de liberação (ISO 8601 UTC). |
list[].updatedAt | string (date-time) | Última atualização. |
list[].createdAt | string (date-time) | Criação do recebível. |
merchant.name | string | Nome do estabelecimento (sua conta). |
merchant.merchantId | string | ID do estabelecimento. |
merchant.isSubAccount | boolean | Se a conta é uma subconta. |
_links.self | object | Link desta consulta (href + method). |
_links.list | object | Link 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.code | HTTP | Quando ocorre |
|---|---|---|
invalidParameters | 400 | Parâ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. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. Veja Autenticação. |
forbidden | 403 | Chave autenticada, mas sem permissão para este recurso. |
notFound | 404 | Recurso não encontrado (ex.: filtro id que não existe). |
unprocessableEntity | 422 | Requisição bem-formada, mas viola uma regra de negócio. |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes no backoff. Veja API Limits. |
serverError | 500 | Erro interno — tente novamente com backoff; se persistir, contate o suporte. |
Trate sempre pelo
error.code(estável), nunca pelamessage. 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
initdateeenddate. Não há padrão — a janela é obrigatória. Trate explicitamente o erroinvalidParametersquando 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/grossAmountsã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 considereanticipationFee. - Combine
statusereleasedpara recortes úteis:status=pendingmostra o que ainda está por liquidar;released=yessepara o que já foi liberado. - Não use Analytics para detalhe transacional. Se precisar do
transactionId, da parcela ou dodescription, 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
- Recebíveis - Visão Geral — o que é um recebível, modelo do objeto e ciclo de status.
- Recebíveis - Listar — listagem paginada com a projeção completa.
- Convenções da API — dinheiro em centavos, datas ISO 8601 UTC, IDs opacos.
- Catálogo de Códigos de Erro — como tratar
error.code.
How is this guide?