Skip to content

Webhooks

Webhooks allow you to receive real-time notifications about events that occur on the MisesPay platform. When an event is triggered, we send an HTTP POST request to the URL configured in your dashboard.

Configuration

Webhook creation and management is done directly in the MisesPay Dashboard. Go to the settings section to register your webhook URLs and choose which events you want to receive.

Security

All webhook requests include an HMAC SHA-256 signature in the X-Webhook-Signature header so you can validate the request authenticity.

Data Format

  • Method: POST
  • Content-Type: application/json
  • Date Format: ISO 8601
  • Currency: BRL (Brazilian Real)
  • Amounts: String with 2 decimal places (e.g. "100.00")
  • Amounts in cents: Integer (e.g. 10000 = R$ 100.00)

Sale Events

sale.created

Triggered when a sale is created (PIX generated, card processing).

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "status": "pending",
  "payment_method": "pix",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "phone": "+5511999999999",
    "document": "12345678900",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "payment": {
    "method": "pix",
    "provider": "pagarme"
  },
  "order_bumps": [
    {
      "id": "bump-uuid",
      "name": "Order Bump Premium",
      "amount": "50.00"
    }
  ],
  "additional_data": {
    "utm_source": "google",
    "utm_medium": "cpc",
    "utm_campaign": "black-friday",
    "utm_term": "product",
    "utm_content": "ad-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

Triggered when the payment is confirmed (PIX paid, card approved).

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "net_amount": "95.00",
  "fee_amount": "5.00",
  "currency": "BRL",
  "status": "paid",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "phone": "+5511999999999",
    "document": "12345678900",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "payment": {
    "method": "pix",
    "provider": "pagarme",
    "transaction_id": "txn_abc123",
    "e2e_id": "E12345678202501081800abcdefgh"
  },
  "order_bumps": [
    {
      "id": "bump-uuid",
      "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

Triggered when a sale expires without payment.

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "order_bumps": [
    {
      "id": "bump-uuid",
      "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

Triggered when a sale fails (card declined, processing error).

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "status": "failed",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "payment": {
    "method": "credit_card",
    "provider": "pagarme"
  },
  "failure": {
    "reason": "Insufficient card limit",
    "code": "1016"
  },
  "order_bumps": [],
  "additional_data": {},
  "created_at": "2025-01-08T18:00:00.000Z"
}

sale.refunded

Triggered when a sale is refunded.

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "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

Triggered when a sale gets a chargeback (dispute).

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "payer": {
    "name": "John Silva",
    "document": "12345678900"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "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"
}

Cart Events

cart.abandoned

Triggered 5 minutes after QR code creation without payment.

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "phone": "+5511999999999",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "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

Triggered when a cart recovery email is sent.

Payload:

json
{
  "sale_id": "sale-uuid",
  "reference": "ABC123XYZ",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "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

Triggered when the customer pays after receiving the recovery email.

Payload:

json
{
  "sale_id": "recovered-sale-uuid",
  "reference": "XYZ789ABC",
  "amount": "100.00",
  "currency": "BRL",
  "customer": {
    "name": "John Silva",
    "email": "john@example.com",
    "ip": "192.168.1.1"
  },
  "product": {
    "id": "product-uuid",
    "name": "Product Name"
  },
  "offer": {
    "id": "offer-uuid",
    "name": "Product Name",
    "amount": "100.00",
    "product_id": "product-uuid"
  },
  "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"
}

Withdrawal Events

withdrawal.requested

Triggered when a withdrawal is requested by the merchant.

Payload:

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

withdrawal.approved

Triggered when a withdrawal is approved and sent for processing.

Payload:

json
{
  "withdrawal_id": "withdrawal-uuid",
  "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

Triggered when a withdrawal is completed (money transferred).

Payload:

json
{
  "withdrawal_id": "withdrawal-uuid",
  "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

Triggered when a withdrawal fails during processing.

Payload:

json
{
  "withdrawal_id": "withdrawal-uuid",
  "amount": "500.00",
  "status": "failed",
  "bank_status": "failed",
  "payment_provider": "noxpay",
  "failure_reason": "Invalid PIX key",
  "failed_at": "2025-01-08T18:32:00.000Z",
  "requested_at": "2025-01-08T18:00:00.000Z"
}

Best Practices

Webhook Response

Your endpoint must respond with HTTP status 200 or 204 to confirm receipt. Any other status will be considered a failure and the platform will retry sending the webhook.

Mises API - Simplified PIX Payments