Bem-vindo à API Brasil Cash. Com ela você gera cobranças Pix (cash-in), envia Pix (cash-out), consulta saldo e extrato da conta e recebe notificações em tempo real por webhooks.
Todas as rotas usam JSON (UTF-8) e valores em reais com duas casas decimais (ex.: 100.50). Datas e horários são retornados em ISO 8601 (UTC).
URL base
text
1https://api.brasilcash.app.br/api/v1
Fluxo básico
1. Gere o Client ID e o Client Secret no painel, em Configurações › Chaves de API.
2. Troque as credenciais por um token em POST /pix/auth/token.
3. Envie o token no header Authorization: Bearer {token} em todas as outras rotas.
4. Cadastre um webhook para receber os eventos de pagamento e saque.
Toda chamada é autenticada com um Bearer token obtido a partir do par client_id / client_secret da sua chave de API (Painel › Configurações › Integrações). O token vale por 1 hora; gere outro antes de expirar.
As chaves de API passam pela lista de IPs autorizados da conta: chamadas de IPs fora da lista recebem 403.
Base URL
Produção:
https://api.brasilcash.app.br/api/v1
Retrieve access token
Troca o Client ID e o Client Secret por um token de acesso (JWT) válido por 30 minutos.
Use o token no header Authorization: Bearer {token}. Reaproveite o mesmo token até expirar: gerar um token por requisição é desnecessário e está sujeito a limite de taxa.
As credenciais são criadas no painel em Configurações › Chaves de API. Se a chave tiver IPs autorizados, somente requisições desses IPs são aceitas.
Expiração
expires_in é informado em segundos (1800 = 30 minutos). Gere um novo token apenas quando o anterior expirar.
Header Parameters
Content-TypestringREQUIRED
application/json
Body Parameters
clientIdstringREQUIRED
Client ID da chave de API. · Ex.: client_abc123def456
clientSecretstringREQUIRED
Client Secret da chave de API (mostrado uma única vez na criação). · Ex.: secret_xyz789abc456
Response
200Object
Response Attributes
tokenstring
token_typestring
expires_ininteger
merchant_idstring
merchant_namestring
environmentstring
400 Bad Request
401 Unauthorized
429 Too Many Requests
Esta seção foi útil?
Conta
Saldo disponível e bloqueado, extrato de transações (entradas, saídas, taxas e devoluções) e comprovante em PDF de cada Pix enviado.
Current balance
Retorna o saldo disponível, pendente e total da conta.
Campos
available: pode ser sacado agora · pending: aguardando liquidação · total: soma dos dois.
Receba por Pix gerando QR Codes dinâmicos (com valor e validade) ou estáticos. A confirmação do pagamento chega pelo webhook transaction.completed; o valor líquido (descontada a taxa) entra no saldo disponível. Devoluções totais ou parciais saem pelo refund.
Creating QR code
Cria uma cobrança Pix dinâmica e devolve o QR Code (imagem) e o código copia e cola.
A cobrança expira em expiresIn segundos (padrão 3600). Ao ser paga, a transação muda para completed e o evento transaction.completed é enviado aos webhooks cadastrados (e à webhook_url desta cobrança, se informada).
Renderizar o QR
qr_code já vem como imagem PNG em base64; qr_code_text é o payload EMV para o botão "copia e cola".
Envie Pix para uma chave ou pague um QR Code (copia e cola) debitando o saldo disponível. Há dois jeitos de enviar:
• Uma etapa — Sending pix by key / by QR code: uma chamada cria e envia o Pix.
• Duas etapas (contas habilitadas) — Initiating pix consulta o recebedor (chave no DICT ou QR Code na instituição liquidante) e devolve nome, documento mascarado e banco; Confirming initiated pix envia. Nada é debitado até a confirmação e a intenção vale por 10 minutos.
O resultado final de qualquer envio chega em withdrawal.completed ou withdrawal.failed.
Preview receiver (DICT)
Consulta a chave Pix no DICT e devolve nome, documento mascarado e banco do recebedor, sem movimentar dinheiro.
Disponível quando a adquirente de saque da conta consulta chaves sem iniciar pagamento. Quando não há consulta (enabled = false), use o fluxo em duas etapas (Initiating pix), que resolve o recebedor na própria iniciação.
cpf, cnpj, email, phone ou random (detectado se omitido)
Response
200Object
Response Attributes
enabledboolean
receiverobject
422 Unprocessable
429 Too Many Requests
Esta seção foi útil?
Sending pix by key
Envia um Pix para uma chave, debitando o saldo disponível.
O valor é validado contra o limite diário da conta e o saldo disponível. Com token de chave de API o 2FA não é exigido (a chave já passa pela lista de IPs autorizados).
A resposta vem com status processing; o resultado final chega em withdrawal.completed ou withdrawal.failed (ou consulte o status).
Idempotência
Envie sempre um externalId único por saque e reaproveite-o ao repetir a chamada após timeout: um saque com o mesmo externalId não é criado duas vezes.
Prefere conferir o recebedor antes?
Contas com o saque em duas etapas habilitado usam Initiating pix (consulta e devolve nome/banco) e Confirming initiated pix.
Pix copia e cola
Para pagar um QR Code envie o código EMV completo em pixKey (veja Sending pix by QR code).
Chave Pix do recebedor (CPF/CNPJ só dígitos, telefone +55DDDNÚMERO, e-mail ou chave aleatória)
pix_key_typestring
cpf, cnpj, email, phone ou random
externalIdstring
Seu identificador único do saque (idempotência)
descriptionstring
Descrição que acompanha o Pix
Response
201Object
Response Attributes
idstring
typestring
statusstring
amountinteger
fee_amountinteger
net_amountinteger
pix_keystring
pix_key_typestring
external_idstring
descriptionstring
end_to_end_idnull
created_atstring
updated_atstring
400 Bad Request
400 Insufficient balance
403 Forbidden
Esta seção foi útil?
Initiating pix (two steps)
Passo 1 do envio em duas etapas: consulta o recebedor (chave Pix ou QR Code) e devolve uma intenção para conferência, sem enviar dinheiro.
Recurso habilitado por conta (fale com o suporte). A consulta é feita no DICT ou iniciando o Pix na instituição liquidante: o recebedor volta com nome, documento mascarado e banco, e nada é debitado até a confirmação. Contas sem o recurso recebem 403 com code TWO_STEP_DISABLED e usam Sending pix by key em uma etapa.
pixKey aceita uma chave Pix ou um Pix copia e cola (código EMV). Com QR Code, amount é opcional: QR com valor fixo devolve o valor na intenção; QR sem valor devolve amount 0 e o valor é informado na confirmação.
A intenção vale por 10 minutos. Confirme com PUT /pix/withdrawals/intents/{intentId}/confirm ou cancele com DELETE /pix/withdrawals/intents/{intentId}. Cada iniciação consome cota de consulta no Banco Central (liberada na confirmação): inicie só quando houver intenção de pagar.
Quando usar
Iniciar + confirmar: conferir o recebedor (nome, documento, banco) antes de enviar — por chave ou QR Code. Sending pix by key / by QR code: envio direto em uma chamada, para todas as contas.
Valor em reais. Opcional apenas quando pixKey é um QR Code (copia e cola).
pixKeystringREQUIRED
Chave Pix do recebedor ou código Pix copia e cola (EMV, começa com 000201)
pix_key_typestring
cpf, cnpj, email, phone ou random (detectado se omitido; ignorado para QR Code)
externalIdstring
Seu identificador único (reaproveitado na transação ao confirmar)
descriptionstring
Descrição que acompanha o Pix
Response
201Object
Response Attributes
idstring
statusstring
amountinteger
pix_keystring
pix_key_typestring
descriptionstring
external_idstring
receiverobject
acquirerstring
expires_atstring
transaction_idnull
created_atstring
201 Created (QR Code)
403 Two-step disabled
400 Preview unavailable
400 QR Code fixed amount
422 Key not found
409 Conflict
429 Too Many Requests
Esta seção foi útil?
Confirming initiated pix
Passo 2: confirma a intenção e envia o Pix. Debita o saldo e aplica as mesmas regras do envio em uma etapa.
Com token de chave de API o 2FA não é exigido. O resultado final chega em withdrawal.completed / withdrawal.failed (ou consulte o status pelo transaction_id devolvido). Uma intenção confirmada não pode ser confirmada de novo (409); expirada responde 410.
amount só é aceito quando a intenção veio de um QR Code sem valor (amount 0 na intenção) — e aí é obrigatório. Para intenções com valor definido, um amount diferente responde 400 AMOUNT_MISMATCH: inicie um novo saque.
Lê um Pix copia e cola (EMV) e devolve tipo, valor, chave e recebedor, para exibir antes de pagar. Não movimenta dinheiro.
amount vem null quando o QR Code não tem valor definido (o pagador informa). type é STATIC ou DYNAMIC.
A leitura usa a instituição liquidante da conta e consome cota de consulta: para o fluxo completo prefira Initiating pix com o código EMV, que já devolve o recebedor e segura o pagamento para confirmação.
Código Pix copia e cola (começa com 000201). Aliases: pix_copy_and_paste, pixCopyPaste.
Response
200Object
Response Attributes
typestring
amountinteger
keystring
key_typestring
receiver_namestring
receiver_documentstring
receiver_document_typestring
ispbstring
txidstring
descriptionstring
200 OK (sem valor)
400 Bad Request
422 Unprocessable
Esta seção foi útil?
Sending pix by QR code
Paga um Pix copia e cola em uma chamada: o código EMV vai no campo pixKey.
Mesma rota e regras de Sending pix by key (limite diário, saldo, 2FA para usuários do painel). Envie o código EMV completo em pixKey com pix_key_type = random e amount igual ao valor do QR Code (ou o valor desejado quando o QR não tem valor; um valor diferente do fixo é recusado).
Para conferir o recebedor antes de pagar use Decoding QR code ou, nas contas com saque em duas etapas, Initiating pix com o código EMV e Confirming initiated pix.
Chaves Pix (DICT) da conta na instituição liquidante. Recurso liberado por conta (fale com o suporte): contas sem ele recebem enabled = false na listagem e 403 ao cadastrar. Cada conta pode ter até 5 chaves; a exclusão é imediata no DICT.
Retrieving pix keys
Lista as chaves Pix da conta na instituição liquidante.
A chave (URL-encoded; e-mail e telefone com + codificados)
Response
200Object
Response Attributes
successboolean
404 Not found
Esta seção foi útil?
Webhooks
Cadastre uma URL HTTPS para receber os eventos da conta (recebimentos, envios, devoluções). Cada entrega é assinada com HMAC-SHA256 no header X-Webhook-Signature; responda 2xx em até 10 segundos — entregas sem 2xx são reenviadas com intervalo crescente.
Eventos e assinatura
Webhooks são requisições POST em JSON enviadas à URL cadastrada sempre que um evento acontece. Responda 2xx em até 10 segundos; sem resposta, reenviamos com intervalo crescente (até 5 tentativas).
Cada entrega traz o header X-Webhook-Signature: HMAC-SHA256 do corpo (JSON exatamente como recebido) usando o secret devolvido na criação do webhook, em hexadecimal. Compare com tempo constante.