VersellAPI

Exemplos de Teste de Webhook

Esses payloads simulam o que a Versell envia para seu endpoint de webhook. Use-os para desenvolvimento e testes locais.

Cash In — Pix Recebido

Este payload é enviado quando um Pix é recebido na sua chave. Ele chega no endpoint de webhook que você configurou para Cash In.

{
  "data": {
    "id": 825099,
    "txId": "0e7a2986324d6a9644cb6bf3458286",
    "pixKey": "33aba435-7926-42ef-aa81-fbbe90dd0f6f",
    "status": "LIQUIDATED",
    "payment": {
      "amount": "25.00",
      "currency": "BRL"
    },
    "refunds": [],
    "createdAt": "2026-04-08T19: 13: 43.290+00: 00",
    "errorCode": null,
    "endToEndId": "E0036030520260408191371b6dafecba",
    "ticketData": {},
    "webhookType": "RECEIVE",
    "debtorAccount": {
      "ispb": "00360305",
      "name": "MARCELO GOMES DOS PASSOS",
      "issuer": "0000",
      "number": "0000",
      "document": "35504589835",
      "accountType": "SVGS"
    },
    "idempotencyKey": null,
    "creditDebitType": "CREDIT",
    "creditorAccount": {
      "ispb": "37293930",
      "name": "VERSELL TECHNOLOGY LTDA",
      "issuer": "0000",
      "number": "0000",
      "document": "38322428000123",
      "accountType": "TRAN"
    },
    "localInstrument": "QRDN",
    "transactionType": "PIX",
    "remittanceInformation": null
  },
  "type": "RECEIVE"
}
CampoTipoDescrição
typestringTipo do webhook — "RECEIVE" para Pix recebido
data.idnumberID interno da transação na Versell
data.txIdstringIdentificador da cobrança (definido na criação do QR Code)
data.pixKeystringChave Pix que recebeu o pagamento
data.statusstringStatus da transação — "LIQUIDATED" indica pagamento confirmado
data.payment.amountstringValor do Pix em reais (formato decimal com ponto)
data.payment.currencystringMoeda da transação (BRL)
data.endToEndIdstringIdentificador único da transação no Banco Central
data.webhookTypestringTipo do evento — "RECEIVE" para recebimento
data.debtorAccountobjectDados da conta do pagador (nome, documento, ISPB, tipo de conta)
data.creditorAccountobjectDados da conta recebedora (nome, documento, ISPB, tipo de conta)
data.localInstrumentstringInstrumento de pagamento — QRDN (QR Code dinâmico), QRES (QR Code estático), DICT (chave), MANU (manual)
data.createdAtstring (ISO 8601)Data e hora em que o Pix foi recebido
data.refundsarrayLista de devoluções associadas a esta transação (vazia se não houver)

Cash Out — Transferência Liquidada

Enviado quando uma transferência Pix de saída é liquidada com sucesso.

{
  "data": {
    "id": 825100,
    "txId": null,
    "pixKey": null,
    "status": "LIQUIDATED",
    "payment": {
      "amount": "250.00",
      "currency": "BRL"
    },
    "endToEndId": "E12345678202301011234abcdef12345",
    "webhookType": "TRANSFER",
    "debtorAccount": {
      "ispb": "37293930",
      "name": "VERSELL TECHNOLOGY LTDA",
      "issuer": "0000",
      "number": "0000",
      "document": "38322428000123",
      "accountType": "TRAN"
    },
    "creditorAccount": {
      "ispb": "00360305",
      "name": "JOHN DOE",
      "issuer": "0001",
      "number": "12345678",
      "document": "12345678900",
      "accountType": "CACC"
    },
    "creditDebitType": "DEBIT",
    "localInstrument": "DICT",
    "transactionType": "PIX",
    "createdAt": "2025-01-15T10: 35: 00.000Z"
  },
  "type": "TRANSFER"
}
CampoTipoDescrição
typestringTipo do webhook — "TRANSFER" para transferência liquidada
data.idnumberID interno da transação na Versell
data.statusstringStatus da transferência — "LIQUIDATED" indica sucesso
data.payment.amountstringValor da transferência em reais (formato decimal com ponto)
data.endToEndIdstringIdentificador único da transação no Banco Central
data.webhookTypestringTipo do evento — "TRANSFER" para transferência
data.debtorAccountobjectDados da conta de origem (nome, documento, ISPB, tipo de conta)
data.creditorAccountobjectDados da conta de destino (nome, documento, ISPB, tipo de conta)
data.creditDebitTypestringTipo da operação — "DEBIT" para saída de recursos
data.createdAtstring (ISO 8601)Data e hora da criação da transferência

Cash Out — Transferência Rejeitada

Enviado quando uma transferência Pix de saída é rejeitada pelo PSP ou pelo Banco Central.

{
  "data": {
    "id": 825101,
    "txId": null,
    "pixKey": null,
    "status": "REJECTED",
    "payment": {
      "amount": "500.00",
      "currency": "BRL"
    },
    "endToEndId": "E98765432202301011234abcdef67890",
    "errorMessage": "Conta do destinatario encerrada",
    "webhookType": "CASHOUT",
    "debtorAccount": {
      "ispb": "37293930",
      "name": "VERSELL TECHNOLOGY LTDA",
      "issuer": "0000",
      "number": "0000",
      "document": "38322428000123",
      "accountType": "TRAN"
    },
    "creditorAccount": {
      "ispb": "00360305",
      "name": "JANE DOE",
      "issuer": "0001",
      "number": "87654321",
      "document": "98765432100",
      "accountType": "CACC"
    },
    "creditDebitType": "DEBIT",
    "localInstrument": "DICT",
    "transactionType": "PIX",
    "createdAt": "2025-01-15T11: 00: 00.000Z"
  },
  "type": "CASHOUT"
}
CampoTipoDescrição
typestringTipo do webhook — "CASHOUT" para transferência rejeitada
data.idnumberID interno da transação na Versell
data.statusstringStatus da transferência — "REJECTED" indica rejeição
data.payment.amountstringValor da transferência em reais (formato decimal com ponto)
data.endToEndIdstringIdentificador único da transação no Banco Central
data.errorMessagestringMensagem de erro descrevendo o motivo da rejeição
data.debtorAccountobjectDados da conta de origem (nome, documento, ISPB, tipo de conta)
data.creditorAccountobjectDados da conta de destino (nome, documento, ISPB, tipo de conta)
data.createdAtstring (ISO 8601)Data e hora da criação da transferência

Devolução — Refund

Enviado quando uma devolução de Pix é processada com sucesso.

{
  "data": {
    "id": 825102,
    "txId": null,
    "pixKey": null,
    "status": "REFUNDED",
    "payment": {
      "amount": "100.00",
      "currency": "BRL"
    },
    "endToEndId": "E12345678202301011234abcdef99999",
    "webhookType": "REFUND",
    "debtorAccount": {
      "ispb": "00360305",
      "name": "JOHN DOE",
      "issuer": "0001",
      "number": "12345678",
      "document": "12345678900",
      "accountType": "CACC"
    },
    "creditorAccount": {
      "ispb": "37293930",
      "name": "VERSELL TECHNOLOGY LTDA",
      "issuer": "0000",
      "number": "0000",
      "document": "38322428000123",
      "accountType": "TRAN"
    },
    "creditDebitType": "CREDIT",
    "localInstrument": "DICT",
    "transactionType": "PIX",
    "createdAt": "2025-01-15T12: 00: 00.000Z"
  },
  "type": "REFUND"
}
CampoTipoDescrição
typestringTipo do webhook — "REFUND" para devolução
data.idnumberID interno da transação na Versell
data.statusstringStatus da devolução — "REFUNDED" indica devolução concluída
data.payment.amountstringValor devolvido em reais (formato decimal com ponto)
data.endToEndIdstringIdentificador único da transação no Banco Central
data.creditDebitTypestringTipo da operação — "CREDIT" para entrada de recursos (devolução recebida)
data.createdAtstring (ISO 8601)Data e hora da devolução

Infração / MED — Contestação de Pagamento

Este payload é enviado quando uma infração MED (Mecanismo Especial de Devolução) é aberta contra uma transação Pix recebida. Trate com prioridade pois exige resposta dentro do prazo do Banco Central.

{
  "data": {
    "id": "94adeefa-c487-4a68-b9be-7963b5f1b9d7",
    "type": "REFUND_REQUEST",
    "status": "WAITING_PSP",
    "endToEndId": "E60701190202604081701DY50PZW0MK6",
    "reportedBy": "DEBITED_PARTICIPANT",
    "creationDate": "2026-04-08T18: 56: 00.130+00: 00",
    "reportDetails": "Motivo da contestação informado pelo pagador...",
    "transactionId": "819568",
    "analysisResult": null,
    "analysisDetails": null,
    "transactionAmount": {
      "amount": 25,
      "currency": "BRL"
    },
    "lastModificationDate": "2026-04-08T18: 56: 00.143+00: 00"
  },
  "type": "INFRACTION"
}
CampoTipoDescrição
typestringTipo do webhook — "INFRACTION" para infrações MED
data.idstring (UUID)Identificador único da infração
data.typestringTipo da infração — "REFUND_REQUEST" para solicitação de devolução
data.statusstringStatus da infração — WAITING_PSP (aguardando análise), CLOSED (encerrada), CANCELED (cancelada)
data.endToEndIdstringIdentificador da transação original no Banco Central
data.reportedBystringQuem reportou — "DEBITED_PARTICIPANT" (banco do pagador)
data.reportDetailsstringMotivo da contestação informado pelo pagador
data.transactionIdstringID da transação original na Versell
data.transactionAmountobjectValor da transação contestada (amount em reais, currency em BRL)
data.creationDatestring (ISO 8601)Data e hora de abertura da infração
data.analysisResultstring | nullResultado da análise (null enquanto aguarda, preenchido após análise)

Dicas de Teste

*
Use o ngrok ou ferramentas similares (localtunnel, Cloudflare Tunnel) para expor seu servidor local na internet e receber webhooks reais durante o desenvolvimento.
!
Sempre valide o header X-Webhook-Secret em produção. Nunca processe payloads de webhook sem verificar que o secret corresponde ao valor configurado na sua conta Versell.

Para testar localmente, inicie seu servidor e use os comandos cURL acima diretamente no terminal. Siga este fluxo:

  1. Inicie seu servidor local (ex: npm run dev)
  2. Copie um dos comandos cURL acima e execute no terminal
  3. Verifique os logs do servidor para confirmar que o payload foi recebido e processado
  4. Teste cenários de erro alterando o header X-Webhook-Secret para um valor incorreto