Visão geral
O recurso de Finanças reúne os endpoints de leitura que mostram a posição financeira da sua conta na Selectwin: quanto você tem disponível e o que está retido (saldo), o seu indicador de risco perante
O recurso de Finanças reúne os endpoints de leitura que mostram a posição financeira da sua conta na Selectwin: quanto você tem disponível e o que está retido (saldo), o seu indicador de risco perante as bandeiras e adquirentes (saúde de risco) e a lista detalhada do que entra na conta a cada venda (recebíveis). Use estes endpoints para reconciliar a contabilidade, planejar fluxo de caixa e decidir quando solicitar um saque.
O que é o módulo de Finanças
Toda venda aprovada gera um ou mais recebíveis (o valor líquido que você tem direito a receber, já descontadas as taxas). Conforme cada recebível é liquidado, ele alimenta o seu saldo disponível, de onde você pode sacar. Em paralelo, a plataforma acompanha a saúde de risco do seu negócio (proporção de chargebacks, disputas e reembolsos) — um indicador que influencia limites e retenções.
O módulo é somente leitura: aqui você consulta a situação financeira. As ações de saída de dinheiro vivem no recurso de Saques (/v1/withdrawals), descrito em outra seção.
Os três endpoints cobertos por esta visão geral:
| O que responde | Endpoint | Página |
|---|---|---|
| Quanto tenho disponível, pendente e bloqueado? | GET /v1/finance/balance | Consultar saldo |
| Qual é a minha saúde de risco? | GET /v1/finance/risk-health | (descrito abaixo) |
| Quais valores vou receber e quando? | GET /v1/receivables | Listar recebíveis |
Existe ainda um endpoint complementar de agregados de recebíveis (GET /v1/receivables/analytics), útil para dashboards — explicado em Listar recebíveis.
Convenções
Como em toda a API: dinheiro é inteiro em centavos (9900 = R$ 99,00), datas são ISO 8601 em UTC (2026-04-12T17:56:33.000Z), campos em camelCase e IDs no formato prefixo_valor opaco. A autenticação é sempre pelo cabeçalho SelectKey (nunca Authorization: Bearer/Basic). Veja Convenções e Autenticação.
Como o dinheiro flui
O caminho de uma venda até o seu saldo disponível e, por fim, até a sua conta bancária:
- Recebível: a "promessa" de um valor, com uma data prevista (
expectedOn). Enquanto não liquida, conta como pendente. - Saldo: o consolidado de tudo. O campo
availableé o que está livre para saque;pendingainda não liquidou;blocked/warrantyestão retidos por garantia ou risco. - Saúde de risco: avaliada continuamente em uma janela móvel; não move dinheiro, mas pode justificar retenções (
blocked/warranty).
O objeto Saldo
GET /v1/finance/balance — exige o parâmetro de query companyId (o ID da empresa, ex.: bus_1234567890). Retorna um único objeto com os saldos agregados, o plano de taxas vigente, dados do merchant e links HATEOAS.
{
"id": "bal_01hqzvabc",
"available": 150000,
"pending": 25000,
"blocked": 0,
"debit": 0,
"refunded": 12000,
"warranty": 5000,
"feePlan": {
"id": "fee_01hqzvabc",
"cashoutFee": 367,
"transactionFixedFee": 49,
"antecipationFee": 0,
"antecipationDays": 30,
"transactionAmountLimit": 5000000,
"minCashoutAmount": 1000,
"availabilityDays": 30,
"warrantyPercentage": 0,
"warrantyEnabled": false,
"pixFee": 99,
"nupayFee": 199,
"billetFee": 349,
"creditFee": 399,
"chargeMonthlyFee": 0,
"premium": true,
"updatedAt": "2026-04-12T17:56:33.000Z",
"createdAt": "2026-01-26T20:18:05.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/finance/balance",
"method": "GET"
}
}
}Campos do saldo
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do registro de saldo (bal_*). |
available | integer | Valor livre para saque, em centavos. |
pending | integer | Valor de recebíveis que ainda não liquidaram, em centavos. |
blocked | integer | Valor retido/bloqueado (ex.: por análise de risco), em centavos. |
debit | integer | Valor em débito a ser compensado, em centavos. |
refunded | integer | Total já reembolsado, em centavos. |
warranty | integer | Valor retido como garantia (reserva), em centavos. |
feePlan | object | Plano de taxas vigente da conta (ver abaixo). |
updatedAt / createdAt | string (date-time) | Timestamps ISO 8601 UTC do registro de saldo. |
merchant | object | Dados do merchant (name, merchantId, isSubAccount). |
_links | object | Links HATEOAS (self). |
Campos de feePlan
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do plano de taxas. |
cashoutFee | integer | Taxa fixa por saque, em centavos. |
transactionFixedFee | integer | Taxa fixa por transação, em centavos. |
antecipationFee | integer | Taxa de antecipação aplicada. |
antecipationDays | integer | Dias considerados na antecipação. |
transactionAmountLimit | integer | Limite de valor por transação, em centavos. |
minCashoutAmount | integer | Valor mínimo de saque, em centavos. |
availabilityDays | integer | Dias até os fundos ficarem disponíveis. |
warrantyPercentage | integer | Percentual retido como garantia. |
warrantyEnabled | boolean | Se a retenção de garantia está ativa. |
pixFee / nupayFee / billetFee / creditFee | integer | Taxas por método de pagamento, em centavos. |
chargeMonthlyFee | integer | Taxa mensal cobrada, em centavos. |
premium | boolean | Se o plano é premium. |
updatedAt / createdAt | string (date-time) | Timestamps do plano. |
Atenção
Os valores de feePlan (incluindo transactionAmountLimit e minCashoutAmount) são inteiros em centavos, não strings com casas decimais. Para exibir, divida por 100. Detalhes em Consultar saldo.
O objeto Saúde de risco
GET /v1/finance/risk-health — não recebe parâmetros e retorna um objeto direto (sem merchant nem _links). Mostra, para uma janela móvel (ex.: rolling30d), as proporções de chargeback, disputa e reembolso, além dos limiares (thresholds) que definem o tier de risco.
{
"object": "merchant_risk_health",
"window": "rolling30d",
"periodStart": "2026-03-13T00:00:00.000Z",
"periodEnd": "2026-04-12T00:00:00.000Z",
"tier": "ok",
"chargebackRatio": 0.008,
"chargebackCount": 2,
"disputeRatio": 0.012,
"refundRatio": 0.025,
"thresholds": {
"chargebackWarnRatio": 0.009,
"chargebackExcessiveRatio": 0.018,
"mastercardEcmRatio": 0.015,
"disputeWarnRatio": 0.009,
"refundWatchRatio": 0.15
},
"lastEvaluatedAt": "2026-04-12T17:56:33.000Z"
}Campos da saúde de risco
| Campo | Tipo | Descrição |
|---|---|---|
object | string | Tipo do objeto (merchant_risk_health). |
window | string | Janela de avaliação (ex.: rolling30d). |
periodStart / periodEnd | string (date-time) | Início e fim do período avaliado. |
tier | string | Classificação de risco atual (ex.: ok). |
chargebackRatio | number | Proporção de chargebacks na janela (decimal; 0.008 = 0,8%). |
chargebackCount | integer | Quantidade de chargebacks na janela. |
disputeRatio | number | Proporção de disputas na janela. |
refundRatio | number | Proporção de reembolsos na janela. |
thresholds | object | Limiares que disparam alertas/escalonamento (abaixo). |
lastEvaluatedAt | string (date-time) | Quando o cálculo foi feito pela última vez. |
Campos de thresholds
| Campo | Tipo | Descrição |
|---|---|---|
chargebackWarnRatio | number | Limiar de alerta de chargeback. |
chargebackExcessiveRatio | number | Limiar de chargeback excessivo. |
mastercardEcmRatio | number | Limiar do programa ECM da Mastercard. |
disputeWarnRatio | number | Limiar de alerta de disputas. |
refundWatchRatio | number | Limiar de monitoramento de reembolsos. |
As proporções e limiares são decimais (
0.012= 1,2%). ComparechargebackRatiocomthresholds.chargebackWarnRatiopara saber o quão perto você está de um alerta.
O objeto Recebível
GET /v1/receivables — lista paginada dos valores a receber, com filtros por período, status e ID. Cada item representa uma parcela de uma venda. Em listas, os itens são projeções leves (alguns campos podem vir omitidos); veja a página dedicada para o conjunto completo de parâmetros.
{
"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"
}Campos do recebível
| Campo | Tipo | Descrição |
|---|---|---|
id | string | Identificador do recebível (rec_*). |
transactionId | string | Transação que originou o recebível. |
recipientId | string ou null | Destinatário do crédito, quando aplicável. |
splitId | string ou null | Split associado, quando aplicável. |
currency | string | Moeda ISO 4217 (BRL). |
amount | integer | Valor líquido, em centavos (já com taxas descontadas). |
grossAmount | integer | Valor bruto, em centavos. |
status | string | Situação atual (ver ciclo de vida abaixo). |
installmentNumber | integer | Número da parcela, em vendas parceladas. |
anticipationFee | integer | Taxa de antecipação aplicada. |
liable | boolean | Se o destinatário responde por eventuais chargebacks. |
chargeProcessingFee | boolean | Se taxas de processamento incidem sobre o recebível. |
description | string | Texto descritivo do status. |
paidAt | string ou null | Quando foi liquidado (ou null). |
refundedAt | string ou null | Quando foi reembolsado (ou null). |
canceledAt | string ou null | Quando foi cancelado (ou null). |
expectedOn | string (date-time) ou null | Data prevista de liquidação. |
updatedAt / createdAt | string (date-time) | Timestamps do recebível. |
Ciclo de vida do recebível
O status de um recebível segue valores como scheduled, pending, paid, refunded, canceled, chargeback, dispute e fraud-hold:
Os campos
liableechargeProcessingFeedeterminam quem arca com chargebacks e taxas — relevantes em cenários de split entre vários recipientes.
Operações
| Operação | Endpoint | Página |
|---|---|---|
| Consultar saldo da conta | GET /v1/finance/balance | Consultar saldo |
| Consultar saúde de risco | GET /v1/finance/risk-health | (acima) |
| Listar recebíveis | GET /v1/receivables | Listar recebíveis |
| Agregados de recebíveis | GET /v1/receivables/analytics | Listar recebíveis |
Recursos relacionados (fora desta seção): Saques — GET /v1/withdrawals, GET /v1/withdrawals/{id} e POST /v1/withdrawals — para movimentar o saldo disponível para uma conta bancária.
Conceitos e relações
- Recebível → Saldo. Cada recebível liquidado soma ao
available. Antes disso, conta empending. - Saldo → Saque. Você só pode sacar o que estiver em
available, respeitandofeePlan.minCashoutAmountefeePlan.cashoutFee. Saques insuficientes retornambalanceIsInsufficient. - Risco → Retenções. Uma saúde de risco ruim pode aumentar
blocked/warranty, reduzindo o quanto fica disponível. - Transação → Recebível. O
transactionIdliga o recebível à venda de origem. Mudanças de estado (reembolso, chargeback) chegam por webhooks, não por polling — veja Proibição de polling.
Erros
Todos os endpoints retornam o envelope padrão de erro; trate sempre pelo error.code, nunca pela message. Códigos específicos de Finanças e os transversais mais comuns:
error.code | HTTP | Quando ocorre |
|---|---|---|
balanceNotFound | 404 | O saldo da conta não foi encontrado. |
balanceIsInsufficient | 422 | Saldo insuficiente para a operação (ex.: ao tentar sacar). |
invalidParameters | 400 | Parâmetro inválido (ex.: companyId fora do padrão, limit fora de 1–50). Veja error.params. |
unauthorized | 401 | SelectKey ausente, inválida ou revogada. |
forbidden | 403 | Autenticado, mas sem permissão para a empresa/recurso. |
unprocessableEntity | 422 | Regra de negócio impede a operação. |
tooManyRequests | 429 | Limite de requisições excedido — respeite error.retryAfterMinutes. |
serverError | 500 | Erro interno — repita com backoff. |
Catálogo completo em Códigos de Erro; estrutura do envelope em Tratamento de Erros.
Boas práticas
- Sempre informe
companyIdao consultar o saldo — é obrigatório e segue o padrãoprefixo_valor(ex.:bus_1234567890). - Confira o saldo antes de sacar. Use
available(nãopending) e respeitefeePlan.minCashoutAmountefeePlan.cashoutFeepara evitarbalanceIsInsufficient. - Reconcilie pelo recebível, não pelo saldo. Para auditoria, percorra
GET /v1/receivablescom filtros de período (daterangegte/daterangelte) e comparegrossAmount×amountpara enxergar as taxas. - Monitore o risco de forma proativa. Compare cada
*Ratiocom seuthresholdcorrespondente e crie alertas internos antes de atingir otierde risco elevado. - Trate dinheiro em centavos inteiros em toda a cadeia; divida por 100 só na exibição.
- Não faça polling. Reaja a mudanças de estado por webhooks (ex.: eventos de transação e de saque), e use estes endpoints sob demanda para snapshots.
- Pagine com cautela. Em recebíveis,
limitvai de 1 a 50; useoffsete os campospage/hasMoreda resposta. Veja Paginação.
Veja também
- Consultar saldo — detalhe completo de
GET /v1/finance/balance. - Listar recebíveis — filtros, paginação e o endpoint de analytics.
- Convenções · Autenticação · Códigos de Erro · Paginação · Proibição de polling
How is this guide?