PIX ANTIFRAUDE

Última atualização: 22 de Maio de 2023

Introdução

O objetivo deste documento é apresentar as especificações técnicas e homologatórias para antifraude nos pagamentos instantâneos, solução desenvolvida e operada pela Clear que tem o objetivo de auxiliar na avaliação, pelos participantes, da confiabilidade de informações relacionadas aos usuários finais do PIX, buscando mitigar o risco de fraude em transações no âmbito do PIX.

A plataforma foi elaborada para ser utilizada pelo ecossistema de pagamentos instantâneos brasileiro como um todo, utilizando um conceito de base compartilhada. Quanto mais participantes estiverem integrados à solução, mais seguro será o sistema. Ao mesmo tempo, permite autonomia e controle total dos participantes terem sua própria gestão de risco, recebendo os melhores insumos para tomada de decisão

Descrição do Produto

O antifraude PIX foi desenvolvido exclusivamente para auxiliar as Instituições Financeiras na tomada de decisão e avaliação do risco das informações relacionadas aos processos de criação da chave pix, análise transacional de pagadores e recebedores.

O antifraude PIX realiza esse processo de análise e verificação do risco utilizando score e regras de decisão:

  • Score: medida relacionada ao risco de fraude, quanto maior o número gerado pelo score, maior o risco de fraude.
  • Regras de Decisão: aplica um conjunto de regras que devem ser atendidas, para uma transação poder ser consideradas válida.

Segurança

Todas as requisições submetidas à nossa API devem ser realizadas através de um token gerado através de um usuário, senha e id da entidade que devem ser fornecidos pela Clear.

Na autenticação, além do token retornamos seu tempo de expiração. É necessário que contemple no seu desenvolvimento o gerenciamento da vida útil do token com base nesse tempo de expiração. Só gere um novo token após a expiração do seu token atual.

O acesso aos serviços é feito através de API REST, usando padrões de mercado seguros.

Atenção: O Tempo de validade do Token gerado após a autenticação na API é de 24 Horas (ou 1440 minutos). Após esse período, um novo Token deverá ser gerado!

Funcionalidades Disponíveis

Abaixo seguem as funcionalidades disponíveis para utilização no Serviço Antifraude para Pagamentos Instantâneos:

  • FeedbackAntifraud: Retroalimentação de marcações de fraudes para AntifraudScore e AntifraudDecision
  • AntifraudScore: Geração de Score sobre análise da transação
  • AntifraudDecision: Geração de Score e Aplicação de Regra sobre análise da transação

Fluxo de Integração

Homologação

Pré-requisitos:

Adesão aos serviços;

Envio dos documentos de Matriz de Funcionalidades, Cadastro de Contatos e Cadastro Técnico para o e-mail suporte.pix@clear.sale;

Após os requisitos acima devidamente atendidos e validados, a Clear enviará o usuário e senha para acesso.

Hostname Homologação:

https://pixapi-h.clearsale.com.br

Observação:

Recomendamos não enviar dados produtivos nos testes do ambiente de homologação. Os dados retornados no ambiente de homologação são aleatórios e fictícios.

Produção

Pré-requisitos:

Adesão aos serviços;

Envio dos documentos de Matriz de Funcionalidades, Cadastro de Contatos e Cadastro Técnico para o e-mail suporte.pix@clear.sale;

Após os requisitos acima devidamente atendidos e validados, a Clear enviará o usuário e senha para acesso.

Hostname Produção:

https://pixapi.clearsale.com.br

Tratamento de Erro

401 - Não autorizado:

Possíveis problemas: erro ao autenticar a requisição. Consulte o valor do token.

400 - BadRequest:

Possíveis problemas: verifique se algum campo no corpo da requisição não está preenchido.

500 - Internal Server Error

Possíveis problemas: algum tipo de problema está afetando o desempenho do servidor que você está tentando acessar.

Swagger

Será possível visualizar as regras no swagger através deste link =>

Autenticação

Este endpoint está disponível na API na seguinte rota "/v1/authentication".

Todas as requisições submetidas à API devem ser realizadas utilizando um token, gerado a partir de um usuário e senha que serão fornecidos pela ClearSale.

Segue algumas dicas, referente ao token:

  • O tempo de expiração será em minutos (1440 min).
  • O cliente realizará o gerenciamento do ciclo de vida, com base no tempo de expiração.
  • Somente gere um novo token após a expiração do seu token atual.

Request:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
      "USERNAME": "{{USERNAME_API_PIX}}",
      "PASSWORD": "{{PASSWORD_API_PIX}}"
    }
    
    

Response:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
        "token": "eyJhbGciOiJ............CkoxKLwY1qvw0",
        "expiresInMinutes": 1440
    }
    
    

Parâmetros

Nome Valor Tipo Obrigatório
Username usuario_automatico String Sim
Password senha12345 String Sim

FeedbackAntifraud - Post - Retroalimentação de marcações de fraude

Este endpoint está disponível na API na seguinte rota "v1/feedback/antifraud". Tem a finalidade de receber dados relacionados a um alerta de fraude sobre alguma informação do contexto da nossa solução.

HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
{
    "IdTransaction": "4dc3c4dbe86f444e8931e8c30c498aea",
    "IsFraud": true,
    "UserType" : "1"
    "Description": "Fraude de roubo de whatsapp relatada pelo cliente em XX/YY/ZZZZ",
    "DataFraud": "2021-07-20T17:19:22.7506499Z"
}

Parâmetros

Nome Valor Tipo Obrigatório
IdTransaction 4dc3c4dbe86f444e8931e8c30c498aea String Sim
IsFraud true || false boolean Sim
UserType 1 (Sender) || 2 (Recipient) Integer Sim
Description Fraude de roubo de whatsapp relatada pelo cliente em XX/YY/ZZZZ, nos ligou informando o modo de operação, o cliente recebeu uma mensagem... String Sim
DataFraud yyyy-MM-ddTHH:mm:ss.fffZ String Sim

AntifraudScore - Post - Geração de Score sobre análise da transação

A API PIX possui a seguinte rota para o endpoint do Antifraude Score: "v1/analysis/antifraudscore". Esta API tem como objetivo analisar os dados do pagador e recebedor, juntamente com o valor da transação, onde o pagador e recebedor podem ser pessoa física e/ou jurídica. O resultado da transação será o valor do score de risco de 0 a 1000, no qual, quanto maior o valor, maior será o risco de fraude e o mesmo vale inversamente.

Os valores de referência do score são:

  • 0 a 500 - Baixo risco
  • 501 a 800 - Médio risco
  • Acima de 800 - Alto risco

Regras gerais dos campos:

  • OperationType = 4 (Boleto) não é permitido para esta rota.
  • O campo document do objeto sender e recipient podem receber valores mascarados.
  • O formato da máscara deve seguir o seguinte padrão:
    • 3 asteriscos nos 3 primeiros números + 6 números + 2 asteriscos nos 2 últimos números.
    • Exemplo: ***223640**
  • Qualquer formato diferente deste, retornará uma mensagem de erro (status code = 400).
  • Somente o CPF poderá ser mascarado. Não serão aceitos CNPJ´s mascarados.
  • O CPF mascarado pode ser informado em ambos os objetos sender e recipient na mesma transação.
  • Quando informado um CPF mascarado, o nome do pagador e recebedor são de preenchimento obrigatório, bem como o tipo de documento.
  • O campo documentType deve ser igual a "CPF".
  • Quando o cashType for IN representa uma transação de recebimento de um Pix, logo, o foco da análise dos dados, incluindo os dados bancários, será com base nos dados do recebedor deste Pix (recipient).
  • Quando o cashType for OUT representa uma transação de pagamento de um Pix, logo, o foco da análise dos dados, incluindo os dados bancários, será com base nos dados do pagador deste Pix (sender).
  • Os dados bancários do Recebedor(recipient) são de preenchimento obrigatório(existir no payload) somente em casos de CASHTYPE ser IN.
  • Os dados bancários no Pagador(sender) são de preenchimento obrigatório(existir no payload) somente em casos de CASHTYPE ser OUT.

Conceitos importantes:

  • Pagador - objeto sender
  • Recebedor - objeto recipient
  • IN - tipo de transação que foca no dados do Recebedor
  • OUT - tipo de transação que foca nos dados do Pagador

OBS: Campos com obrigatoriedade "opcional", ou seja, podem ou não ser preenchidos, mas se preenchido o objeto pai, todos os campos deste objeto serão de preenchimento obrigatório, pois dependem do objeto pai. O exemplo de retorno está no AntifraudScore - Get.

Retornos do score:

  • Valor negativo do score - deve ser reportado, junto com os valores do CPF e/ou CNPJ e valor, para análise dos dados.
  • Erro 500 - deve ser reportado, junto com os valores do CPF e/ou CNPJ e valor, para análise dos dados e da infraestrutura geral do sistema.

Request:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
      "operationType": 1,
      "cashType": 1,
      "recipient": {
        "document": "68227956009",
        "documentType": "CPF",
         "name": "João Isaac Breno Melo",
        "email": "joao_melo@cognis.com",
        "phone": {
          "countryCode": 55,
          "areaCode": 51,
          "number": 984709799
        },
        "BankAccountData": {
                "bankNumber": "123",
                "agencyNumber": "4",
                "accountNumber": "190827",
                "accountLastNumber": "5",
                "accountType": 1
        },
        "zipCode": "90660130",
        "ipDevice": "192.168.18.8"
      },
      "sender": {
        "document": "40086260006",
        "documentType": "CPF",
         "name": "Heloisa Márcia Alice Barbosa",
        "email": "heloisamarciabarbosa@securitycontrol.com.br",
        "phone": {
          "countryCode": 55,
          "areaCode": 51,
          "number": 986133197
        },    
        "BankAccountData": {
                "bankNumber": "456",
                "agencyNumber": "7",
                "accountNumber": "968627",
                "accountLastNumber": "5",
                "accountType": 1
         },
        "zipCode": "90660120",
        "ipDevice": "192.168.200.68",
      },
      "registeredDevice" : true,
       "key": {
          "value": "47739506842",
          "type": "CPF",
          "creationDateKey": "2023-08-29T19:20:50.197Z",
          "creationDateAccount": "2023-08-29T19:20:50.197Z"
        },
      "currency": "BRL",
      "amount": 200,
      "referenceDate": "2023-10-01T09:00:00.000Z",
      "statistics": {
        "lastUpdated": "2023-08-29T19:20:50.197Z",
        "counters": [
          {
            "type": "Confirmed_Frauds",
            "by": "key",
            "d3": 3,
            "d30": 15,
            "m6": 30
          }
        ]
      },
       "params": {
        "models": {
          "name": "ModeloPadrao",
          "environment": "DEV"
            },
        "trees": {
          "name": "",
          "environment": ""
        }
      }
    }
    
    

Response:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
    "id": "ab9b34e6f4s5aa8w4f5gdf0fb068",
    "score": {
        "value": 555.0621337890625,
        "date": "2024-11-12T13:31:12.5386709+00:00"
        }
    }
    
    

Retornos da API:

  • 201 - Sucesso
  • 400 - Refere-se ao preenchimento incorreto dos campos
  • 401 - Não autorizado, significa problemas de acesso
  • 500 - Erro no servidor ou banco de dados

Parâmetros

Nome Valor Tipo Obrigatório
cashType 1 | 2 Enum Sim
operationType 1 | 2 | 3 Enum Sim
recipient [object Object] String Sim
sender [object Object] String Sim
currency BRL String Não
amount 110.55 Number Sim
registeredDevice true Bool Não
referenceDate yyyy-MM-ddTHH:mm:ss.fffZ Datetime Sim
key [object Object] Object Opcional
statistics [object Object] Object Opcional
params [object Object] Object Opcional
Recipient / Sender
Nome Valor Tipo Obrigatório
document 73417176026 ou ***171760** String Sim
documentType CPF String Sim
name Claudio da Silva Souza String Não (Obrigatório caso document possua máscara)
email teste@teste.com String Não
phone [object Object] Object Opcional
bankAccountData [object Object] Object Sim
zipCode 90660101 String Não
ipdevice 192.168.18.8 String Não
Key
Nome Valor Tipo Obrigatório
value 10770753000130 String Sim
type CNPJ String Sim
creationDateKey yyyy-MM-ddTHH:mm:ss.fffZ String Não
creationDateAccount yyyy-MM-ddTHH:mm:ss.fffZ String Não
Phone
Nome Valor Tipo Obrigatório
countryCode 55 Integer Sim
areaCode 51 Integer Sim
number 999999999 Integer Sim
BankAccountData
Nome Valor Tipo Obrigatório
bankNumber 123 String Sim
agencyNumber 4 String Sim
accountNumber 56789 String Sim
accountLastNumber 1 String Sim
accountType 1 Integer Sim
Statistics
Nome Valor Tipo Obrigatório
lastUpdated yyyy-MM-ddTHH:mm:ss.fffZ String Não
counters [Array] String Opcional
counters[0].FraudEventCounterDto.type CONFIRMED_FRAUDS String Não
counters[0].FraudEventCounterDto.by KEY String Não
counters[0].FraudEventCounterDto.d3 3 Integer Não
counters[0].FraudEventCounterDto.d30 4 Integer Não
counters[0].FraudEventCounterDto.m6 5 Integer Não
OperationType
Nome Valor Tipo Obrigatório
1 Pix Integer
2 Ted Integer
3 Recarga de Celular Integer
4 Boleto - Somente para rota AntifraudDecision Integer
CashType
Nome Valor Tipo Obrigatório
1 In Integer
2 Out Integer
AccountType
Nome Valor Tipo Obrigatório
1 CACC Conta Corrente
2 SLRY Conta Salário
3 SVGS Conta Poupança
4 TRAN Conta de Pagamento
Params
Nome Valor Tipo Obrigatório
models [object Object] Objeto Não
trees [object Object] Objeto Não
Models
Nome Valor Tipo Obrigatório
name ModeloPadrao String Não
environment PRD String Não
Trees
Nome Valor Tipo Obrigatório
name ModeloPadrao String Não
environment PRD String Não

AntifraudScore - Get - Retorna informação da análise de transações

Este endpoint está disponível na API para seguinte rota "v1/analysis/antifraudscore/{id}". Tem a finalidade de buscar o resultado de uma análise feita através do ID de uma análise já feita anteriormente, retornando somente o Score da transação e ScoreComportamental.

HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
{
    "id": "94f82ab97c194c3f85e8262df4d13b7f",
    "score": {
        "value": 773.749267578125,
        "date": "2024-07-03T17:12:38.6898434+00:00"
    }
}

Retorno AntifraudScore

Nome Valor Tipo Obrigatório
Id 94f82ab97c194c3f85e8262df4d13b7f String Sim
Score [object Object] [object Object] Sim
Score
Nome Valor Tipo Obrigatório
Value 773.749267578125 Number Sim
date yyyy-MM-ddTHH:mm:ss.fffZ Datetime Sim

AntifraudDecision - Post - Geração de Score e Aplicação de Regra sobre análise da transação

Este endpoint está disponível na API para seguinte rota "v1/analysis/antifrauddecision". Tem a finalidade de analisar os dados relacionados entre dois participantes, podendo ser pessoa física o/ou jurídica e gerar resultados de score de risco de 0 a 1000, bem como, regra aplicada de acordo com o motor de decisão.

Referente ao score, quanto maior o valor, maior será o risco de fraude e o mesmo vale inversamente.

O sistema retorna além do score a informação de APA (aprova) /RPA (reprova), o nome da regra que aprovou ou reprovou a transação.

Obs:
  • Campos com obrigatoriedade "opcional" caso preenchido, será necessário preencher campos obrigatório que dependam do objeto pai.
  • O exemplo de retorno está no AntifraudDecision - Get.
  • OperationType = 4 (Boleto) é opcional preencher recipient para esta rota.

Request:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
      "operationType": 1,
      "cashType": 1,
      "recipient": {
        "document": "47739506842",
        "documentType": "CPF",
        "name": "Teste da Silva Souza",
        "email": "teste.souza@clear.sale",
        "phone": {
          "countryCode": 55,
          "areaCode": 51,
          "number": 981710000
        },
        "BankAccountData": {
                "bankNumber": "123",
                "agencyNumber": "3",
                "accountNumber": "4621",
                "accountLastNumber": "5",
                "accountType": 1
        },
        "zipCode": "90660130",
        "ipDevice": "192.168.18.8"
      },
      "sender": {
        "document": "04518345851",
        "documentType": "CPF",
        "name": "Silva Pereira Souza",
        "email": "teste@clear.sale",
        "phone": {
          "countryCode": 55,
          "areaCode": 51,
          "number": 995756363
        },    
        "BankAccountData": {
                "bankNumber": "123",
                "agencyNumber": "3",
                "accountNumber": "4621",
                "accountLastNumber": "5",
                "accountType": 1
         },
        "zipCode": "90660120",
        "ipDevice": "192.168.200.68",
      },
      "registeredDevice" : true,
       "key": {
          "value": "47739506842",
          "type": "CPF",
          "creationDateKey": "2023-08-29T19:20:50.197Z",
          "creationDateAccount": "2023-08-29T19:20:50.197Z"
        },
      "currency": "BRL",
      "amount": 200,
      "referenceDate": "2023-10-01T09:00:00.000Z",
      "statistics": {
        "lastUpdated": "2023-08-29T19:20:50.197Z",
        "counters": [
          {
            "type": "Confirmed_Frauds",
            "by": "key",
            "d3": 3,
            "d30": 15,
            "m6": 30
          }
        ]
      },
      "params": {
        "models": {
          "name": "ModeloPadrao",
          "environment": "DEV"
            },
        "trees": {
          "name": "",
          "environment": ""
        }
      }
    }
    
    

Response:

    HTTP/1.1 200 Ok
    Content-Type: application/json; charset=utf-8
    {
        "id": "80bb72544sds5484ff5gdffe398",
        "score": {
            "value": 706.5914916992188,
            "date": "2024-11-12T13:29:24.7865885+00:00"
        },
        "decidedRuleName": "pix-fluxo-de-decisao-r6-recebedor",
        "finalDecision": "RPA"
    }
    
    

Parâmetros

Nome Valor Tipo Obrigatório
cashType 1 | 2 Enum Sim
operationType 1 | 2 | 3 Enum Sim
recipient [object Object] String Sim
sender [object Object] String Sim
currency BRL String Não
amount 110.55 Number Sim
registeredDevice true Bool Não
referenceDate yyyy-MM-ddTHH:mm:ss.fffZ Datetime Sim
key [object Object] Object Opcional
statistics [object Object] Object Opcional
params [object Object] Object Opcional
Recipient / Sender
Nome Valor Tipo Obrigatório
document 73417176026 ou ***171760** String Sim
documentType CPF String Sim
name Claudio da Silva Souza String Não (Obrigatório caso document possua máscara)
email teste@teste.com String Não
phone [object Object] Object Opcional
bankAccountData [object Object] Object Sim
zipCode 90660101 String Não
ipdevice 192.168.18.8 String Não
Key
Nome Valor Tipo Obrigatório
value 10770753000130 String Sim
type CNPJ String Sim
creationDateKey yyyy-MM-ddTHH:mm:ss.fffZ String Não
creationDateAccount yyyy-MM-ddTHH:mm:ss.fffZ String Não
Phone
Nome Valor Tipo Obrigatório
countryCode 55 Integer Sim
areaCode 51 Integer Sim
number 999999999 Integer Sim
BankAccountData
Nome Valor Tipo Obrigatório
bankNumber 123 String Sim
agencyNumber 4 String Sim
accountNumber 56789 String Sim
accountLastNumber 1 String Sim
accountType 1 Integer Sim
Statistics
Nome Valor Tipo Obrigatório
lastUpdated yyyy-MM-ddTHH:mm:ss.fffZ String Não
counters [Array] String Opcional
counters[0].FraudEventCounterDto.type CONFIRMED_FRAUDS String Não
counters[0].FraudEventCounterDto.by KEY String Não
counters[0].FraudEventCounterDto.d3 3 Integer Não
counters[0].FraudEventCounterDto.d30 4 Integer Não
counters[0].FraudEventCounterDto.m6 5 Integer Não
OperationType
Nome Valor Tipo Obrigatório
1 Pix Integer
2 Ted Integer
3 Recarga de Celular Integer
4 Boleto - Somente para rota AntifraudDecision Integer
CashType
Nome Valor Tipo Obrigatório
1 In Integer
2 Out Integer
AccountType
Nome Valor Tipo Obrigatório
1 CACC Conta Corrente
2 SLRY Conta Salário
3 SVGS Conta Poupança
4 TRAN Conta de Pagamento
Params
Nome Valor Tipo Obrigatório
models [object Object] Objeto Não
trees [object Object] Objeto Não
Models
Nome Valor Tipo Obrigatório
name ModeloPadrao String Não
environment PRD String Não
Trees
Nome Valor Tipo Obrigatório
name ModeloPadrao String Não
environment PRD String Não

AntifraudDecision - Get - Retorna informação da análise de transações

Este endpoint está disponível na API para seguinte rota "v1/analysis/antifrauddecision/{id}". Tem a finalidade de buscar o resultado de uma análise feita através do ID de uma análise já feita anteriormente, retornando Score calculado por transação e regras que determinou a aprovação (APA) ou reprovação (RPA).

HTTP/1.1 200 Ok
Content-Type: application/json; charset=utf-8
{
    "id": "4dc3c4dbe86f444e8931e8c30c498aea",
    "score": {
        "value": 862.3741455078125,
        "date": "2024-07-03T11:42:24.417Z"
    },
    "decidedRuleName": "Aprovar_pix_goodList",
    "finalDecision": "APA"
}

Retorno AntifraudDecision

Nome Valor Tipo Obrigatório
Id 4dc3c4dbe86f444e8931e8c30c498aea String Sim
Score [object Object] [object Object] Sim
DecidedRuleName Aprovar_pix_goodList String Sim
FinalDecision APA String Sim
Score
Nome Valor Tipo Obrigatório
Value 862.37414 Number Sim
date yyyy-MM-ddTHH:mm:ss.fffZ Datetime Sim