1. Webhooks (Eventos Recebidos)
Dotfy - Documentação
  • Dotfy Module
    • Raiz
      • Conta (Dados do Seller)
        • Identificar a conta (dados do seller)
      • Cobranças PIX
        • Criar cobrança PIX
        • Listar cobranças
        • Consultar cobrança por correlationID
        • Histórico de webhooks de uma cobrança
      • Cartão (Checkout Transparente)
        • Criar pagamento com cartão (PAN via API)
      • Saldo
        • Consultar saldo
      • Saques e Chaves PIX
        • Listar chaves PIX cadastradas
        • Cadastrar chave PIX
        • Listar saques
        • Solicitar saque
        • Cancelar saque pendente
      • Clientes
        • Listar clientes
        • Detalhe de um cliente
      • Produtos e Links de Pagamento
        • Links de compra por comprador (Purchase Links)
          • Criar link de compra (por comprador)
          • Listar links de compra do produto
          • Detalhe/status do link de compra
          • Revogar link de compra
        • Listar produtos
        • Criar produto
        • Detalhe do produto
        • Carrinhos abandonados do produto
      • Splits
        • Analytics de splits enviados
        • Splits recebidos
      • Disputas e MEDs
        • Listar disputas
        • Listar MEDs com estatísticas
        • Evidências de uma disputa
        • Histórico de uma disputa
      • Subcontas White-Label (BaaS)
        • Criar subconta
        • Listar subcontas
        • Detalhe da subconta
        • Atualizar subconta
        • Excluir subconta (soft delete)
        • Enviar KYC da subconta (multipart)
        • Consultar status do KYC da subconta
        • Cadastrar chave PIX da subconta
        • Listar chaves PIX da subconta
        • Remover chave PIX da subconta
        • Criar cobrança da subconta
        • Listar cobranças da subconta
        • Detalhe de cobrança da subconta
        • Saldo da subconta
        • Extrato (transações) da subconta
        • Solicitar saque da subconta
        • Listar saques da subconta
        • Atualizar taxas da subconta
      • Webhooks (Gerenciar Endpoints)
        • Listar endpoints
        • Criar endpoint
        • Atualizar endpoint
        • Remover endpoint
      • Webhooks (Eventos Recebidos)
        • EVENT:CHARGE_CREATED — cobrança criada
          POST
        • EVENT:CHARGE_PAID — cobrança paga (atualização principal)
          POST
        • EVENT:CHARGE_EXPIRED — cobrança expirada
          POST
        • EVENT:SPLIT_RECEIVED — você recebeu um split
          POST
        • EVENT:DISPUTE_OPENED — MED/disputa aberta
          POST
        • EVENT:DISPUTE_WON — disputa ganha
          POST
        • EVENT:DISPUTE_LOST — disputa perdida
          POST
        • EVENT:DISPUTE_CANCELED — disputa cancelada
          POST
        • EVENT:WITHDRAWAL_COMPLETED — saque concluído
          POST
        • EVENT:WITHDRAWAL_FAILED — saque falhou
          POST
        • EVENT:SUBACCOUNT_KYC_APPROVED — KYC da subconta aprovado
          POST
        • EVENT:SUBACCOUNT_KYC_REJECTED — KYC da subconta recusado
          POST
        • EVENT:SUBACCOUNT_PIX_KEY_APPROVED — chave PIX da subconta aprovada
          POST
        • EVENT:SUBACCOUNT_PIX_KEY_REJECTED — chave PIX da subconta recusada
          POST
      • Notificações
        • Listar notificações
      • Dashboard / Analytics
        • Stats gerais
        • Atividade recente
        • Atividade (timeline)
        • Receita por período
        • Volume por período
        • Taxa de conversão
        • Métodos de pagamento
        • Transações (gráfico)
        • Analytics avançado
  1. Webhooks (Eventos Recebidos)

EVENT:CHARGE_PAID — cobrança paga (atualização principal)

POST
https://seu-dominio.com/webhooks/dotfy
Este é o evento que você espera para liberar o produto/serviço para o cliente.
Disparado quando o pagador efetiva o PIX. Inclui:
status: "PAID" (sempre "PAID" — nunca "COMPLETED" no corpo do webhook)
paidAt (ISO8601 do pagamento; o campo está presente em todos os eventos de cobrança, com valor null quando ainda não pago)
brCode e qrCode carregam o mesmo PIX copia-e-cola — qrCode é o nome correto; brCode é mantido por retrocompatibilidade
payer com nome e CPF/CNPJ mascarados do pagador real
netAmount (valor líquido após splits, em centavos) — só presente se a cobrança teve splits
splits[] (status final de cada split) — só presente se houver
Idempotência: se você responder 200 mas o webhook chegar duplicado, trate como o mesmo pagamento. Use data.id (ou o externalId que você passou no correlationID) como chave de deduplicação.
purchaseLink (opcional): presente apenas quando a cobrança nasceu de um link de compra por comprador (criado via POST /api/products/{id}/purchase-links). Identifica QUAL link foi pago — use o id para conciliar com o seu pedido. Os dados de customer são os informados NA CRIAÇÃO do link (não os digitados no checkout). O campo também aparece em EVENT:CHARGE_CREATED/EXPIRED quando a cobrança pertence a um link.
Cartão (checkout com cartão OU POST /api/card-payments): um pagamento com cartão dispara o mesmo EVENT:CHARGE_PAID, com paymentMethod: "CARD" e um objeto card { lastFour, brand, installments } (nunca PAN/CVV). Nesses casos brCode/qrCode vêm vazios. Em PIX, paymentMethod: "PIX". Concilie sempre pelo correlationID.

Requisição

Authorization
Forneça seu token bearer no cabeçalho
Authorization
ao fazer requisições para recursos protegidos.
Exemplo:
Authorization: Bearer ********************
Parâmetros de Consulta

Parâmetros Header

Parâmetros Bodyapplication/json

Examples

Respostas

🟢200
application/json
Bodyapplication/json

Request Request Example
Shell
JavaScript
Java
Swift
curl --location 'https://seu-dominio.com/webhooks/dotfy?event=charge-paid' \
--header 'X-Webhook-Signature: t=1714000300000,v1=<hex_de_HMAC_SHA256(secret, timestamp + '\''.'\'' + body)>' \
--header 'X-Webhook-Event: EVENT:CHARGE_PAID' \
--header 'X-Webhook-ID: clev02j3l4m5n6p7q8r9s0t1u2' \
--header 'X-Webhook-Timestamp: 2026-05-07T14:35:12.000Z' \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data-raw '{
  "event": "EVENT:CHARGE_PAID",
  "timestamp": "2026-05-07T14:35:12.000Z",
  "data": {
    "id": "clxxx0001",
    "externalId": null,
    "correlationId": null,
    "brCode": "00020126360014BR.GOV.BCB.PIX0114+5511999998888...",
    "qrCode": "00020126360014BR.GOV.BCB.PIX0114+5511999998888...",
    "qrCodeUrl": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUg...",
    "paymentLink": "https://app.dotfy.com.br/checkout/dotfy-1714000000000-abc12345",
    "amount": 2990,
    "expiresAt": "2026-05-07T15:30:00.000Z",
    "createdAt": "2026-05-07T14:30:00.000Z",
    "status": "PAID",
    "paymentMethod": "PIX",
    "paidAt": "2026-05-07T14:35:12.000Z",
    "customer": {
      "id": "12345678901",
      "name": "Maria Silva",
      "document": "123.456.789-01",
      "email": "maria@exemplo.com",
      "phone": "(11) 99999-8888"
    },
    "payer": {
      "name": "Maria Silva",
      "taxId": "***456***"
    },
    "netAmount": 2691,
    "splits": [
      {
        "email": "parceiro@exemplo.com",
        "type": "PERCENT",
        "value": 10,
        "amount": 299,
        "status": "COMPLETED"
      }
    ],
    "purchaseLink": {
      "id": "clplink0001",
      "productId": "clprodNew",
      "customer": {
        "name": "Maria Silva",
        "email": "maria@exemplo.com",
        "phone": "5511999998888",
        "taxId": "12345678901"
      }
    }
  }
}'
Response Response Example
{}
Modificado em 2026-07-02 06:57:27
Página anterior
EVENT:CHARGE_CREATED — cobrança criada
Próxima página
EVENT:CHARGE_EXPIRED — cobrança expirada
Built with