EvoPay

Webhooks

A EvoPay envia uma notificação HTTP POST para a callbackUrl informada na criação da transação sempre que o status é atualizado.

Configuração

A callbackUrl é opcional e informada nos endpoints de criação:

  • POST /v1/pix/ — campo callbackUrl
  • POST /v1/withdraw/ — campo callbackUrl
  • POST /v1/withdraw/qrcode — campo callbackUrl

Seu servidor deve responder com qualquer status HTTP 2xx para confirmar o recebimento.


Política de entrega

ParâmetroValor
Tentativas máximas5
BackoffExponencial, base 2 minutos + 50% de jitter
Timeout por tentativa10 segundos

Após 5 falhas consecutivas o reenvio para. Use Reenvio de callbacks em lote ou Reenvio de callback por transação para reenviar manualmente.


Headers enviados

Content-Type: application/json
User-Agent: Callback-Service/1.0
X-Callback-Attempt: <n>

X-Callback-Attempt começa em 0 na primeira tentativa e vai até 4 na quinta.


Payload

DEPOSIT e WITHDRAW recebem o mesmo schema. Os campos null variam conforme o status e o tipo da transação.

{
  "id": "EPB1694C2C35E94053874D53B1",
  "type": "DEPOSIT",
  "status": "COMPLETED",
  "amount": 100.00,
  "serviceFeeCharged": 2.50,
  "clientReference": "pedido-123",

  "qrCodeText": "00020101...",
  "qrCodeUrl": "https://...",
  "qrCodeBase64": "iVBORw0KGgo...",

  "generatedName": "João Silva",
  "generatedDocument": "12345678901",
  "generatedEmail": "joao@email.com",

  "payerName": "João Silva",
  "payerDocument": "12345678901",
  "payerInstitutionIspb": "60746948",
  "payerInstitutionName": "Itaú",

  "receiverName": null,
  "receiverDocument": null,
  "receiverInstitutionIspb": null,
  "receiverInstitutionName": null,

  "withdrawPixKey": null,
  "withdrawPixType": null,
  "withdrawQrCodeText": null,

  "endToEndId": "E60746948...",
  "cancellationReason": null,
  "paidAt": "2024-01-01T12:05:00.000Z",

  "refundEndToEndId": null,
  "refundAmount": null,
  "refundStatus": null,
  "refundReason": null,
  "refundDescription": null,
  "refundedAt": null,

  "createdAt": "2024-01-01T12:00:00.000Z",
  "updatedAt": "2024-01-01T12:05:00.000Z"
}

Campos principais

CampoTipoDescrição
idstringID da transação
typeTransactionTypeDEPOSIT ou WITHDRAW
statusTransactionStatusStatus atual
amountnumberValor em reais
serviceFeeChargednumber | nullTaxa cobrada
clientReferencestring | nullReferência externa enviada na criação
cancellationReasonstring | nullMotivo do cancelamento
endToEndIdstring | nullID fim a fim Pix
paidAtstring | nullTimestamp do pagamento (ISO 8601)

Campos típicos por tipo

CampoDEPOSITWITHDRAW
qrCodeText / qrCodeUrl / qrCodeBase64Preenchidonull
generatedName / generatedDocument / generatedEmailPreenchido se informado na criaçãonull
payerName / payerDocument / payerInstitutionIspb / payerInstitutionNameFornecido pelo provedor quando disponívelFornecido pelo provedor quando disponível
receiverName / receiverDocument / receiverInstitutionIspb / receiverInstitutionNamenullPreenchido após liquidação
withdrawPixKey / withdrawPixTypenullPreenchido (saque via chave)
withdrawQrCodeTextnullPreenchido (saque via QR Code)

Campos de estorno

Preenchidos quando status é WAITING_FOR_REFUND ou REFUNDED.

CampoTipoDescrição
refundStatusRefundStatus | nullStatus do estorno
refundReasonRefundReason | nullMotivo do estorno
refundAmountnumber | nullValor estornado
refundEndToEndIdstring | nullID fim a fim do estorno
refundDescriptionstring | nullDescrição livre
refundedAtstring | nullTimestamp do estorno (ISO 8601)

Campo infraction (opcional)

Presente apenas quando o webhook é disparado por uma atualização de infração Pix associada à transação. Em callbacks normais de depósito e saque, este campo não aparece no payload.

{
  "id": "EPB1694C2C35E94053874D53B1",
  "type": "DEPOSIT",
  "status": "WAITING_FOR_REFUND",
  ...
  "infraction": {
    "id": "uuid",
    "protocol": "PROTOCOL123",
    "status": "OPEN",
    "type": "FRAUD",
    "reportDetails": "Transação não reconhecida pelo pagador",
    "reportedBy": "DEBITED_PARTICIPANT",
    "analysisResult": null,
    "analysisDetails": null,
    "reportedAt": "2024-01-01T13:00:00.000Z",
    "expiresAt": "2024-02-01T13:00:00.000Z",
    "createdAt": "2024-01-01T13:00:00.000Z",
    "updatedAt": "2024-01-01T13:00:00.000Z"
  }
}
CampoTipoDescrição
idstringID da infração
protocolstringProtocolo fornecido pelo provedor
statusInfractionStatusStatus da infração
typeInfractionTypeTipo da infração
reportDetailsstringDescrição do motivo
reportedByReportedTypeQuem reportou
analysisResultAnalysisResult | nullResultado da análise
analysisDetailsstring | nullJustificativa da decisão
reportedAtstringTimestamp do reporte (ISO 8601)
expiresAtstring | nullPrazo de resolução (ISO 8601)
createdAtstringTimestamp de criação (ISO 8601)
updatedAtstringTimestamp da última atualização (ISO 8601)
EvoPay API Documentation