Consentimento para compartilhamento de dados

Esta documentação descreve os procedimentos e padrões para a criação de consentimentos de compartilhamento de dados, permitindo que clientes (PF e PJ) autorizem o acesso às suas informações financeiras de forma segura.

O que é um Consentimento de Dados?

O Consentimento é o pilar central do Open Finance. É a manifestação livre, informada e inequívoca pela qual o cliente (detentor dos dados) autoriza o compartilhamento de seus dados ou a iniciação de pagamentos entre instituições. No contexto de recepção de dados, o consentimento define:Quem está compartilhando (CPF/CNPJ).Quais dados serão compartilhados (Permissões).Por quanto tempo (Data de expiração, limitada a 12 meses).Para qual finalidade (Uso específico dos dados).


Tipos de Dados e Permissões

As permissões são agrupadas em clusters de dados que o cliente pode escolher compartilhar.

Abaixo, os principais tipos de dados consumíveis no Open Finance Brasil:

Categorias de Dados

Dados Cadastrais: Informações de identificação (nome, CPF/CNPJ, endereços) e dados de contato.

Informações de Contas: Saldos, limites e extratos de contas de depósito à vista, poupança e pagamento.

Cartão de Crédito: Limites, faturas e transações de cartões.

Operações de Crédito: Empréstimos, financiamentos, adiantamentos de recebíveis e direitos creditórios.

Investimentos: Fundos, rendas fixas, previdência e outros ativos.

Permissões de um consentimento

As permissões de um consentimento são o escopo de acesso que o usuário concede à instituição receptora. No Open Finance, o cliente escolhe exatamente quais categorias de informações ele aceita compartilhar.

No modelo brasileiro, essas permissões são padronizadas e agrupadas em clusters. Isso significa que, ao solicitar acesso ao saldo, a API automaticamente requer permissões de um grupo específico para garantir que os dados complementares também estejam disponíveis.

Tabela de Agrupamento de Permissões (Open Finance Brasil)

Categoria de DadosAgrupamentoPermissions (API)Seleção de Recurso
Dados Cadastrais (PF/PJ)Informações CadastraisCUSTOMER_MANAGE_REGISTRATION_DATA_READ, RESOURCES_READNão
Dados Cadastrais (PF/PJ)Informações ComplementaresCUSTOMER_BUSINESS_IDENTIFICATION_READ, CUSTOMER_BUSINESS_QUALIFICATION_READ, RESOURCES_READNão
ContasDados de Saldo e LimitesACCOUNTS_READ, ACCOUNTS_BALANCES_READ, RESOURCES_READSim
ContasDados de TransaçõesACCOUNTS_READ, ACCOUNTS_TRANSACTIONS_READ, RESOURCES_READSim
Cartão de CréditoLimites e FaturasCREDIT_CARDS_ACCOUNTS_READ, CREDIT_CARDS_ACCOUNTS_BILLS_READ, RESOURCES_READSim
Cartão de CréditoTransaçõesCREDIT_CARDS_ACCOUNTS_READ, CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ, RESOURCES_READSim
Operações de CréditoEmpréstimos e FinanciamentosLOANS_READ, FINANCINGS_READ, UNARRANGED_ACCOUNTS_OVERDRAFT_READ, INVOICE_FINANCINGS_READ, RESOURCES_READSim
InvestimentosInvestimentosINVESTMENTS_FIXED_INCOME_READ, INVESTMENTS_VARIABLE_INCOME_READ, INVESTMENTS_FUNDS_READ, INVESTMENTS_TREASURY_BONDS_READ, RESOURCES_READSim
CâmbioOperações de CâmbioEXCHANGES_READ, RESOURCES_READNão

Criação de Consentimento (PF e PJ)

A API de criação de consentimento (POST /consents/v1/consents) é o primeiro passo da jornada. Ela gera uma intenção de compartilhamento que deve ser autorizada pelo cliente na instituição detentora.

Request (PF e PJ) O payload diferencia-se principalmente pelo objeto loggedUser e businessEntity.

Endpoint: POST /baas/v1/open/dat/consents

{
    "brandId": "06c19499-3412-4125-84b7-d0fbc98b5019" ,
    "data": {
        "loggedUser": {
            "document": {
                "identification": "53666796052", 
                "rel": "CPF"
            }
        },
        "permissions": [ 
						"ACCOUNTS_BALANCES_READ",
            "ACCOUNTS_OVERDRAFT_LIMITS_READ",
            "ACCOUNTS_READ",
            "ACCOUNTS_TRANSACTIONS_READ",
            "BANK_FIXED_INCOMES_READ",
            "CREDIT_CARDS_ACCOUNTS_BILLS_READ",
            "CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ",
            "CREDIT_CARDS_ACCOUNTS_LIMITS_READ",
            "CREDIT_CARDS_ACCOUNTS_READ",
            "CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ",
            "CREDIT_FIXED_INCOMES_READ",
            "CUSTOMERS_BUSINESS_ADITTIONALINFO_READ",
            "CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ",
            "FINANCINGS_PAYMENTS_READ",
            "FINANCINGS_READ",
            "FINANCINGS_SCHEDULED_INSTALMENTS_READ",
            "FINANCINGS_WARRANTIES_READ",
            "FUNDS_READ",
            "INVOICE_FINANCINGS_PAYMENTS_READ",
            "INVOICE_FINANCINGS_READ",
            "INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ",
            "INVOICE_FINANCINGS_WARRANTIES_READ",
            "LOANS_PAYMENTS_READ",
            "LOANS_READ",
            "LOANS_SCHEDULED_INSTALMENTS_READ",
            "LOANS_WARRANTIES_READ",
            "RESOURCES_READ",
            "TREASURE_TITLES_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ",
            "VARIABLE_INCOMES_READ"
     
        ]
    }
}
{
    "brandId": "06c19499-3412-4125-84b7-d0fbc98b5019" ,
    "data": {
        "loggedUser": {
            "document": {
                "identification": "75500434934", 
                "rel": "CPF"
            }
        },
       "businessEntity": {
      "document": {
        "identification": "11537584000155",
        "rel": "CNPJ"
      }
    },
        "permissions": [ 
						"ACCOUNTS_BALANCES_READ",
            "ACCOUNTS_OVERDRAFT_LIMITS_READ",
            "ACCOUNTS_READ",
            "ACCOUNTS_TRANSACTIONS_READ",
            "BANK_FIXED_INCOMES_READ",
            "CREDIT_CARDS_ACCOUNTS_BILLS_READ",
            "CREDIT_CARDS_ACCOUNTS_BILLS_TRANSACTIONS_READ",
            "CREDIT_CARDS_ACCOUNTS_LIMITS_READ",
            "CREDIT_CARDS_ACCOUNTS_READ",
            "CREDIT_CARDS_ACCOUNTS_TRANSACTIONS_READ",
            "CREDIT_FIXED_INCOMES_READ",
            "CUSTOMERS_BUSINESS_ADITTIONALINFO_READ",
            "CUSTOMERS_BUSINESS_IDENTIFICATIONS_READ",
            "FINANCINGS_PAYMENTS_READ",
            "FINANCINGS_READ",
            "FINANCINGS_SCHEDULED_INSTALMENTS_READ",
            "FINANCINGS_WARRANTIES_READ",
            "FUNDS_READ",
            "INVOICE_FINANCINGS_PAYMENTS_READ",
            "INVOICE_FINANCINGS_READ",
            "INVOICE_FINANCINGS_SCHEDULED_INSTALMENTS_READ",
            "INVOICE_FINANCINGS_WARRANTIES_READ",
            "LOANS_PAYMENTS_READ",
            "LOANS_READ",
            "LOANS_SCHEDULED_INSTALMENTS_READ",
            "LOANS_WARRANTIES_READ",
            "RESOURCES_READ",
            "TREASURE_TITLES_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_PAYMENTS_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_SCHEDULED_INSTALMENTS_READ",
            "UNARRANGED_ACCOUNTS_OVERDRAFT_WARRANTIES_READ",
            "VARIABLE_INCOMES_READ"
     
        ]
    }
}

Response de Sucesso (201 Created)

Retorna o consentId necessário para as próximas etapas (redirecionamento para autenticação).

{
  "data": {
    "consentId": "urn:celcoin:692d800bfd35c73b8d02ee6c",
    "creationDateTime": "2024-04-16T12:00:00Z",
    "status": "AWAITING_AUTHORISATION",
    "expirationDateTime": "2025-12-31T23:59:59Z",
    "permissions": [
        "ACCOUNTS_READ",
        "ACCOUNTS_BALANCES_READ",
        "ACCOUNTS_TRANSACTIONS_READ",
        "RESOURCES_READ"
    ]
  },
  "links": {
    "self": "https://api.celcoin.com.br/open-banking/consents/v1/consents/urn:celcoin:692d800bfd35c73b8d02ee6c"
  },
  "meta": {
    "totalPages": 1,
    "totalRecords": 1
  }
}

Status do consentimento

StatusDescriçãoPode consumir dados?
AWAITING_AUTHORISATIONAguardando o usuário autorizar no banco de origem.Não
AUTHORISEDAutorizado com sucesso pelo usuário.Sim
REJECTEDO usuário negou a autorização ou houve falha.Não
REVOKEDO compartilhamento foi cancelado pelo usuário ou instituição.Não
EXPIREDO prazo de validade expirou.Não

Rate Limits (Limites de Requisição)

Para garantir a estabilidade do ecossistema, o Open Finance Brasil estabelece limites de taxa (Rate Limits) para o consumo de APIs:

Escopo do LimiteValor de Referência
Global (Geral)300 TPS (Transactions Per Second)
Por Instituição50 TPS
Por Endereço IP8 TPS
👍

Recomenda-se que as instituições receptoras implementem estratégias de Retry Exponencial ao receberem erros 429 Too Many Requests.


Gestão de Consentimentos

Após a criação da intenção de compartilhamento, é fundamental que a aplicação consiga gerenciar esses registros, seja para verificar se um consentimento já está pronto para uso ou para encerrar um compartilhamento a pedido do usuário.

Listar Consentimentos

Esta rota é utilizada para recuperar o histórico de consentimentos gerados. Ela é essencial para decidir o fluxo de experiência do usuário (UX):

Se o consentimento está AUTHORISED: A aplicação pode seguir para o consumo dos dados.

Se o consentimento está AWAITING_AUTHORISATION ou REJECTED: A aplicação deve redirecionar o usuário para o fluxo de autenticação ou solicitar uma nova tentativa.


Endpoint: GET /baas/v1/open/dat/consents

Principais Filtros (Query Parameters):

FiltrosDescriçãoExemplo
StatusPermite filtrar por estados específicosAUTHORISED, REVOKED, EXPIRED
PagePaginação1

Exemplo de Resposta:

{
  "data": [
    {
      "consentId": "urn:celcoin:692d800bfd35c73b8d02ee6c",
      "status": "AUTHORISED",
      "creationDateTime": "2024-04-16T12:00:00Z",
      "expirationDateTime": "2025-04-16T12:00:00Z",
      "permissions": ["ACCOUNTS_READ", "RESOURCES_READ"]
    }
  ],
  "meta": {
    "totalRecords": 1,
    "totalPages": 1
  }
}

Revogar Consentimento

A revogação é o ato de interromper definitivamente o compartilhamento de dados antes da sua data de expiração original. Por norma do Open Finance, o usuário tem o direito soberano de cancelar o acesso aos seus dados a qualquer momento.

Endpoint: DELETE /baas/v1/open/dat/consents/consentId

Request

curl --location --request DELETE 'https://sandbox.openfinance.celcoin.com.br/baas/v1/open/dat/consents/consentId' \
--header 'Authorization: Bearer ***** '

O usuário pode realizar a revogação de duas formas:

Via API Celcoin: Através da interface da sua aplicação, chamando o endpoint acima.

Diretamente na Instituição Transmissora: O usuário pode entrar no app do banco onde ele autorizou os dados (ex: Banco do Brasil, Itaú) e cancelar o consentimento por lá.

❗️

Importante: Uma vez que o consentimento é revogado (seja pela API ou pelo banco detentor), o status mudará para REVOKED e não será mais possível realizar chamadas de consumo de dados (como consulta de saldo ou extrato) utilizando aquele consentId.

Regras de Negócio para Revogação

Irreversibilidade: Um consentimento revogado não pode ser reativado. Um novo fluxo de consentimento deve ser iniciado se o usuário desejar compartilhar os dados novamente.

Sincronização: Quando o usuário revoga no banco de origem, a Celcoin recebe essa atualização via webhook ou na próxima consulta de status, garantindo a conformidade com a LGPD.