Onboarding Sem Webview

Introdução

Este documento tem como objetivo apoiar o cliente a compreender a integração com o produto Onboarding - KYC. Nesse documento iremos explicar o Fluxo, a autenticação e os Endpoints da integração. Para utilização destes serviços é necessário realizar a contratação do Onboarding Celcoin junto a solução do BaaS.
Essa documentação é destinada a clientes que possuem caso de uso ao qual não necessitam do webview para envio dos documentos.

Pré requisitos para implementação:

  • Possuir uma chave API da Celcoin, essa chave API é enviada após contratar o serviço conosco. link.

  • Ter familiaridade com APIs Rest usando o protocolo OAuth 2.0.

  • Ter o produto/solução contratada, caso queira usar a funcionalidade em ambiente produtivo, por favor entre em contato com a nossa equipe comercial através do e-mail [email protected]. Para dúvidas técnicas, basta entrar em contato com o suporte através do link.

👍

Importante

Sandbox

No ambiente de sandbox, possuímos o seguinte comportamento:
Utilize o campo phoneNumber para PF
Utilize o campo contactNumber para PJ

Final do telefone terminando em:
1 - Aprovado em ambos os webhooks e criará a conta (Independente dos demais dados informados)
2 - Reprovado no primeiro webhook (Independente dos demais dados informados)
3 - Aprova a primeira etapa do processo e reprova a segunda. (Independente dos demais dados informados)
Diferente de telefone final terminado em 1, 2 e 3 seguirá com o cenário próximo da realidade (Necessário informar dados reais em casos desse).
OBS: O comportamento respeitará a configuração utilizada para o seu caso, fluxo 1 ou fluxo 2.

Informações importantes para o processo em produção nasConsiderações finais

Fluxo de integração

Essa documentação é destinada a clientes que possuem caso de uso ao qual não necessitam do webview para envio dos documentos.

O primeiro passo é coletar os dados do seu cliente, (detalhados no tópico de Endpoints). Com esses dados coletados, você deverá fazer uma requisição utilizando o método POST em um dos Endpoints disponíveis:
• proposal/natural-person, para contas Pessoa Física (PF)
• proposal/legal-person, para contas Pessoa Jurídica (PJ)
Após essa requisição, será criada uma proposta e iremos rodar uma política de BackgroundCheck em nosso fornecedor e iremos retornar via Webhook o resultado. Caso seja aprovado, além do webhook com o resultado de “Approved” , após a aprovação, serão realizadas novas validações de políticas referente a documentação enviada, como a Documentoscopia e OCR. Iremos retornar o resultado via Webhook e caso seja aprovado, além do webhook iremos também enviar o webhook de criação de conta do BaaS.

Os documentos do cliente deverão ser enviados no request, através de uma URL acessível e atrelada ao download do documento que foi informado no campo "Type".


Recomendações Fluxo

Recomendamos esse fluxo para clientes que possuem já possuem um mecanismo para capturar/recepcionar todos os documentos do cliente.

Criar propostas

A criação das propostas devem ser realizadas através dos endpoints

🙍‍♂️

Pessoa Física

Se a proposta for para uma pessoa física. (onboarding-proposal/natural-person) endpoint

URL Sandbox: https://sandbox.openfinance.celcoin.dev/onboarding/v1/onboarding-proposal/natural-person

Exemplo Request:

{
  "clientCode": "myUniqueCustomCode",
  "documentNumber": "1234567890",
  "phoneNumber": "+5511999999999",
  "email": "[email protected]",
  "motherName": "My mothers name",
  "fullName": "My full name",
  "socialName": "My social name",
  "birthDate": "01-01-1970",
  "address": {
    "postalCode": "99999000",
    "street": "My address",
    "number": "999",
    "addressComplement": "Address references.",
    "neighborhood": "My neighborhood",
    "city": "My city",
    "state": "State"
  },
  "isPoliticallyExposedPerson": false,
  "onboardingType": "BAAS",
  "financialDetails": {
        "declaredIncome": "1DINP02", // Renda declarada
        "occupation": "ONP07", // Profissão
        "netWorth": "NWNP02" // Patrimônio 
  },
  "files": [ //Devem ser informados todos os documentos no request
    {
      "type": "SELFIE",
      "data": "https://cloud.storage/myselfie_with_1h_expiration_minimum.jpeg" //Essa URL deverá ser acessível e atrelada ao download do documento que foi informado no campo "Type". Recomendamos que essa URL tenha um período de expiração de pelo menos 1 hora.
    }
  ]
}

Exemplo Response:

{
   "body": {
       "proposalId": "1234cee7-cf18-44d6-ad9c-5a33cd45b9a0", //número da proposta criada
       "clientCode": "myUniqueCustomCode", //código cliente
       "documentNumber": "1234567890" //documento
   },
   "version": "1.0.0", //versão
   "status": "PROCESSING" //status da proposta
}
🏛️

Pessoa Jurídica

Se a proposta for para uma pessoa jurídica. (onboarding-proposal/legal-person) endpoint

É importante informar todos os sócios do Quadro Societário da empresa, ou pelo menos os que possuem participação societária maior ou igual a 25%.

URL Sandbox: https://sandbox.openfinance.celcoin.dev/onboarding/v1/onboarding-proposal/legal-person

Exemplo Request:

{
  "clientCode": "123456",
  "contactNumber": "+551239215555",
  "documentNumber": "56461227000199",
  "businessEmail": "[email protected]",
  "businessName": "IP Pagamentos",
  "tradingName": "IPay",
  "companyType": "PJ", //tipo da empresa. Informe como PJ casos divergentes de Natureza Juridica Empresário Individual.
  "owner": [
    {
      "ownerType": "REPRESENTANTE",
      "documentNumber": "33333333333",
      "fullName": "Carlos Henrique da Silva",
      "phoneNumber": "+5512981175554",
      "email": "[email protected]",
      "motherName": "Nome Sobrenome",
      "socialName": "Nome",
      "birthDate": "31-12-1984",
      "address": {
        "postalCode": "12211400",
        "street": "Rua da Liberdade",
        "number": "313",
        "addressComplement": "Em frente ao parque.",
        "neighborhood": "Casa Verde",
        "city": "São Paulo",
        "state": "SP"
      },
      "isPoliticallyExposedPerson": false,
      "financialOwnerDetails": {
         "ownerDeclaredIncome": "ODIB02", //Renda declarada em caso de sócio PF
         "ownerDeclaredRevenue": "ODRB02" //Faturamento anual declarado em caso de sócio PJ
       }        
    }
  ],
  "businessAddress": {
    "postalCode": "12211400",
    "street": "Rua da Liberdade",
    "number": "313",
    "addressComplement": "Em frente ao parque.",
    "neighborhood": "Casa Verde",
    "city": "São Paulo",
    "state": "SP"
  },
  "onboardingType": "BAAS",
  "financialCompanyDetails": {
    "declaredCompanyRevenue": "DCRB03", //Faturamento anual declarado da empresa
  },
  "files": [ //Devem ser informados todos os documentos no request
    {
      "type": "RG_FRONT",
      "data": "https://t.ctcdn.com.br/lvns56iaSMyHvyTur4JeYS_NYeY=/i606944.png" //Essa URL deverá ser acessível e atrelada ao download do documento que foi informado no campo "Type". Recomendamos que essa URL tenha um período de expiração de pelo menos 1 hora.
    }
  ]
}
//Exemplo de empresa com sócio PJ, necessário informar o Sócio Administrador da outra empresa.
{
    "clientCode": "a7e9ea3f-69e4-4599-92b4-6cb8a79c3512",
    "contactNumber": "+5511985028123",
    "documentNumber": "42222915000191",
    "businessEmail": "[email protected]}",
    "businessName": "Celcoin",
    "tradingName": "Celcoin Instituição de Pagamento",
    "companyType": "PJ",
    "owner": [
        {
            "ownerType": "SOCIO",//PF
            "documentNumber": "72352781027",
            "fullName": "Nome Socio Primeira Empresa",
            "phoneNumber": "+5511912345128",
            "email": "[email protected]",
            "motherName": "Mother Name Teste",
            "socialName": "Nome",
            "birthDate": "22-06-1972",
            "address": {
                "postalCode": "06455030",
                "street": "Rua do Teste",
                "number": "123",
                "addressComplement": "",
                "neighborhood": "Alphaville Industrial",
                "city": "Barueri",
                "state": "SP"
            },
          "isPoliticallyExposedPerson": false,
          "financialOwnerDetails": {
            "ownerDeclaredIncome": "ODIB02",// Renda declarada em caso de sócio PF
          }        
        },
        {
            "ownerType": "SOCIO",//PJ
            "documentNumber": "02555276000122",
            "fullName": "Razão Social da empresa",
            "phoneNumber": "+5511912345128",
            "email": "[email protected]",
            "motherName": "nao se aplica",
            "socialName": "nao se aplica",
            "birthDate": "22-06-2005",//data de abertura da empresa
            "address": {
                "postalCode": "06455030",
                "street": "Alameda Xingu",
                "number": "123",
                "addressComplement": "",
                "neighborhood": "Alphaville Industrial",
                "city": "Barueri",
                "state": "SP"
            },
          "isPoliticallyExposedPerson": false,
          "financialOwnerDetails": {
            "ownerDeclaredRevenue": "ODRB02",//Faturamento anual declarado em caso de sócio PJ
          } 
        }
    ],
    "businessAddress": {
        "postalCode": "06454000",
        "street": "Alameda Rio Negro",
        "number": "503",
        "addressComplement": "sala 2020",
        "neighborhood": "Alphaville Centro Industrial",
        "city": "Barueri",
        "state": "SP"
    },
  "onboardingType": "BAAS",
  "financialCompanyDetails": {
     "declaredCompanyRevenue": "DCRB03", //Faturamento anual declarado da empresa
  },
  "files": [ //Devem ser informados todos os documentos no request
    {
      "type": "RG_FRONT",
      "data": "https://t.ctcdn.com.br/lvns56iaSMyHvyTur4JeYS_NYeY=/i606944.png" //Essa URL deverá ser acessível e atrelada ao download do documento que foi informado no campo "Type". Recomendamos que essa URL tenha um período de expiração de pelo menos 1 hora.
    }
  ]
}

No atributo “ownerType” deverá ser informado uma das opções: “SOCIO” OU “REPRESENTANTE”. Para casos onde existe mais de um sócio, utilize a opção "SOCIO" para o primeiro Sócio e a opção “DEMAIS_SOCIOS” para os demais. Caso seja informado REPRESENTANTE será obrigatório a inclusão da Procuração de Poderes.
No atributo CompanyType deverá ser informado o tipo de empresa MEI,ME ou PJ. Em caso de dúvidas, é imprescindível questionar ao cliente, pois impactará na jornada de KYC.

Para casos com empresas com sócio PJ, informe o sócio administrador da segunda empresa no request. Exemplo na guia 2 do Request. Para enviar os 2 contratos sociais das empresas, envie o primeiro com file Type CONTRATO_SOCIAL e o outro com o type OUTROS.

Para casos diferentes de MEI e ME o tipo de empresa, informe como tipo PJ.


Exemplo Response:

{
    "body": {
        "proposalId": "c3216c8a-df23-450b-92d5-48b0c89c8791", //número da proposta
        "clientCode": "a7e9ea3f-69e4-4599-92b4-6cb8a79c3512", //código cliente
        "documentNumber": "13935893000109" //documento
    },
    "version": "1.0.0", //versão
    "status": "PROCESSING" //status proposta
}
📘

Informações financeiras

Para informações sobre o correto preenchimento dos campos do objeto "financialDetails" acesse nossa documentação complementar: Informações Financeiras.

⚠️

A URL informada no campo files.data deverá ser acessível e atrelada ao download instantâneo do documento que foi informado no campo "Type".

Recomendamos que essa URL tenha um período de expiração de pelo menos 1 hora.


Consultar propostas

É possível consultar as propostas criadas e seus status utilizando o seguinte endpoint

É possível utilizar os seguintes filtros:
• Data início e data fim (Obrigatório caso não inclua o nº da proposta)
• Status proposta
• DocumentNumber
• Nº Proposta

Também é possível consultar os status das Propostas no Painel do Cliente através da opção Consultar Onboarding.

URL Sandbox:
https://sandbox.openfinance.celcoin.dev/onboarding/v1/onboarding-proposal

Exemplo Request:

onboarding-proposal?dateFrom=2024-02-03T06:30:00&dateTo=2024-03-25T06:30:00

Exemplo Response:

{
    "body": {
        "limit": 200,
        "currentPage": 1,
        "limitPerPage": 200,
        "totalPages": 1,
        "proposal": [
            {
                "proposalId": "8cf4b988-a2f7-4f48-9075-384ca287d993", //número da proposta
                "clientCode": "8904ec29-cf6b-42ea-b8a5-b12aa58b80d2", //código cliente
                "documentNumber": "43512350800", //documento atrelado a proposta
                "status": "RESOURCE_CREATED", //status da proposta
                "proposalType": "PF", //tipo da proposta
                "createdAt": "2024-03-13T14:58:50.073Z", //data de criação da proposta
                "updatedAt": "2024-03-13T14:59:15.512Z", //data de atualização
                "documentscopys": [ //informações referente a documentoscopia da proposta
                    {
                        "documentNumber": "43512350800", //número do documento
                        "status": "APPROVED", //status da documentoscopia
                        "url": "https://cadastro.io/3214bf523eeeb818894ee575e284d8b6", //link da jornada de captura de documentos e facematch
                        "createdAt": "2024-03-13T14:58:52.957Z", //data de criação da documentoscopia
                        "updateAt": "2024-03-13T14:59:20.01Z" //data de atualização da documentoscopia
                    }
                ]
            },
            {
                "proposalId": "253942c5-dbdc-4d1f-b985-28a727d56b81", //número da proposta
                "clientCode": "60a1f00a-b72f-4e99-b7e6-6a59ccf884f7", //código cliente
                "documentNumber": "43561230800", //documento atrelado a proposta
                "status": "PENDING_DOCUMENTSCOPY", //status da proposta
                "proposalType": "PF", //tipo da proposta
                "createdAt": "2024-03-13T14:59:34.142Z", //data de criação da proposta
                "updatedAt": "2024-03-13T15:00:08.856Z", //data de atualização
                "documentscopys": [ //informações referente a documentoscopia da proposta
                    {
                        "documentNumber": "43561230800", //número do documento
                        "status": "PENDING", //status da documentoscopia
                        "url": "https://cadastro.io/444c216bd0a90e1bda19e7a06c923e78", //link da jornada de captura de documentos e facematch
                        "createdAt": "2024-03-13T14:59:34.716Z", //data de criação da documentoscopia
                        "updateAt": "2024-03-13T15:00:09.897Z" //data de atualização da documentoscopia
                    }
                ]
            },
            {
                "proposalId": "7b4bbe6d-d156-4297-b7cc-3db2ba2b5cdc", //número da proposta
                "clientCode": "4cd7589f-a3d1-45c3-8418-9dd86439432c", //código cliente
                "documentNumber": "32113434101", //documento atrelado a proposta
                "status": "RESOURCE_ERROR", //status da proposta
                "proposalType": "PF", //tipo da proposta
                "createdAt": "2024-03-13T16:58:13.215Z", //data de criação da proposta
                "updatedAt": "2024-03-13T16:59:15.771Z", //data de atualização
                "rejectedReason":{ //motivo da reprovação ao criar a conta
                  "errorCode": "CBE123", //código de erro BaaS
                  "message": "error message." //mensagem de erro
                },
                "documentscopys": [
                    {
                        "documentNumber": "91513434101", //número do documento
                        "status": "APPROVED", //status da documentoscopia
                        "url": "https://cadastro.io/444c216bd0a90e1bda19e7a06c913e98", //link da jornada de captura de documentos e facematch
                        "createdAt": "2024-03-13T16:58:14.547Z", //data de criação da documentoscopia
                        "updateAt": "2024-03-13T18:58:14.547Z" //data de atualização da documentoscopia
                    }
                ]
            
            }
        ]
    },
    "version": "1.0.0",
    "status": "SUCCESS"
}

Eventos da jornada do KYC

Evento: onboarding-backgroundcheck

Evento que informa o status do processo de Backgroundcheck.
Status inicial = Pending

//Exemplo Pending
{
  "body": {
    "proposalId": "4915eca3-ad55-467e-973b-05a773290e38",
    "clientCode": "4a3aba31-4c40-411b-a3d9-345e2d43d8ea",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS"
  },
  "createTimestamp": "2024-03-05T16:43:33Z",
  "entity": "onboarding-backgroundcheck",
  "status": "PENDING",
  "webhookId": "9f0587ee-a057-4323-a61c-b89d45acacae"
}

Em caso de aprovação ou reprovação do Backgroundcheck. Status Approved ou Reproved.

//Exemplo Aprovado
{
  "body": {
    "proposalId": "aa3a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252jj",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS"
  },
  "createTimestamp": "2024-03-05T18:02:10Z",
  "entity": "onboarding-backgroundcheck",
  "status": "APPROVED",
  "webhookId": "dce44989-dd518-4abe-85ec-9c863cf39295"
}

//Exemplo Reprovado
{
  "body": {
    "proposalId": "4915eca3-ad55-467e-973b-05a773290e38",
    "clientCode": "4a3aba31-4c40-411b-a3d9-345e2d43d8ea",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS",
    "RejectedReason":[
      "O CPF não está regular na Receita Federal.",
      "CNPJ inativo ou baixado.",
     ]
  },
  "createTimestamp": "2024-03-05T16:43:33Z",
  "entity": "onboarding-backgroundcheck",
  "status": "REPROVED",
  "webhookId": "9f0587ee-a057-4323-a61c-b89d45acacae"
}

Evento: onboarding-documentscopy

Evento que informa o status do processo de Documentoscopia.
Status inicial = Pending

//Exemplo Pending
{
  "body": {
    "proposalId": "aa3a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS",
    "urlDocumentscopy": ""
  },
  "createTimestamp": "2024-03-05T18:02:17Z",
  "entity": "onboarding-documentscopy",
  "status": "PENDING",
  "webhookId": "4de73327-ba5a-4240-85d6-8d36e3bf323d"
}

//Exemplo Processing
{
  "body": {
    "proposalId": "aa3a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS",
  },
  "createTimestamp": "2024-03-05T18:02:17Z",
  "entity": "onboarding-documentscopy",
  "status": "PROCESSING",
  "webhookId": "4de73327-ba5a-4240-85d6-8d36e3bf323d"
}

Em caso de aprovação ou reprovação da Documentoscopia. Status Approved ou Reproved.

//Exemplo Aprovado
{
  "body": {
    "proposalId": "aa1a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS"
  },
  "createTimestamp": "2024-03-06T13:19:40Z",
  "entity": "onboarding-documentscopy",
  "status": "APPROVED",
  "webhookId": "a5c339e8-4021-4ab5-980f-b0d1a28e7fad"
}

//Exemplo Reprovado
{
  "body": {
    "proposalId": "aa1a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS",
    "RejectedReason":[
      "O CPF não está regular na Receita Federal.",
      "CNPJ inativo ou baixado.",
     ]
  },
  "createTimestamp": "2024-03-06T13:19:40Z",
  "entity": "onboarding-documentscopy",
  "status": "REPROVED",
  "webhookId": "a5c339e8-4021-4ab5-980f-b0d1a28e7fad"
}

Evento: onboarding-proposal

Resultado da proposta, status Approved ou Reproved.

//Exemplo Aprovado
{
  "body": {
    "proposalId": "aa3a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS"
  },
  "createTimestamp": "2024-03-06T13:19:40Z",
  "entity": "onboarding-proposal",
  "status": "APPROVED",
  "webhookId": "412efd4d-5c8f-47fb-b837-71211956b1ef"
}

//Exemplo Reprovado
{
  "body": {
    "proposalId": "bb3a0bd5-22d3-4454-8bd7-9b9ef1b6da2d",
    "clientCode": "d12304dd-8b16-48a8-a2e9-73f1053252ee",
    "documentNumber": "48087438000185",
    "proposalType": "PJ",
    "onboardingType": "BAAS",
    "RejectedReason":[ //motivo da reprovação
      "O CPF não está regular na Receita Federal.",
      "CNPJ inativo ou baixado.",
     ]
  },
  "createTimestamp": "2024-03-06T13:19:40Z",
  "entity": "onboarding-proposal",
  "status": "REPROVED",
  "webhookId": "412efd4d-5c8f-47fb-b837-71211956b1ef"
}

Após a aprovação da proposta, uma conta com os dados respectivos será criada no BaaS e o Webhook do BaaS irá retornar as informações.

Evento: onboarding-create

Criação da conta no BaaS

O Status será sempre CONFIRMED ou ERROR caso ocorra algum erro na criação.

O onboardingId retornado nesse webhook é o mesmo dado do proposalId.

{
  "entity": "onboarding-create",
  "createTimestamp": "2022-11-04T10:35:16.0511474",
  "status": "CONFIRMED",
  "body": {
    "account": {
      "branch": "0001", //agência da conta
      "account": "30053912934", //número da conta
      "name": "Ms. Rodolfo Marvin",
      "documentNumber": "86913161280"
    },
    "onboardingId": "1e39442d-270f-4f9a-b752-9c08456c6e14", //será o mesmo dado do proposalId
    "clientCode": "1f8ff32f-2d1f-4c28-b316-8020b3d13d43",
    "createDate": "2022-11-04T10:35:16.0511474"
  }
}

Tabelas para apoio


Documentos obrigatórios

TipoDocumentos Obrigatórios
PF• RG ou CNH ou RNE
• Selfie
PJ• RG ou CNH ou RNE
• Selfie
• Contrato Social
OBS: Em caso de Representante é obrigatório a procuração de poderes.
MEI• RG ou CNH ou RNE
• Selfie

Tipo EmpresaDocumentos Pessoa Jurídica
EIRELI - Empresa Individual de Responsabilidade Limitada:Contrato social/Estatuto
EI - Empresário IndividualRequerimento de Empresário
LTDA - Sociedade LimitadaContrato social/Estatuto
SLU - Sociedade Limitada Unipessoal:Contrato social/Estatuto
S/A - Sociedade Anônima:Estatuto/Ata de assembleia de constituição

Parâmetro, possíveis valores e significado

ParâmetroPossíveis valoresSignificado
proposalTypePF ou PJTipo de proposta, se é pessoa física ou pessoa jurídica.
companyTypePJ, MEI ou METipo de empresa. (Utilizado para proposalType = PJ)
ownerTypeSOCIO, REPRESENTANTE ou DEMAIS_SOCIOSTipo de pessoa atrelado ao quadro societário.
isPoliticallyExposedPersonTrue ou FalseSe a pessoa informada na proposta é politicamente exposta.
onboardingTypeBAASTipo de Onboarding. (Por agora única opção disponível BAAS)
fileTypeCNH_FRONT, CNH_BACK, RG_FRONT, RG_BACK, RNE_FRONT, RNE_BACK, CONTRATO_SOCIAL, DOCUMENTO_FINANCEIRO, PROCURACAO_PODERES, SELFIE, COMPROVANTE_RENDA,
COMPROVANTE_RESIDENCIA, OUTROS
Tipo de arquivo enviado pelo cliente.

Entidades, possíveis status e significado do status

EntidadeStatusSignificado
Proposal StatusCreatedProposta criada.
Proposal StatusPendingPendente Backgroundcheck (Nesse Status está sendo feito o backgroundcheck).
Proposal StatusPending_DocumentscopyPendente Documentoscopia (Nesse Status está pendente a realização do envio dos documentos por parte do seu cliente via jornada).
Proposal StatusProcessing_DocumentscopyProcessando a Documentoscopia (Nesse Status seu cliente já finalizou a jornada e estamos processando as informações enviadas).
Proposal StatusReprovedProposta reprovada.
Proposal StatusResource_errorErro ao criar a conta no BaaS.
Proposal StatusResource_CreatedProposta aprovada e conta criada no BaaS.
Documentscopys StatusCreatedDocumentoscopia criada.
Documentscopys StatusPendingPendente Documentoscopia (Nesse Status está pendente a realização do envio dos documentos por parte do seu cliente via jornada).
Documentscopys StatusProcessingProcessando a Documentoscopia (Nesse Status seu cliente já finalizou a jornada e estamos processando as informações enviadas).
Documentscopys StatusReprovedDocumentoscopia reprovada.
Documentscopys StatusApprovedDocumentoscopia aprovada.

Regras Campos

CampoRegrasTamanho máximo
NameRegex = ("^([A-Za-zÀ-ÖØ-öø-ÿ' -]+)$"));120 caracteres
BusinessNameRegex = ("^([A-Za-zÀ-ÖØ-öø-ÿ,.@:&*+_<>()!?/\\\\$%\\d' -]+)$"));350 caracteres

Tabela de erros

CódigoMensagem
OBE001Token de autorização não enviado.
OBE002Token enviado está no formato incorreto.
OBE003Token inválido.
OBE004Token expirado.
OBE005Usuario não encontrado.
OBE006Cliente não possui produto Onboarding ativo.
OBE007O campo clientCode é obrigatório.
OBE008O campo documentNumber é obrigatório e deve ser um CPF válido.
OBE009O campo documentNumber é obrigatório e deve ser um CNPJ válido.
OBE010O campo phoneNumber ou contactNumber é obrigatório e deve ser um telefone válido.
OBE011O campo email é obrigatório e deve ser um email válido.
OBE012O campo motherName é obrigatório e deve ser completo.
OBE013O campo fullName é obrigatório e deve ser completo.
OBE014O campo fullName possui tamanho máximo de 120 caracteres.
OBE015socialName inválido.
OBE016O campo birthDate é obrigatório e deve ser no formato (DD-MM-YYYY).
OBE017O campo address é obrigatório.
OBE018O campo onboardingType é obrigatório e deve conter um tipo válido.
OBE019O campo postalCode é obrigatório e deve ser um CEP existente.
OBE020O campo street é obrigatório deve respeitar o limite de caracteres e conter um formato de texto válido.
OBE021Number inválido.
OBE022AddressComplement inválido.
OBE023O campo neighborhood é obrigatório e deve conter um formato de texto válido.
OBE024O campo city é obrigatório e deve conter um formato de texto válido.
OBE025O campo state é obrigatório e deve ser uma estado valido.
OBE026O campo businessEmail é obrigatório e deve ser um email válido.
OBE027O campo businessName é obrigatório e deve conter um formato de texto válido.
OBE028O campo tradingName é obrigatório deve respeitar o limite de caracteres e conter um formato de texto válido.
OBE029O campo owner.documentNumber é obrigatório e deve ser um CPF ou CNPJ válido.
OBE030O campo owner.name é obrigatório e deve ser completo.
OBE031O campo owner.email é obrigatório e deve ser um email válido.
OBE032O campo owner.address é obrigatório.
OBE033Cadastro não permitido para menores de idade.
OBE034Formato do JSON esta fora do padrão. Verifique a documentação.
OBE035Não foi possivel realizar essa operação. Tente novamente mais tarde.
OBE036CompanyType inválido.
OBE037O campo Owners deve conter um array de no mínimo 1 e máximo 10.
OBE038Owners não podem ser duplicados.
OBE039O campo businessAddress é obrigatório.
OBE040O campo ownerType é obrigatório e deve conter um valor válido.
OBE041BackgroundCheck não encontrado ou com status diferente de pendente.
OBE042Erro ao atualizar backgroundCheck.
OBE043Documentscopy não encontrado ou com status diferente de pendente.
OBE044Erro ao atualizar documentscopy.
OBE045Status da proposta inexistente verifique a documentação por favor.
OBE046Data inválida.
OBE047Limite inserido inválido. Os campos limit ou limitPerPage devem ter valores entre 1 e 200.
OBE048O campo documentNumber deve ser um CPF ou CNPJ válido.
OBE049Não foi encontrada nenhuma proposta referente aos dados informados.
OBE050A data inicial não pode ser maior que a data final.
OBE051Ao não enviar o proposalId os campos data inicial e a data final são obrigatórios.
OBE052O intervalo de dias entre a data inicial e a data final não deve ser maior que 0 dias.
OBE053O campo ownerType deve conter pelo menos um sócio ou representante
OBE054ProposalId e clientCode não enviados. Ao menos um desses parametros deve ser enviado.
OBE055Não foram encontrados arquivos para o proposalId ou clientCode informado(s).
OBE056Não foram encontradas documentoscopias referentes ao proposalId ou clientCode enviado.
OBE057Ocorreu um erro ao buscar documentos.
OBE058ClientType inválido.
OBE059SourceType inválido.
OBE060O campo clientId é obrigatório.
OBE061Source inválido.
OBE062ClientCode já vinculado a outra proposta, esse campo deve ser único por proposta.
OBE063Não foram encontrados registros para a sua requisição.
OBE064Já existe uma proposta em aberto para esse documentNumber.
OBE065O campo dateFrom é obrigatório.
OBE066O campo dateTo é obrigatório.
OBE067O campo partner.partnerName deve conter um valor válido.
OBE068O campo partner.parameter deve ser preenchido.
OBE069Ao enviar os campos partner.parameters, o campo partner.partnerName deve ser obrigatório.
OBE070Não foram encontrados dados, pois o usuário ainda não iniciou a jornada webview. Tente novamente mais tarde.
OBE071Ocorreu um erro ao consultar parceiro. Favor tentar novamente mais tarde.
OIE999Ocorreu um erro interno durante a chamada da api

Considerações finais


❗️

Envio de documentos

Não envie o documento pessoal com mais de uma página, caso mande dessa maneira, será reprovado.

Recomendamos que a URL que contém os documentos tenha um período de expiração de pelo menos 1 hora.

Para casos em que a empresa possui sócios que são pessoas jurídicas (empresas sócias), é obrigatório enviar o contrato social dessas empresas sócias.
Você pode:

• Anexar o contrato social da empresa sócia separadamente, utilizando o tipo de arquivo “OUTROS”.
• Agrupar todos os documentos em um único PDF no envio do contrato social.

Aceitamos os formatos: PDF, PNG, JPEG

🚧

Requisição individual por proposta

Atualmente não é possível criar diversas contas em uma única requisição, em casos desses é necessário enviar em diferentes requisições.

Quantidade de propostas por documentos
Temos uma validação onde é permitido criar 1 proposta por documento a cada 24 horas. Logo não é possível criar várias propostas para o mesmo documento enquanto a anterior não estiver finalizada e não tenha passado as 24 horas.

Não temos um limitante de aberturas de propostas, apenas se atente todas as regras e orientações descritas nessa documentação.

📘

Resultado das propostas

Em produção, o resultado das análises, tanto da PF quanto da PJ, pode levar até 48horas úteis para ser concluída.

❗️

Envio categorizado corretamente

Importante realizar o envio correto do tipo de empresa PJ, caso seja realizado um envio incorreto. Exemplo: deveria ser enviado MEI porém foi enviado PJ, isso pode fazer com que ocorra uma reprovação e também será cobrado o valor do tipo enviado.

Para casos divergentes de Natureza Jurídica "Empresário Individual" enviar como tipo de empresa PJ.

☑️

Validações realizadas

Background Check
• Consulta de CPF/CNPJ na Receita Federal;
• Ações judiciais da Empresa/Pessoa (Processos criminais, trabalhistas, etc);
• Lista de sanções (Nacional: COAF, CEAF, CNEP, MTE, PPE, TSE, CEIS, CEPIM, TCU, Conselho nacional de Justiça. Internacional: EU, FBI, GOV UK, INTERPOL, OFAC, UNSC.);
• Exposição e perfil na mídia;
• Lista PEP;

Documentoscopia
• OCR do documento enviado (Validação dos dados enviados x encontrados na receita x dados do documento enviado);
• Pericia Documental/Documentoscopia;
• Facematch (Validação entre Selfie x Foto documento físico);
• Análise do contrato social e procuração de poderes (Validação da autenticidade do documento e QSA);

👍

Importante

Documentação

PF: Aceitamos documentos físicos originais RG, CNH e RNE (não aceitamos cópias autenticadas) e CNH Digital (imprescindível que tenha o QR Code). (Não aceitamos RG Digital).
PJ: Contrato Social ou em casos de clientes MEI, a Certificado da Condição do Microempreendedor Individual (CCMEI) + documentação PF do sócio.

Webhooks

Em caso de não receber o webhook é possível realizar uma chamada para receber o reenvio, para mais informações acesse a documentação de reenvio clicando aqui.

Motivos de Reprovação

O campo RejectedReason nos Webhooks quando a proposta é reprovada, informará o motivo da reprovação.

Código Certta/CAFDescriçãoRejectedReason
liveness_approvedFaz uma verificação anti-spoofing na selfie enviada. O que aciona essa regra é ser detectado o spoofing.Inconsistência nos dados de biometria facial.
has_documentVerifica se nas imagens enviadas existe um documento.Não identificamos um documento válido nas imagens enviadas.
is_readableVerifica se as imagens enviadas são legíveis.As imagens enviadas não estão legíveis.
is_cnhVerifica se o documento enviado é uma CNH.Documento informado como tipo CNH porém não foi identificado como CNH.
has_cpfVerifica se foi encontrado CPF no documento ou informado manualmente.Não possui CPF identificado no documento ou informado manualmente.
facematch_has_selfie_photoVerifica o envio de selfie.Foto de selfie não enviada.
facematch_is_equalVerifica a similaridade entre documento e selfie.Cliente reprovado por Facematch, divergência entre Selfie x Foto documento enviado.
cpf_queryVerifica se foi possível consultar o CPF na Receita Federal.Não foi possível consultar o CPF na Receita Federal.
cpf_error_codeVerifica a regularidade do CPF.CPF irregular.
cpf_equal_nameVerifica se o nome encontrado na execução (parâmetro/OCR) é o mesmo da base de dados oficial.O nome na execução (parâmetro/OCR) não condiz com o cadastro da Receita Federal.
cpf_has_not_deadVerifica se o portador do CPF se encontra em situação de óbito.A pessoa está em situação de óbito.
documentscopy_availableVerifica se a documentoscopia está disponível.Documento reprovado na perícia documental.
documentscopy_approvedVerifica se o documento foi aprovado na perícia documental.Documento reprovado na perícia documental.
data_and_document_are_equalVerifica a divergência entre informações coletadas e informadas manualmente.Dados informados divergentes dos encontrados no documento.
has_no_processesVerifica se o CPF/CNPJ está vinculado a processos.Restrição identificada em análise de histórico de processos.
has_no_defendant_processesVerifica se o CPF/CNPJ está vinculado a processos como réu.Restrição identificada em análise de histórico de processos.
has_no_criminal_processesVerifica se o CPF/CNPJ está vinculado a processos criminais.Restrição identificada em análise de histórico de processos.
has_no_media_exposureVerifica se o portador do CPF possui exposição na mídia.Perfil não aderente à política de riscos regulatórios
over_18Verifica se o portador do CPF é maior de idade (18 anos).Portador do documento é menor de idade.
cpf_nullVerifica se a fonte dados básicos está retornando valores.Não foram encontrados dados do CPF informado.
has_no_pepVerifica se o portador do CPF ou CNPJ possui exposição política.Perfil não aderente à política de riscos regulatórios
cpf_query_auxVerifica se foi possível consultar o CPF na Receita Federal.Não foi possível consultar o CPF na Receita Federal.
face_and_birthdate_compareVerifica se a idade do portador do CPF corresponde com a idade estimada identificada na selfie.Cliente reprovado por Facematch, idade estimada do portador do documento x Selfie capturada.
has_no_sanctionsVerifica se não foram encontradas sanções em listas restritivas.Perfil não aderente à política de riscos regulatórios
valid_issue_dateVerifica se a data de emissão do documento é válida.Data de emissão do documento inválida.
valid_cpf_numberVerifica se o número de CPF é válido.Número de CPF inválido, ilegível ou não informado.
valid_cnpj_numberVerifica se o número de CNPJ é válido.CNPJ informado inválido.
authentic_cnpj_numberVerifica se o número de CNPJ é autêntico.Número de CNPJ inautêntico.
valid_rg_numberVerifica se o número do RG é válido.Número de RG inválido ou ilegível.
cpf_is_legal_representativeVerifica se o portador do CPF é representante legal da empresa.CPF do portador informado divergente do QSA da empresa.
parameters_and_document_are_equalVerifica a divergência entre os dados do documento e informados manualmente.Dados divergentes. Verifique se os documentos e os dados enviados são do mesmo CPF.
has_documentsVerifica se possui documentação.Não recebemos uma documentação válida.
ocr_equals_parametersVerifica se os dados informados nos parâmetros são iguais aos lidos pelo OCR.Os dados informados nos parâmetros diferem dos dados lidos no OCR.
authentic_documentVerifica se o documento foi dado como autêntico na biometria e/ou documentoscopia. O que invalida a regra é reprovarmos o documento por ser inautêntico.Documento reprovado na perícia documental.
company_qsa_data_compatibilityVerifica se os dados PF condizem com os dados do quadro societário da empresa.Foram encontradas divergências entre os dados da empresa e dos sócios informados.
qsa_consistentVerifica se o QSA informado em attributes é igual ao obtido a partir da consulta ao Serasa.CPF do portador informado divergente do QSA da empresa.
is_cpf_regularVerifica a regularidade do CPF.O CPF não está regular na Receita Federal.
cpf_is_not_deadVerifica se o portador do CPF se encontra em situação de óbito.A pessoa está em situação de óbito.
is_not_passportVerifica se o documento enviado não é um passaporte.O documento enviado é um passaporte.
is_not_pendant_of_regularizationVerifica se o CPF está com situação pendente de regularização.CPF consta como pendente de regularização junto à Receita Federal.
is_not_nullVerifica se o CPF consta como nulo junto à Receita Federal.CPF consta como nulo junto à Receita Federal.
does_not_exist_on_receita_federal_databaseVerifica se encontra o CPF na Receita Federal.CPF não encontrado na base de dados da Receita Federal.
cnh_has_valid_dateVerifica se a data de validade da CNH não está expirada.Data de validade da CNH inválida ou ilegível.
active_cnpj_numberVerifica se o CNPJ está ativo na Receita Federal.CNPJ inativo ou baixado.
valid_cnh_registration_numberVerifica se o número do registro da CNH é válido.Número da CNH inválido.
valid_rg_issue_authorityVerifica se o órgão emissor do RG é válido.Órgão emissor do RG inválido ou ilegível.
valid_issue_stateVerifica se a UF do órgão emissor do documento é válida.UF do órgão emissor inválida ou ilegível.
parameters_and_document_undefined_or_equalVerifica inexistência ou divergência entre os dados do documento e informados manualmente.Dados divergentes ou inexistentes. Verifique se os documentos e os dados enviados são do mesmo CPF.
has_valid_documentsVerifica se possui documentação válida.Documentação enviada inválida.
minimum_company_lifetimeVerifica se o tempo de vida da empresa é maior que o mínimo exigido.Empresa recém constituída
has_no_pep_or_sanctions_compliance_ownersVerifica se possui PEPs ou sanções nos sócios de uma empresa.Inconformidade identificada nos sócios.
is_company_lifetime_greater_than_six_monthsVerifica se o tempo de vida de uma empresa de SC é maior que 6 meses.Empresa recém constituída
has_selfie_errorVerifica se foi retornado algum erro relacionado ao processamento da selfie.Selfie enviada com baixa qualidade.
is_not_aliveVerifica se o CPF é de titular falecido.Titular falecido.
is_not_cancelledVerifica se o CPF consta como cancelado junto à Receita Federal.CPF consta como cancelado junto à Receita Federal.
is_not_suspendedVerifica se o CPF consta como suspenso junto à Receita Federal.CPF consta como suspenso junto à Receita Federal.
invalid_range_agesVerifica se o portador do CPF possui idade dentro dos intervalos configurados.Portador do documento está fora do intervalo de idade permitido.
qsa_pj_data_not_emptyVerifica o quadro societário divulgado pela Receita FederalA empresa consultada não possui sócios.
first_and_last_name_similarityVerifica a similaridade entre a união do primeiro e último nome enviado nos parâmetros em comparação com a união do primeiro nome e cada sobrenome da fonte.Nome informado no parâmetro divergente dos dados encontrados em fontes oficiais.
government_document_approvedVerifica se foi possível validar a face da pessoa com base em informações oficiais.Não identificamos a face da pessoa em bases de informações oficiais.
is_not_ctpsVerifica se o documento não é uma carteira de trabalho.Documento é uma carteira de trabalho.
government_document_availableVerifica se foi possível encontrar a face da pessoa em bases de dados oficiais.Não identificamos a face da pessoa em bases de dados oficiais.
is_literateVerifica se a pessoa é alfabetizada.Pessoa não alfabetizada.
over_16Verifica se o portador do CPF possui idade superior a 16 anos.Idade inferior a 16 anos.
rg_has_cpfVerifica se o RG possui um cpf.O RG enviado não possui cpf.
document_is_knownIdentifica se o documento não é do tipo outros.Documento não aceito pela política de compliance.
is_not_expired_passportVerifica se o passaporte apresentado está dentro da validade.O passaporte está fora da validade.
rg_issue_less_than_25Verifica se o RG foi emitido a menos de 25 anos.O RG foi emitido a mais de 25 anos.
has_at_least_one_cnaeA empresa possui ao menos um CNAE válido.Identificamos ao menos um CNAE que não aceitamos.
teste_mockMotivo de rejeição para casos que forem testes mockados.Transação não autorizada.
document_issue_less_than_10Faz uma verificação se o documento enviado foi emitido há mais de 10 anos.O documento foi emitido a mais de 10 anos.
has_at_least_one_legal_natureFaz uma verificação se de fato a empresa informada é MEI/ME.Natureza Legal divergente da informada.
proposal_expiredProposta reprovada por decurso de prazo, em razão da não apresentação da documentação necessária no período estipulado.Proposta reprovada por decurso de prazo, em razão da não apresentação da documentação necessária no período estipulado.
is_passportVerifica se o documento enviado é um passaporte.Documento enviado não corresponde a um passaporte.


Os motivos de reprovação não são fixos e podem surgir novos motivos ou alteração na descrição dos mesmos.

ClientCode e ProposalId

ClientCode é um identificador único por transação criado por você.
ProposalId é um identificador único que geramos após a criação da proposta, esse identificador será utilizado para realizar consultas.Recomendamos você guardar esses campos.

Consultar Propostas no Painel do Cliente

É possível consultar os status das Propostas no Painel do Cliente através da opção Consultar Onboarding.

Boas Práticas

Evite a criação de "polling" com períodos curtos nos Endpoints de consulta, o fluxo de onboarding é todo via webhook orientando sempre as alterações de status e em qual etapa do processo a proposta se encontra.

🚧

Fluxo sujeito a alinhamento interno com time Celcoin