Criar Conta - Apenas Core Banking

Essa funcionalidade permite que os clientes Core Banking da Celcoin consigam realizar a abertura de uma conta pagamento pré-paga para seus clientes.

❗️

Fluxo somente disponível para clientes Core Banking. Nesse cenário, não é necessário enviar documentação via endpoint para abertura de contas.

  1. Conta PF
  2. Conta PJ

1. Conta PF

Passos para Integrar

  1. Realizar autenticação na API - [API Reference]
  2. Criar Conta PF na API - [API Reference]
  3. Salvar onboardingId.
  4. Receber o Webhook com as informações da Conta criada.

Caso seja necessário você pode consultar o status da conta manualmente.


Fluxo de integração

Criar Conta PF

JSON de exemplo

{
  "clientCode": "123456",
  "accountOnboardingType": "BANKACCOUNT",
  "documentNumber": "33333333333",
  "phoneNumber": "+5512999999999",
  "email": "[email protected]",
  "motherName": "Celia Silva",
  "fullName": "Carlos Silva",
  "socialName": "Carlos",
  "birthDate": "31-12-1984",
  "address": {
    "postalCode": "25100222",
    "street": "Rua Amazonas",
    "number": "10",
    "addressComplement": "Em frente ao parque.",
    "neighborhood": "Maravilhas",
    "city": "São Paulo",
    "state": "SP",
    "longitude": "-46.6488",
    "latitude": "-23.6288"
  },
  "financialDetails": {
    "declaredIncome": "DINP02", // Renda declarada
    "presumedIncome": "PINP02", // Renda presumida
    "occupation": "ONP24", // Profissão
    "netWorth": "NWNP02" // Patrimônio
  },
  "isPoliticallyExposedPerson": false,
  "cadastraChavePix": false
}

cURL da chamada

curl --location --request POST 'https://sandbox.openfinance.celcoin.dev/baas-onboarding/v1/account/natural-person/create' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}
--data-raw '{
  "clientCode": "8237987978",
  "accountOnboardingType": "BANKACCOUNT",
  "documentNumber": "70578847027",
  "phoneNumber": "+5512981175554",
  "email": "[email protected]",
  "motherName": "Nome Sobrenome",
  "fullName": "Nome Sobrenome",
  "socialName": "Nome",
  "birthDate": "31-12-1984",
  "address": {
    "postalCode": "12211400",
    "street": "Av Paulista",
    "number": "313",
    "addressComplement": "Em frente ao parque.", 
    "neighborhood": "Bairro",
    "city": "São Paulo",
    "state": "SP",
    "longitude": "-46.6488",
    "latitude": "-23.6288"
    },
  "financialDetails": {
    "declaredIncome": "DINP02", // Renda declarada
    "presumedIncome": "PINP02", // Renda presumida
    "occupation": "ONP24", // Profissão
    "netWorth": "NWNP02" // Patrimônio
  },
  "isPoliticallyExposedPerson": false
}'

📘

Informações financeiras

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

Exemplo de retorno

👍

Sucesso 200

{
  "version": "1.0.0",
  "status": "PROCESSING",
  "body": {
    "onboardingId": "39c8e322-9192-498d-947e-2daa4dfc749e"
  }
}

ClientCode é um identificador único por transação criado por você e o onboardingId é campo que você utilizará para realizar a consulta de status da conta manualmente, Recomendamos você guardar esses campos.

Error 400

{
  "version": "1.0.0",
  "status": "ERROR",
  "error": {
    "errorCode": "CBE001",
    "message": "ClientCode é obrigatório"
  }
}

Tabela de errorCode

CodeMessage
CBE001ClientCode é obrigatório.
CBE002accountOnboardingType deve ser do tipo BANKACCOUNT OU GRAPHICACCOUNT.
CBE003documentNumber é obrigatório e deve ser um CPF válido.
CBE004phoneNumber ou contactNumber é obrigatório e deve ser um telefone válido.
CBE005email é obrigatório e deve ser um email válido.
CBE006motherName é obrigatório e deve ser completo.
CBE007fullName é obrigatório e deve ser completo.
CBE008birthDate é obrigatório e deve ser no formato (DD-MM-YYYY)
CBE009address é obrigatório.
CBE010postalCode é obrigatório e deve ser um CEP existente.
CBE011street é obrigatório e deve respeitar os limites de caracteres.
CBE012number inválido.
CBE013neighborhood é obrigatório.
CBE014city é obrigatório e deve ser uma cidade valida.
CBE015state é obrigatório e deve ser uma estado valido.
CBE016latitude inválido.
CBE017longitude inválido.
CBE022Já existe uma conta vinculada a este CPF.
CBE246Não foi possível processar recuperar o Tenant com os parametros informados
CBE669Cliente com restrição no BC Protege+ para abertura de conta. Necessário retirar a restrição e tentar novamente.

Webhook de Retorno

{
  "entity": "onboarding-create",
  "createTimestamp": "2022-11-04T10:35:16.0511474",
  "status": "CONFIRMED",
  "body": {
    "account": {
      "branch": "0001",
      "account": "30053912934",
      "name": "Ms. Rodolfo Marvin",
      "documentNumber": "86913161280"
    },
    "onboardingId": "5e39442d-270f-4f9a-b752-9c08456c6e14",
    "clientCode": "4f8ff32f-2d1f-4c28-b316-8020b3d13d43",
    "createDate": "2022-11-04T10:35:16.0511474"
  }
}

Verificar Status da Conta

cURL da Chamada:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/baas-onboarding/v1/account/check?onboardingId=6174ec78-3de2-4add-85db-e56aace8b5ef' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}'

Modelo de Retorno

{
  "version": "1.0.0",
  "status": "CONFIRMED",
  "body": {
    "onboardingId": "39c8e322-9192-498d-947e-2daa4dfc749e",
    "clientCode": "123456",
    "createDate": "2022-12-31T00:00:00.0000000+00:00",
    "entity": "account-create",
    "account": {
      "branch": "1234",
      "account": "123456",
      "name": "Fernanda Aparecida da Silva",
      "documentNumber": "47855748778"
    }
  }
}

Status da abertura de conta

RetornoDescrição
PROCESSINGAbertura de conta ainda em processamento.
CONFIRMEDAbertura de conta finalizada com sucesso.
ERRORAbertura de conta finalizada com erro, favor verificar o objeto 'error' do payload.

2.Conta PJ

Passos para Integrar

  1. Realizar autenticação na API - [API Reference]
  2. Criar Conta PJ na API - [API Reference]
  3. Salvar onboardingId.
  4. Receber o Webhook com as informações da Conta criada.

Caso seja necessário você pode consultar o status da conta manualmente.


Fluxo de integração

Criar Conta PJ

JSON de exemplo

{
  "clientCode": "123456",
  "accountOnboardingType": "BANKACCOUNT",
  "documentNumber": "22000123000155",
  "contactNumber": "+5512999999999",
  "businessEmail": "[email protected]",
  "businessName": "IP Pagamentos",
  "tradingName": "IPay",
  "owner": [
    {
      "documentNumber": "12345678901",
      "fullName": "Carlos Silva",
      "phoneNumber": "+5512999999999",
      "email": "[email protected]",
      "motherName": "Celia Silva",
      "socialName": "Carlos",
      "birthDate": "31-12-1984",
      "address": {
        "postalCode": "12211400",
        "street": "Rua Amazonas",
        "number": "10",
        "addressComplement": "Em frente ao parque.",
        "neighborhood": "Maravilhas",
        "city": "São Paulo",
        "state": "SP",
        "longitude": "-46.6488",
        "latitude": "-23.6288"
      },
      "financialOwnerDetails": {
        "ownerDeclaredIncome": "ODIB01", // Renda declarada em caso de sócio PF
        "ownerPresumedIncome": "OPIB05", // Renda presumida em caso de sócio PF
        "ownerDeclaredRevenue": "ODRB06", // Renda declarada em caso de sócio PJ
        "ownerPresumedRevenue": "OPRB01" // Renda presumida em caso de sócio PJ
      },
      "isPoliticallyExposedPerson": false
    }
  ],
  "businessAddress": {
    "postalCode": "12211400",
    "street": "Rua das Andorinhas",
    "number": "313",
    "addressComplement": "Em frente ao parque.",
    "neighborhood": "Rua das Maravilhas",
    "city": "São Paulo",
    "state": "SP",
    "longitude": "-46.6488",
    "latitude": "-23.6288"
  },
  "financialCompanyDetails": {
    "declaredCompanyRevenue": "DCRB01", // Faturamento declarado da empresa
    "presumedCompanyRevenue": "DCRB01" // Faturamento presumido da empresa
  },
  "cadastraChavePix": false
}

Tabela descritiva com os campos do body

CampoTipoValidação
clientCode*string (200)
accountOnboardingType*string (100)Se campo válido("BANKACCOUNT")
documentNumber*string (14)Validação null ou empty e regex - "^[0-9]{14}$"
contactNumber*string (14)Validação null ou empty e regex - "^+[1-9][0-9]\d{1,14}$"
padrão internacional E.164 para números do Brasil
Emailstring (100)Validação null ou empty e regex - "^+[1-9][0-9]\d{1,14}$^[a-z0-9.!#$&'*+/=?^_`{
businessName*string (350)Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ0-9,.:+_<>?@#$()!%&*'/\\-°ª -]+$"
tradingName*string (120)Validação null ou empty e regex - "^([A-Za-zÀ-ÖØ-öø-ÿ,.@:&+_<>()!?/\$%\d' -]+)$"
ownerArray de Objetos
documentNumberstring (14)Validação null ou empty e regex - "^[0-9]{14}$"
fullNamestring (200)Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"
phoneNumberstring (14)Validação null ou empty e regex - "^+[1-9][0-9]\d{1,14}$"
padrão internacional E.164 para números do Brasil
emailstring (100)Validação null ou empty e regex - "^[a-z0-9.!#$&'*+/=?^_`{
motherNamestring (100)Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"
socialNamestring (200)Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"
birthDatestring (10)Validação null ou empty e regex - "^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[012])-(19|20)\d{2}$"
isPoliticallyExposedPersonboolean
addressobjeto
postalCodestring (8)Validação null ou empty e regex - "([\d]{8})"
streetstring (200)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
numberstring (20)Validação null ou empty e regex "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
addressComplementstring (256)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
neighborhoodstring (200)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
citystring (100)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
statestring (2)Validação null ou empty e validação lista de estados brasileiros
longitudestring (100)Validação null ou empty e regex - "^[0-9,+. -]+$"
latitudestring (100)Validação null ou empty e regex - "^[0-9,+. -]+$"
businessAddressObjeto
postalCodestring (8)Validação null ou empty e regex - "([\d]{8})"
streetstring (200)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
numberstring (20)Validação null ou empty e regex "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
addressComplementstring (2566)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
neighborhoodstring (200)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
citystring (100)Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"
statestring (2)Validação null ou empty e validação lista de estados brasileiros
longitudestring (100)Validação null ou empty e regex - "^[0-9,+. -]+$"
latitudestring (100)Validação null ou empty e regex - "^[0-9,+. -]+$"
financialOwnerDetailsObjeto
ownerDeclaredIncomestringSe campo válido("ODIB01", "ODIB02", "ODIB03", "ODIB04", "ODIB05")
ownerPresumedIncomestringSe campo válido("OPIB01", "OPIB02", "OPIB03", "OPIB04", "OPIB05")
ownerDeclaredRevenuestringSe campo válido("ODRB01", "ODRB02", "ODRB03", "ODRB04", "ODRB05)
ownerPresumedRevenuestringSe campo válido("OPRB01", "OPRB02", "OPRB03", "OPRB04", "OPRB05)
financialCompanyDetailsObjeto
declaredCompanyRevenuestringSe campo válido("DCRB01", "DCRB02", "DCRB03", "DCRB04", "DCRB05
presumedCompanyRevenuestringSe campo válido("PCRB01", "PCRB02", "PCRB03", "PCRB04", "PCRB05

🚧

Campos com "*" são obrigatórios na chamada.

cURL da chamada

curl --request POST \
     --url https://sandbox.openfinance.celcoin.dev/baas-onboarding/v1/account/business/create \
     --header 'accept: application/json' \
     --header 'authorization: Bearer {{token}}' \
     --header 'content-type: application/json' \
     --data '
{
  "clientCode": "123456",
  "accountOnboardingType": "BANKACCOUNT",
  "documentNumber": "22000123000155",
  "contactNumber": "+5512999999999",
  "businessEmail": "[email protected]",
  "businessName": "IP Pagamentos",
  "tradingName": "IPay",
  "owner": [
    {
      "documentNumber": "12345678901",
      "fullName": "Carlos Silva",
      "phoneNumber": "+5512999999999",
      "email": "[email protected]",
      "motherName": "Celia Silva",
      "socialName": "Carlos",
      "birthDate": "31-12-1984",
      "address": {
        "postalCode": "12211400",
        "street": "Rua Amazonas",
        "number": "10",
        "addressComplement": "Em frente ao parque.",
        "neighborhood": "Maravilhas",
        "city": "São Paulo",
        "state": "SP",
        "longitude": "-46.6488",
        "latitude": "-23.6288"
      },
      "financialOwnerDetails": {
        "ownerDeclaredIncome": "ODIB01", // Renda declarada em caso de sócio PF
        "ownerPresumedIncome": "OPIB05", // Renda presumida em caso de sócio PF
        "ownerDeclaredRevenue": "ODRB06", // Renda declarada em caso de sócio PJ
        "ownerPresumedRevenue": "OPRB01" // Renda presumida em caso de sócio PJ
      },
      "isPoliticallyExposedPerson": false
    }
  ],
  "businessAddress": {
    "postalCode": "12211400",
    "street": "Rua das Andorinhas",
    "number": "313",
    "addressComplement": "Em frente ao parque.",
    "neighborhood": "Rua das Maravilhas",
    "city": "São Paulo",
    "state": "SP",
    "longitude": "-46.6488",
    "latitude": "-23.6288"
  },
  "financialCompanyDetails": {
    "declaredCompanyRevenue": "DCRB01", // Faturamento declarado da empresa
    "presumedCompanyRevenue": "DCRB01" // Faturamento presumido da empresa
  },
  "cadastraChavePix": false
}

📘

Informações financeiras

Para informações sobre o correto preenchimento dos campos relativos aos objetos "owner.financialDetails" e "financialCompanyDetails", acesse nossa documentação complementar: Informações Financeiras.

Exemplo de retorno

👍

Sucesso 200

{
  "version": "1.0.0",
  "status": "PROCESSING",
  "body": {
    "onboardingId": "39c8e322-9192-498d-947e-2daa4dfc749e"
  }
}

O onboardingId é campo que você utilizará para realizar a consulta de status da conta manualmente, Recomendamos você guardar esse campo.

Error 400

{
  "version": "1.0.0",
  "status": "ERROR",
  "error": {
    "errorCode": "CBE001",
    "message": "ClientCode é obrigatório"
  }
}

Tabela de errorCode

CodeMessage
CBE001ClientCode é obrigatório.
CBE002accountOnboardingType deve ser do tipo BANKACCOUNT OU GRAPHICACCOUNT.
CBE004phoneNumber ou contactNumber é obrigatório e deve ser um telefone válido.
CBE008birthDate é obrigatório e deve ser no formato (DD-MM-YYYY)
CBE010postalCode é obrigatório e deve ser um CEP existente.
CBE011street é obrigatório e deve respeitar os limites de caracteres.
CBE013neighborhood é obrigatório.
CBE014city é obrigatório e deve ser uma cidade valida.
CBE015state é obrigatório e deve ser uma estado valido.
CBE018documentNumber é obrigatório e deve ser um CNPJ válido.
CBE019businessName é obrigatório e deve ser completo.
CBE020tradingName é obrigatório e deve ser completo.
CBE023Já existe uma conta vinculada a este e-mail.
CBE024Já existe uma conta vinculada a este telefone.
CBE025Já existe uma conta vinculada a este CNPJ.
CBE033owner.documentNumber é obrigatório e deve ser um CPF ou CNPJ válido.
CBE034owner.name é obrigatório e deve ser completo.
CBE036owner.email é obrigatório e deve ser um email válido.
CBE037owner.address é obrigatório.
CBE168businessEmail é obrigatório e deve ser um email válido.
CBE246businessAddress é obrigatório.
CBE669Cliente com restrição no BC Protege+ para abertura de conta. Necessário retirar a restrição e tentar novamente

Webhook de Retorno

{
  "entity": "onboarding-create",
  "createTimestamp": "2022-11-04T10:35:16.0511474",
  "status": "CONFIRMED",
  "body": {
    "account": {
      "branch": "0001",
      "account": "30053912934",
      "name": "Ms. Rodolfo Marvin",
      "documentNumber": "86913161280"
    },
    "onboardingId": "5e39442d-270f-4f9a-b752-9c08456c6e14",
    "clientCode": "4f8ff32f-2d1f-4c28-b316-8020b3d13d43",
    "createDate": "2022-11-04T10:35:16.0511474"
  }
}

Verificar Status da Conta

cURL da Chamada:

curl --location --request GET 'https://sandbox.openfinance.celcoin.dev/baas-onboarding/v1/account/check?onboardingId=6174ec78-3de2-4add-85db-e56aace8b5ef' \
--header 'accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{token}}'

Modelo de Retorno

{
  "version": "1.0.0",
  "status": "CONFIRMED",
  "body": {
    "onboardingId": "39c8e322-9192-498d-947e-2daa4dfc749e",
    "clientCode": "123456",
    "createDate": "2022-12-31T00:00:00.0000000+00:00",
    "entity": "account-create",
    "account": {
      "branch": "1234",
      "account": "123456",
      "name": "Fernanda Aparecida da Silva",
      "documentNumber": "47855748778"
    }
  }
}

Status da abertura de conta

RetornoDescrição
PROCESSINGAbertura de conta ainda em processamento.
CONFIRMEDAbertura de conta finalizada com sucesso.
ERRORAbertura de conta finalizada com erro, favor verificar o objeto 'error' do payload.


📘

Importante:

Antes da abertura de qualquer conta, a Celcoin realizará automaticamente uma consulta ao BC Protege+ para verificar se há restrição ativa associada ao CPF ou CNPJ informado.

Caso seja identificada uma restrição ativa, o processo de abertura de conta será interrompido. Nessa situação, será devolvido o seguinte código de erro: CBE669 - Cliente com restrição no BC Protege+ para abertura de conta. Necessário retirar a restrição e tentar novamente.

Para prosseguir com a abertura de conta, o titular do CPF ou CNPJ deverá remover a restrição diretamente nos canais oficiais do Banco Central (https://www.bcb.gov.br/meubc) e, posteriormente, realizar uma nova tentativa.

Para mais informações acesse nossa documentação complementar: BC PROTEGE +


🗨️

Nos casos em que o titular da conta (Pessoa Física) ou um dos sócios da empresa (Pessoa Jurídica) não possuir a informação de nome da mãe, o campo de filiação deverá ser preenchido conforme consta no documento oficial apresentado (RG, CIN ou Certidão de Nascimento).

Nesses cenários, poderão ser utilizadas descrições como: “Ignorado”, “Desconhecido” ou “Não Declarado”

É importante que o preenchimento seja realizado exatamente conforme apresentado no documento oficial da pessoa vinculada ao cadastro.