Referência da API
API REST de recebimento por PIX. Você cria o PIX direto do seu site, sem produto nem checkout, consulta o status e recebe webhooks assinados quando ele é pago. O saque é feito pelo painel.
Visão geral
Todas as rotas ficam sob a URL base ao lado e trocam JSON em UTF-8. Valores sempre em centavos (BRL). Listagens são paginadas por cursor.
| URL base | https://bravoselect.com/api/v1 |
| Autenticação | Authorization: Bearer sk_live_... |
| Formato | application/json |
| Idempotência | Header Idempotency-Key no POST /transactions (24h) |
| Webhooks | HMAC-SHA256 no header Webhook-Signature |
Integração discreta
Autenticação
Gere a chave em API Keys. Ela aparece inteira uma única vez. Envie no header Authorization: Bearer(o header X-Api-Key também é aceito). Se vazar, revogue no painel e gere outra.
Erros
Use error.code no seu código (é estável); error.message é texto para pessoas.
| Código | HTTP | Quando |
|---|---|---|
| unauthorized | 401 | Chave ausente, inválida ou revogada. |
| transaction_not_found | 404 | O PIX não existe ou é de outra conta. |
Se a geração do PIX falhar por instabilidade momentânea, a resposta vem com status 202 e "status": "retrying": repita a chamada com a mesma Idempotency-Key.
Criar PIX
/transactionsCria a cobrança PIX e devolve o copia e cola. Não precisa cadastrar produto. Mostre pix.copy_paste ao cliente (e gere o QR a partir dele).
Corpo
amount_centsintegerobrigatório- Valor em centavos. Mínimo 500 (R$ 5,00).
customer.namestringopcional- Nome do pagador.
customer.emailstringopcional- E-mail do pagador.
customer.cpfstringopcional- CPF ou CNPJ do pagador (só números).
customer.phonestringopcional- Telefone com DDD.
descriptionstringopcional- Descrição da cobrança (até 300 caracteres).
external_referencestringopcional- Seu id do pedido. Volta na consulta e nos webhooks.
metadataobjectopcional- Chave→valor livre (até 20 chaves). Volta intacto nos webhooks.
expires_inintegeropcional- Validade do PIX em segundos (60 a 86400).
utmobjectopcional- source, medium, campaign, content, term, fbclid, ttclid, gclid.
splitobject | arrayopcional- Repasse automático de parte da venda para outra conta (até 10 recebedores): recipient (e-mail ou id da conta), percent e/ou amount_cents.
Consultar PIX
/transactions/{id}Status possíveis: PENDING, PAID, EXPIRED, REFUNDED, FAILED. Prefira o webhook; consulte só como conferência.
Listar PIX
/transactionslimitintegeropcional- Itens por página (até 100). Padrão 20.
cursorstringopcional- next_cursor da página anterior.
statusstringopcional- Filtra por status.
external_referencestringopcional- Filtra pelo seu id do pedido.
created_at_from / created_at_toISO 8601opcional- Intervalo de criação.
Saldo
/balanceavailable_cents é o que já pode ser sacado (o saque é feito no painel); pending_pix_cents são vendas pagas ainda em liberação.
Eventos
Cadastre a URL em Integrações → Webhooks. Cada evento chega como POST com o envelope ao lado. O id é o mesmo nas retentativas: use para não processar duas vezes.
| transaction.created | PIX gerado. |
| transaction.paid | PIX pago. É o evento para liberar o pedido. |
| transaction.expired | PIX venceu sem pagamento. |
| transaction.refunded | Pagamento devolvido (MED/estorno). |
| transaction.failed | Falha na geração. |
Objeto do evento
O data traz o PIX com external_reference, metadata, cliente e UTMs, para você conciliar com o seu pedido.
Assinatura
O header Webhook-Signature (também enviado como X-Webhook-Signature) traz t (timestamp) e v1 = HMAC-SHA256 de `${t}.${corpo}` com o segredo whsec_... do webhook. Recuse se a assinatura não bater ou se o t tiver mais de 5 minutos.
Retentativas
Responda com qualquer status 2xx em até 10 segundos. Fora disso o evento é reenviado até 8 vezes: 30s, 2min, 10min, 30min, 1h, 3h, 6h e 24h.
Quickstart
O fluxo inteiro: o seu servidor cria o PIX, a sua página mostra o copia e cola e o webhook transaction.paid confirma o pagamento.