Transf. Interna
Requer autenticação
POST/v2/internal_transfers/payment
Move saldo entre contas BSPAY instantaneamente. Sem taxa de rede, sem intermediário. O destinatário é identificado pelo username.
Esta rota exige assinatura HMAC. Inclua os headers X-Signature, X-Timestamp e X-Nonce além do Bearer token. Ver Autenticação → HMAC.
Headers
Body
Parâmetros
usernamestringobrigatórioUsername do destinatário na BSPAY.
amountnumberobrigatórioValor a transferir (até 2 decimais para fiat, 8 para cripto).
currencystringobrigatórioMoeda:
BRL, MXN, USDT, USDC, BTC, ETH, SOL. descriptionstringDescrição da transferência.
external_idstringID único no seu sistema para idempotência (máx 64 chars).
Rate limit
60 reqs/min por credencial — anti-enumeração de usernames.
Erros
| Código | HTTP | Descrição |
|---|---|---|
MISSING_REQUIRED_FIELD | 400 | Campo ausente — details.field (username, amount, etc.) |
MISSING_SIGNATURE / INVALID_SIGNATURE | 401 | HMAC ausente ou inválido |
INVALID_AMOUNT | 422 | Valor inválido |
INVALID_CURRENCY | 422 | Moeda não suportada |
USER_NOT_FOUND | 404 | username destino não existe |
SELF_TRANSFER_BLOCKED | 400 | Não pode transferir para o próprio username |
INSUFFICIENT_BALANCE | 422 | Saldo insuficiente |
LIMIT_EXCEEDED | 409 | Limite diário/mensal atingido |
RATE_LIMIT_EXCEEDED | 429 | Mais de 60 reqs/min |
Após confirmação, ambas as contas recebem o webhook transfer.confirmed (com direction: sent no remetente e direction: received no destinatário).
