Skip to content

Webhooks

Os webhooks permitem que você receba notificações em tempo real sobre eventos que ocorrem na plataforma MisesPay. Quando um evento é disparado, enviamos uma requisição HTTP POST para a URL configurada no seu portal.

Configuração

O cadastro e gerenciamento dos webhooks é feito diretamente no Portal MisesPay. Acesse a seção de configurações para registrar suas URLs de webhook e escolher quais eventos deseja receber.

Segurança

Todas as requisições de webhook incluem uma assinatura HMAC SHA-256 no header X-Webhook-Signature para que você possa validar a autenticidade da requisição.

Formato dos Dados

  • Método: POST
  • Content-Type: application/json
  • Formato de Data: ISO 8601
  • Moeda: BRL (Real Brasileiro)
  • Valores: String com 2 casas decimais (ex: "100.00")
  • Valores em Centavos: Integer (ex: 10000 = R$ 100,00)

Eventos de Vendas

sale.created

Disparado quando uma venda é criada (PIX gerado, cartão processando).

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "status": "pending",
  "payment_method": "pix",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "phone": "+5511999999999",
    "document": "12345678900",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "payment": {
    "method": "pix",
    "provider": "pagarme"
  },
  "order_bumps": [
    {
      "id": "uuid-do-bump",
      "name": "Order Bump Premium",
      "amount": "50.00"
    }
  ],
  "additional_data": {
    "utm_source": "google",
    "utm_medium": "cpc",
    "utm_campaign": "black-friday",
    "utm_term": "produto",
    "utm_content": "anuncio-1",
    "query_params": {},
    "ip_address": "192.168.1.1",
    "user_agent": "Mozilla/5.0...",
    "fbc": "fb.1.123456789.AbCdEfGh",
    "fbp": "_fbp.1.123456789.987654321",
    "ttclid": "tiktok-click-id",
    "kclickid": "kwai-click-id",
    "ga_client_id": "GA1.1.123456789.987654321"
  },
  "expires_at": "2025-01-08T18:30:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.confirmed

Disparado quando o pagamento é confirmado (PIX pago, cartão aprovado).

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "net_amount": "95.00",
  "fee_amount": "5.00",
  "currency": "BRL",
  "status": "paid",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "phone": "+5511999999999",
    "document": "12345678900",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "payment": {
    "method": "pix",
    "provider": "pagarme",
    "transaction_id": "txn_abc123",
    "e2e_id": "E12345678202501081800abcdefgh"
  },
  "order_bumps": [
    {
      "id": "uuid-do-bump",
      "name": "Order Bump Premium",
      "amount": "50.00"
    }
  ],
  "additional_data": {
    "utm_source": "google",
    "utm_medium": "cpc"
  },
  "paid_at": "2025-01-08T18:15:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.expired

Disparado quando a venda expira sem pagamento.

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "order_bumps": [
    {
      "id": "uuid-do-bump",
      "name": "Order Bump Premium",
      "amount": "50.00"
    }
  ],
  "additional_data": {
    "utm_source": "google"
  },
  "expired_at": "2025-01-08T19:00:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.failed

Disparado quando a venda falha (cartão recusado, erro no processamento).

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "status": "failed",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "payment": {
    "method": "credit_card",
    "provider": "pagarme"
  },
  "failure": {
    "reason": "Cartão sem limite disponível",
    "code": "1016"
  },
  "order_bumps": [],
  "additional_data": {},
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.refunded

Disparado quando uma venda é reembolsada.

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "payment": {
    "method": "credit_card",
    "provider": "pagarme",
    "transaction_id": "txn_abc123"
  },
  "order_bumps": [],
  "additional_data": {},
  "refunded_at": "2025-01-10T10:00:00.000Z",
  "paid_at": "2025-01-08T18:15:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.chargeback

Disparado quando há um chargeback (contestação) na venda.

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "João Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "payment": {
    "method": "credit_card",
    "provider": "pagarme",
    "transaction_id": "txn_abc123"
  },
  "order_bumps": [],
  "additional_data": {},
  "chargeback_at": "2025-02-08T14:00:00.000Z",
  "paid_at": "2025-01-08T18:15:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z"
}

Eventos de Carrinho

cart.abandoned

Disparado 5 minutos após criação do QR code sem pagamento.

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "phone": "+5511999999999",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "order_bumps": [],
  "additional_data": {
    "utm_source": "facebook"
  },
  "abandoned_at": "2025-01-08T18:05:00.000Z",
  "created_at": "2025-01-08T18:00:00.000Z",
  "expires_at": "2025-01-08T18:30:00.000Z"
}

cart.recovery_sent

Disparado quando email de recuperação de carrinho é enviado.

Payload:

json
{
  "sale_id": "uuid-da-venda",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "additional_data": {},
  "recovery_sent_at": "2025-01-08T19:00:00.000Z",
  "recovery_token": "abc123def456_1704740400",
  "created_at": "2025-01-08T18:00:00.000Z"
}

cart.recovered

Disparado quando cliente paga após receber email de recuperação.

Payload:

json
{
  "sale_id": "uuid-da-venda-recuperada",
  "reference": "XYZ789ABC",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "João Silva",
    "email": "joao@example.com",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "uuid-do-produto",
    "name": "Nome do Produto"
  },
  "offer": {
    "id": "uuid-da-oferta",
    "name": "Nome do Produto",
    "amount": "100.00",
    "product_id": "uuid-do-produto"
  },
  "additional_data": {},
  "recovery_sent_at": "2025-01-08T19:00:00.000Z",
  "recovered_at": "2025-01-08T20:30:00.000Z",
  "time_to_recover": 90,
  "created_at": "2025-01-08T19:00:00.000Z"
}

Eventos de Saques

withdrawal.requested

Disparado quando um saque é solicitado pelo merchant.

Payload:

json
{
  "withdrawal_id": "uuid-do-saque",
  "amount": "500.00",
  "amount_cents": 50000,
  "status": "pending",
  "payment_provider": null,
  "requested_at": "2025-01-08T18:00:00.000Z"
}

withdrawal.approved

Disparado quando saque é aprovado e enviado para processamento.

Payload:

json
{
  "withdrawal_id": "uuid-do-saque",
  "amount": "500.00",
  "net_amount": "495.00",
  "fee_amount": "5.00",
  "status": "processing",
  "bank_status": "processing",
  "payment_provider": "noxpay",
  "approved_at": "2025-01-08T18:30:00.000Z",
  "requested_at": "2025-01-08T18:00:00.000Z"
}

withdrawal.completed

Disparado quando saque é concluído (dinheiro transferido).

Payload:

json
{
  "withdrawal_id": "uuid-do-saque",
  "amount": "500.00",
  "net_amount": "495.00",
  "fee_amount": "5.00",
  "status": "paid",
  "bank_status": "completed",
  "bank_transaction_id": "txn_withdrawal_123",
  "e2e_id": "E12345678202501081830abcdefgh",
  "payment_provider": "noxpay",
  "completed_at": "2025-01-08T18:35:00.000Z",
  "approved_at": "2025-01-08T18:30:00.000Z",
  "requested_at": "2025-01-08T18:00:00.000Z"
}

withdrawal.failed

Disparado quando saque falha no processamento.

Payload:

json
{
  "withdrawal_id": "uuid-do-saque",
  "amount": "500.00",
  "status": "failed",
  "bank_status": "failed",
  "payment_provider": "noxpay",
  "failure_reason": "Chave PIX inválida",
  "failed_at": "2025-01-08T18:32:00.000Z",
  "requested_at": "2025-01-08T18:00:00.000Z"
}

Boas Práticas

Resposta do Webhook

Seu endpoint deve responder com status HTTP 200 ou 204 para confirmar o recebimento. Qualquer outro status será considerado uma falha e a plataforma tentará reenviar o webhook.

Mises API - Pagamentos via PIX simplificados