Mecanismo para validação de transferências via webhooks

Uma forma de confirmar transferências via um Webhook especial.

O Asaas está constantemente investindo em segurança, e também criando métodos para tornar a sua operação conosco cada vez mais segura e confiável.

Nessa documentação, você encontrará o detalhamento do método de validação de transferências através de Webhooks.

🚧

Este mecanismo não é habilitado por padrão, precisando você entrar em contato com o suporte técnico para habilitá-lo e é, principalmente, recomendado para usos em contas White Label.

A liberação do uso está sujeito à análise.

❗️

Importante

Após ativado o mecanismo de validação via Webhooks, todas as transferências devem ser realizadas exclusivamente via API.

Como o mecanismo funciona?

  • Você solicitará a transferência via API e armazenará o ID ou mais dados do retorno em sua base de dados.
  • O Asaas fará um POST cinco segundos após a criação da transferência para a URL configurada com o payload da transferência (os payloads sempre serão os mesmos enviados no retorno da criação).
  • Essa requisição pode falhar no máximo três vezes, após a terceira falha a transferência será cancelada automaticamente.
  • Você deve verificar se o payload recebido bate com o que possui armazenado.
  • Responderá se aprova ou não a transferência.

Exemplo de requisição que o Asaas irá realizar

{
   "type":"TRANSFER",
   "transfer":{
      "object":"transfer",
      "id":"0bed986c-737d-49bf-a1cc-beca916797c4",
      "dateCreated":"2022-05-27",
      "status":"PENDING",
      "effectiveDate":null,
      "type":"BANK_ACCOUNT",
      "value":22,
      "netValue":22,
      "transferFee":0,
      "scheduleDate":"2022-05-27",
      "confirmedDate":null,
      "failReason":null,
      "bankAccount":{
         "bank":{
            "code":null,
            "ispb":"00000000",
            "name":null
         },
         "accountName":"ASAAS GESTAO FINANCEIRA S.A.",
         "ownerName":"ASAAS GESTAO FINANCEIRA S.A.",
         "cpfCnpj":"70609293000194",
         "agency":"4124",
         "agencyDigit":null,
         "account":"42142",
         "accountDigit":"1",
         "pixAddressKey":null
      },
      "transactionReceiptUrl":null,
      "operationType":"PIX",
      "description":null
   }
}

Ao receber o POST, você precisará respondê-lo informando se reconhece a transferência como resposta do próprio POST. Para isso é necessário que você retorne um payload com um status.

Os possíveis status são:

APPROVED

REFUSED

Também é possível informar o motivo da recusa, retornando junto do payload o refuseReason, exemplo:

{ 
    "status": "REFUSED", 
    "refuseReason": "Transferência não encontrada no nosso banco" 
}

Caso a transferência seja reconhecida e aprovada, é preciso responder da seguinte forma:

{ 
    "status": "APPROVED" 
}

Caso não seja retornado nenhum dos dois status ou a requisição apresente falha por 3 vezes consecutivas, daremos a solicitação como falha e a transferência será cancelada.

Caso optem por seguir com a habilitação desse recurso, você precisa entrar em contato e informar a URL que será configurada para envio do POST, e também o authToken caso seja necessário. Ao habilitar, essa funcionalidade será replicada para todas as subcontas da operação automaticamente.