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

Campo

Tipo

Validaçã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

Email

string (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' -]+)$"

owner

Array de Objetos

documentNumber

string (14)

Validação null ou empty e regex - "^[0-9]{14}$"

fullName

string (200)

Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"

phoneNumber

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

email

string (100)

Validação null ou empty e regex - "^[a-z0-9.!#$&'*+/=?^_`{

motherName

string (100)

Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"

socialName

string (200)

Validação null ou empty e regex - "^[A-Za-záàâãéèêíïóôõöúçñÁÀÂÃÉÈÊÍÏÓÔÕÖÚÇÑ,.:+_<>?@#$()!%&*'’/\\-°ª -]+$"

birthDate

string (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}$"

isPoliticallyExposedPerson

boolean

address

objeto

postalCode

string (8)

Validação null ou empty e regex - "([\d]{8})"

street

string (200)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

number

string (20)

Validação null ou empty e regex "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

addressComplement

string (256)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

neighborhood

string (200)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

city

string (100)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

state

string (2)

Validação null ou empty e validação lista de estados brasileiros

longitude

string (100)

Validação null ou empty e regex - "^[0-9,+. -]+$"

latitude

string (100)

Validação null ou empty e regex - "^[0-9,+. -]+$"

businessAddress

Objeto

postalCode

string (8)

Validação null ou empty e regex - "([\d]{8})"

street

string (200)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

number

string (20)

Validação null ou empty e regex "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

addressComplement

string (2566)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

neighborhood

string (200)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

city

string (100)

Validação null ou empty e regex - "^[A-Za-zÀ-úüÜ&0-9,.:+_<>?@#$()!%&* '/\\-°ºª-]+$"

state

string (2)

Validação null ou empty e validação lista de estados brasileiros

longitude

string (100)

Validação null ou empty e regex - "^[0-9,+. -]+$"

latitude

string (100)

Validação null ou empty e regex - "^[0-9,+. -]+$"

financialOwnerDetails

Objeto

ownerDeclaredIncome

string

Se campo válido("ODIB01", "ODIB02", "ODIB03", "ODIB04", "ODIB05")

ownerPresumedIncome

string

Se campo válido("OPIB01", "OPIB02", "OPIB03", "OPIB04", "OPIB05")

ownerDeclaredRevenue

string

Se campo válido("ODRB01", "ODRB02", "ODRB03", "ODRB04", "ODRB05)

ownerPresumedRevenue

string

Se campo válido("OPRB01", "OPRB02", "OPRB03", "OPRB04", "OPRB05)

financialCompanyDetails

Objeto

declaredCompanyRevenue

string

Se campo válido("DCRB01", "DCRB02", "DCRB03", "DCRB04", "DCRB05

presumedCompanyRevenue

string

Se 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 +