Skip to content

Configurando Webhooks

Passo a passo para configurar webhooks na sua conta.

Pelo painel

  1. Acesse app.pix2bit.net e faca login
  2. No menu lateral, clique em API e Webhooks
  3. Selecione a aba Webhooks
  4. Clique em Novo Webhook
  5. Preencha os campos:
    • Nome: um nome para identificar o webhook
    • URL: a URL que recebera as notificacoes (deve aceitar POST)
    • Evento: selecione o evento que deseja monitorar
    • Authorization: (opcional) um token para validar as requisicoes
  6. Clique em Criar

WARNING

A URL do webhook sera testada com uma requisicao POST durante a criacao. Sua URL precisa estar acessivel e retornar um status HTTP 2xx para que o webhook seja criado com sucesso.

Validacao da URL

Durante a criacao, o Pix2bit envia uma requisicao de teste para sua URL:

json
{
  "event": "WEBHOOK_TEST",
  "data": {
    "test": true,
    "message": "Webhook test delivery",
    "timestamp": "2026-02-16T12:00:00.000Z"
  }
}

Sua URL deve:

  • Aceitar requisicoes POST
  • Retornar status HTTP 200-299
  • Responder em ate 10 segundos

Se a validacao falhar, o webhook nao sera criado. Erros comuns:

ErroCausa
ENOTFOUNDDominio nao encontrado
ECONNREFUSEDServidor recusou a conexao
Status 4xx/5xxServidor retornou erro
TimeoutServidor nao respondeu em 10s

Exemplo de servidor para receber webhooks

javascript
const express = require('express');
const app = express();

app.use(express.json());

app.post('/webhook/pix2bit', (req, res) => {
  const { event, data } = req.body;

  // Validar o header de autorizacao
  const authHeader = req.headers['authorization'];
  if (authHeader !== 'Bearer meu-token-secreto') {
    return res.status(401).json({ error: 'Unauthorized' });
  }

  switch (event) {
    case 'DEPOSIT_ASSET_SUCCESS':
      console.log('Deposito confirmado:', data.transactionId);
      console.log('Valor creditado:', data.creditedValue / 100, 'BRL');
      // Processar deposito...
      break;

    case 'PAYOUT_SUCCESSFUL':
      console.log('Pagamento realizado:', data.invoice);
      // Processar pagamento...
      break;

    case 'PAYOUT_FAILED':
      console.log('Pagamento falhou:', data.error);
      // Tratar falha...
      break;

    case 'WEBHOOK_TEST':
      console.log('Teste de webhook recebido');
      break;
  }

  res.status(200).json({ received: true });
});

app.listen(3000);
python
from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/webhook/pix2bit', methods=['POST'])
def webhook():
    # Validar autorizacao
    auth = request.headers.get('Authorization')
    if auth != 'Bearer meu-token-secreto':
        return jsonify({'error': 'Unauthorized'}), 401

    payload = request.json
    event = payload.get('event')
    data = payload.get('data')

    if event == 'DEPOSIT_ASSET_SUCCESS':
        print(f"Deposito confirmado: {data['transactionId']}")
        print(f"Valor creditado: R$ {data['creditedValue'] / 100:.2f}")

    elif event == 'PAYOUT_SUCCESSFUL':
        print(f"Pagamento realizado: {data['invoice']}")

    elif event == 'PAYOUT_FAILED':
        print(f"Pagamento falhou: {data.get('error')}")

    return jsonify({'received': True}), 200

if __name__ == '__main__':
    app.run(port=3000)