Skip to main content

Visão Geral

O endpoint GET /accounts/balances retorna o saldo da conta autenticada no formato compatível com a especificação do Banco Central.

Endpoint

GET /accounts/balances

Autenticação

Authorization
string
required
Token Bearer obtido via /oauth/token.

Request

curl -X GET https://api.avista.global/accounts/balances \
  -H "Authorization: Bearer <token>"

Response

{
  "data": [
    {
      "eventDate": "2025-01-15T10:30:00.000Z",
      "balanceAmount": {
        "available": 48734.90,
        "blocked": 1500.00,
        "overdraft": 0
      }
    }
  ]
}

Campos da Resposta

data
array
Lista de saldos. Atualmente retorna apenas um item.

Tipos de Saldo

TipoDescrição
availableSaldo que pode ser usado imediatamente para transferências
blockedValores reservados para operações em processamento
overdraftLimite de crédito adicional (não implementado)

Cálculo do Saldo Total

saldoTotal = available + blocked
O saldo available já desconta os valores blocked.

Comparação com API Padrão

API Padrão (GET /balance)API BACEN (GET /accounts/balances)
grossBalanceavailable + blocked
blockedBalanceblocked
netBalanceavailable
consultedAteventDate

Exemplo de Equivalência

// API Padrão
{
  "grossBalance": 50234.90,
  "blockedBalance": 1500.00,
  "netBalance": 48734.90,
  "consultedAt": "2025-01-15T10:30:00.000Z"
}

// API BACEN (equivalente)
{
  "data": [{
    "eventDate": "2025-01-15T10:30:00.000Z",
    "balanceAmount": {
      "available": 48734.90,   // = netBalance
      "blocked": 1500.00,       // = blockedBalance
      "overdraft": 0
    }
  }]
}

Fluxo de Saldo em Operações

PIX Out (Transferência)

PIX In (Recebimento)

Boas Práticas

Sempre verifique o saldo disponível antes de iniciar uma transferência para evitar erros de saldo insuficiente.
async function transferir(valor: number) {
  const balance = await getBalance();
  const disponivel = balance.data[0].balanceAmount.available;

  if (valor > disponivel) {
    throw new Error(`Saldo insuficiente. Disponível: ${disponivel}`);
  }

  return await createTransfer(valor);
}
O saldo blocked representa operações em andamento. Em caso de falha, esse valor retorna para available.
Se precisar cachear o saldo, use TTL curto (ex: 5-10 segundos) para manter valores atualizados.

Erros Comuns

CódigoErroSolução
401Token não fornecidoInclua header Authorization: Bearer <token>
401Token inválidoVerifique se o token está correto
401Token expiradoObtenha novo token via /oauth/token

Próximos Passos