1. Webhooks
Bestfy API
  • Sobre a Bestfy
    • Comece aqui
  • Webhooks
    • O que é um Webhook?
  • Tokenização
    • O que é Tokenização?
    • Criar token de cartão
      POST
  • Status de transação
    • Status de Pagamento na Bestfy
  • Transações
    • Anotações
      • Criar anotações
      • Listar anotações
      • Buscar anotação
      • Editar anotação
      • Remover anotação
    • Criar transações
      POST
    • Estornar transação
      POST
    • Buscar transação
      GET
    • Listar transações
      GET
    • Atualizar status de rastreio
      PATCH
    • Obter Token 3DS
      GET
    • Obter configurações do 3DS
      GET
  • Links de pagamento
    • Listar links de pagamento
      GET
    • Criar link de pagamento
      POST
    • Buscar link de pagamento
      GET
    • Atualizar link de pagamento
      PUT
    • Ativar ou desativar link de pagamento
      PATCH
    • Excluir link de pagamento
      DELETE
  • Saldo
    • Buscar saldo
      GET
  • API Key
    • Validar API Key
      GET
  1. Webhooks

O que é um Webhook?

Um webhook é um mecanismo de comunicação entre sistemas que permite que a Bestfy envie notificações automáticas para uma URL da sua aplicação sempre que um evento importante ocorrer. Em vez de você precisar consultar nossa API repetidamente para verificar se algo mudou (polling), nós avisamos você instantaneamente.
Pense no webhook como um "aviso automático": quando uma transação é criada ou muda de status, a Bestfy faz uma requisição HTTP POST para a URL que você configurou, enviando os dados do evento no corpo da requisição.

Como configurar um Webhook#

Para configurar um webhook na sua conta:
1.
Acesse a plataforma da Bestfy
2.
No menu lateral esquerdo, clique em Webhooks
3.
Clique em Criar webhook
4.
Preencha os campos:
URL: A URL do seu servidor que receberá as notificações (deve aceitar requisições POST)
Evento: Selecione o evento que deseja monitorar
5.
Clique em Salvar
⚠️ Limite: Você pode cadastrar no máximo 3 webhooks por evento

URL de retorno na criação da transação (postbackUrl)#

Ao criar uma transação pela API, você também pode informar uma postbackUrl. Ela reTRANSACTION_CREATED_OR_UPDATED, a cada mudança de status daquela transação, emparalelo com os webhooks cadastrados na plataforma. Se você usar os dois, recebe nos dois.
💡 A postbackUrl recebe só o evento de transação. Para receber as mudanças de status de entrega, cadastre um webhook do evento TRANSACTION_TRACKING_STATUS_CHANGED na plataforma.

Eventos disponíveis#

Atualmente, a Bestfy dispara webhooks para os seguintes eventos:
EventoDescrição
TRANSACTION_CREATED_OR_UPDATEDDisparado quando uma transação é criada ou tem seu status atualizado
TRANSACTION_TRACKING_STATUS_CHANGEDDisparado quando o rastreio do pedido é crus de entrega depois

Payload do Webhook#

Quando um evento ocorre, enviamos uma requisição POST para a sua URL. O conteúdo do payload varia conforme o momento do disparo.

Quando a transação é criada#

Transações PIX e boleto geram um evento na criação, já com o status PENDING: a cobrança foi emitida e está aguardando pagamento.
{
  "companyId": "uuid-da-empresa",
  "transactionId": "uuid-da-transacao",
  "status": "PENDING",
  "paymentMethod": "PIX",
  "customerEmail": "johndoe@email.com"
}
💡 Transações de cartão de crédito não geram evento na criação. O primeiro evento de um cartão já é o desfecho (PAID ou REJECTED). Quando o cartão é recusado na hora, a recusa vem na própria
resposta da criação e nenhum evento é enviado.

Quando a transação tem o status atualizado#

Quando o status da transação muda (por exemplo, de PENDING para PAID), o payload, conforme o caso, campos adicionais:
{
  "companyId": "uuid-da-empresa",
  "transactionId": "uuid-da-transacao",
  "status": "PAID",
  "paymentMethod": "PIX",
  "customerEmail": "johndoe@email.com",
  "customer": {
    "name": "John Doe",
    "email": "johndoe@email.com",
    "phone": "5511999999999",
    "cpfCnpj": "12345678900"
  },
  "pixEndToEndId": "E12345678202312171430abc123def456",
  "paymentConfirmedAt": "2025-12-17T14:30:00.000Z"
}

Comparativo dos campos#

CampoCriaçãoAtualizaçãoDescrição
companyId✅✅Identificador único da empresa
transactionId✅✅Identificador único da transação
status✅✅Status da transação (na criação é sempre PENDING)
paymentMethod✅✅Meio de pagamento da transação
customerEmail✅✅E-mail do cliente
customer❌✅Dados do cliente
pixEndToEndId❌⚠️ID end-to-end do PIX (somente quando pagamento PIX é confirmado)
paymentConfirmedAt❌⚠️Data/hora de confirmação (somente q

Descrição dos campos#

CampoTipoDescrição
companyIdstringIdentificador único da empresa (UUID)
transactionIdstringIdentificador único da transação financeira (UUID)
statusstringStatus atual da transação (veja abaixo)
paymentMethodstringPIX, CREDIT_CARD ou BOLETO
customerEmailstringE-mail do cliente
customerobjectname, email, phone e cpfCnpj; e, quando informado, o endereço (postalCode, neighborhood, city, state, streetAddress, streetNumber, complement)
pixEndToEndIdstringIdentificador end-to-end do PIX (apenas para pagamentos PIX)
paymentConfirmedAtstringData/hora de confirmação do pagamento (formato ISO 8601)

Evento de status de entrega (TRANSACTION_TRACKING_STATUS_CHANGED)#

Disparado quando o rastreio de um pedido com produto físico é criado e a cada mudança do status de entrega depois disso. Correções só do código de rastreio ou da transportadora não geram evento.
O corpo traz o novo status em trackingStatus e o anterior em previousTrackingStatus (null quando o rastreio acabou de ser criado), além do código de rastreio, da transportadora, do status de
pagamento da transação, dos dados do cliente e dos itens do pedido.
{
  "companyId": "uuid-da-empresa",
  "transactionId": "uuid-da-transacao",
  "transactionStatus": "PAID",
  "trackingNumber": "BR123456789BR",
  "service": "SEDEX",
  "trackingStatus": "IN_TRANSIT",
  "previousTrackingStatus": "SHIPPED",
  "changedAt": "2025-12-18T09:15:00.000Z",
  "customer": { "name": "John Doe", "email": "johndoe@email.com" },
  "cartItems": [
    { "productId": "uuid-do-produto", "productName": "Camiseta Básica", "productQuantity": 2 }
  ]
}
Status de entregaDescrição
PENDING_SHIPMENTAguardando envio
SEPARATINGEm separação
SHIPPEDEnviado
IN_TRANSITEm trânsito
OUT_FOR_DELIVERYSaiu para entrega
DELIVEREDEntregue
RETURNEDDevolvido
LOSTExtraviado
💡 Eventos de entrega podem chegar fora de ordem. Use changedAt para descartar o mais antigo.

Status da transação#

O campo status segue o ciclo de vida descrito em Status de Pagamento na Bestfy. Lá estão todos os valores possíveis, quando cada um
é atribuído e quais mudanças de status podem acontecer.

Exemplo de recebimento#

Seu servidor deve estar preparado para receber requisições POST. Exemplo em Node.js/Express:

Boas práticas#

1.
Responda rapidamente: Retorne um status 2xx em até 5 segundos para confirma
2.
Processamento assíncrono: Se precisar executar operações demoradas, salve o payload e processe em background
3.
Reconciliação: Cada evento é enviado uma única vez, sem nova tentativa (veja
4.
Validação: Sempre valide o companyId para garantir que o evento pertence à sua conta
5.
HTTPS: Use sempre URLs com HTTPS para garantir a segurança dos dados

Entrega dos eventos#

Cada mudança de status gera um único evento, sem nova tentativa. Se a sua URL estiver fora do ar, responder com erro ou demorar mais de 5 segundos, o evento não é reenviado. Para reconciliar, consulte a transação em GET /transaction/{financialTransactionId}, que é a fonte da verdade.
Aceite PAID depois de EXPIRED ou REJECTED. É um pagamento tardio, honrade Pagamento naBestfy](https://docs.bestfy.io/status-de-pagamento-na-bestfy-2108801m0)).

Erros comuns#

CódigoMotivo
400Limite de webhooks excedido (máximo 3 por evento)
404Empresa não encontrada
409URL já cadastrada para este evento
500Erro interno
Modified at 2026-10-01 20:05:23
Previous
Comece aqui
Next
O que é Tokenização?
Built with