Criando um consentimento V2

Para realizar criação de um consentimento de uma iniciação de pagamento em uma organização participante do Open Finance (Instituição detentora de conta) precisamos que seja enviado uma requisição com os dados de identificação da organização, identificação do servidor de autorização, dados do recebedor, dados do pagador e dados do pagamento.

Conforme foi citado na página conceitual de iniciação de pagamento existem algumas formas de pagamento do arranjo PIX aceita no ecossistema Open Finance.

Nesta documentação vamos seguir como criar um consentimento para cada forma de pagamento através da solução da Bit Capital.

Dados de um consentimento

Para realizar a criação do consentimento são necessários os seguintes dados.

CampoCondiçãoDescrição do campo
additionalInfos.keyObrigatórioID do requisitante previamente cadastrado.
organisationIdObrigatórioIdentificação da organização participante do Open Finance.
authorisationServerIdObrigatórioIdentificação do servidor de autorização da organização participante do Open Finance.
loggedUser.identificationObrigatórioNúmero de identificação do usuário (Pessoa natural) pagador / logado.
loggedUser.relObrigatórioTipo de documento de identificação do usuário (Pessoa natural) pagador / logado.
businessIdentity.identificationCondicionalNúmero do CNPJ do titular pessoa jurídica relacionada ao usuário (Pessoa natural) informado no objeto loggedUser. Condição: Obrigatório caso seja uma conta de pessoa jurídica
businessIdentity.relCondicionalTipo de documento de identificação da pessoa jurídica relacionada ao usuário (Pessoa natural) informado no objeto loggedUser. Condição: Obrigatório caso seja uma conta de pessoa jurídica
creditor.personTypeCondicionalCampo do tipo ENUM. Titular, pessoa natural ou jurídica a quem se referem os dados do recebedor. (PESSOA_NATURAL; PESSOA_JURIDICA). Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
creditor.cpfCnpjCondicionalNúmero do documento de identificação da que se refere a pessoa recebedora. **Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)**
creditor.nameCondicionalNome da que se refere a pessoa recebedora. Em caso de pessoa natural nome completo do titular da conta do recebedor. Em caso da pessoa jurídica deve ser informada a razão social ou o nome fantasia. Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
payment.amountObrigatórioValor da transação.
details.localInstrumentObrigatórioCampo tipo ENUM. Especifica a forma da iniciação de pagamento (MANU; DICT; QRDN; QRES; INIC)
details.proxyCondicionalChave PIX relacionada a pessoa recebedora informada no objeto creditor Condição: Obrigatório caso seja um pagamento do tipo inserção de chave PIX (DICT); Dados do recebedor (INIC); QR Code estático (QRES); QR Code Dinâmico (QRDN)
details.qrCodeCondicionalSequência de caracteres que corresponde ao QR Code disponibilizado para o pagador. Condição: Obrigatório caso seja um pagamento do tipo QR Code estático (QRES) ou QR Code dinâmico (QRDN)
creditorAccount.ispbCondicionalISPB do banco referente a conta relacionada a pessoa recebedora informada no objeto creditor. Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
creditorAccount.issuerCondicionalAgência do banco referente a conta relacionada a pessoa recebedora informada no objeto creditor. Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
creditorAccount.numberCondicionalNúmero da conta do banco referente a conta relacionada a pessoa recebedora informada no objeto creditor. Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
creditorAccount.accountTypeCondicionalCampo do tipo ENUM. Tipo de conta do banco referente a conta relacionada a pessoa recebedora informada no objeto creditor.
(CACC; SVGS; TRAN; SLRY). Condição: Obrigatório caso seja um pagamento do tipo inserção de dados manuais (MANU)
debtorAccount.ispbCondicionalISPB do banco referente a conta relacionada a pessoa pagadora informada no objeto loggedUser.
Condição: Campo opcional. Caso não seja informado o campo será preenchido na criação do consentimento na instituição detentora relacionada a instituição informada no objeto authorisationServer
debtorAccount.issuerCondicionalAgência do banco referente a conta relacionada a pessoa pagadora informada no objeto loggedUser. Condição: Campo opcional. Caso não seja informado o campo será preenchido na criação do consentimento na instituição detentora relacionada a instituição informada no objeto authorisationServer
debtorAccount.numberCondicionalNúmero da conta do banco referente a conta relacionada a pessoa pagadora informada no objeto loggedUser. Condição: Campo opcional. Caso não seja informado o campo será preenchido na criação do consentimento na instituição detentora relacionada a instituição informada no objeto authorisationServer
debtorAccount.accountTypeCondicionalCampo do tipo ENUM. Tipo de conta do banco referente a conta relacionada a pessoa pagadora informada no objeto loggedUser.
(CACC; SVGS; TRAN; SLRY). Condição: Campo opcional. Caso não seja informado o campo será preenchido na criação do consentimento na instituição detentora relacionada a instituição informada no objeto authorisationServer

📘

Dados do recebedor

Os dados do recebedor (creditor) são dados necessários para a solução da Bit Capital realizar uma iniciação de pagamento.

Na solução eles são considerados condicionais pois ao ser informado uma chave PIX ou um QR Code (Estático/Dinâmico) a solução realiza uma consulta no Diretório de identificadores de contas transacionais (DICT) e preenche os campos automaticamente.

Caso as informações do recebedor sejam informadas a solução realiza uma consulta no DICT e valida se os dados do recebedor conferem com a chave PIX ou QR Code informado no consentimento.

DICT: É uma base de dados, gerida pelo BACEN, que armazena as chaves PIX relacionada as contas registrada para a chave.

Criando um consentimento de pagamento com inserção de dados manuais (MANU)

open-finance/tpp/payments/v2/consents
Este endpoint utiliza o método POST

Um exemplo de uma requisição utilizando inserção de dados manuais informando os dados da conta do pagador (debtorAccount) e não informando os dados do pagador.

{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "creditor": {
        "personType": "enum",
        "cpfCnpj": "string",
        "name": "string"
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "MANU",
            "creditorAccount": {
                "ispb": "string",
                "issuer": "string",
                "number": "string",
                "accountType": "enum"
            }
    },
    "debtorAccount": {
        "ispb": "string",
        "issuer": "string",
        "number": "string
        "accountType": "string
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "creditor": {
        "personType": "enum",
        "cpfCnpj": "string",
        "name": "string"
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "MANU",
            "creditorAccount": {
                "ispb": "string",
                "issuer": "string",
                "number": "string",
                "accountType": "enum"
            }
    },
}

Criando um consentimento de pagamento utilizando chave PIX (DICT)

open-finance/tpp/payments/v2/consents
Este endpoint utiliza o método POST

Um exemplo de uma requisição utilizando uma chave PIX informando os dados da conta do pagador (debtorAccount) e não informando os dados do pagador.

{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "DICT",
            "proxy": "string",
            }
    },
    "debtorAccount": {
        "ispb": "string",
        "issuer": "string",
        "number": "string
        "accountType": "string
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "DICT",
            "proxy": "string",
            }
    },
}

Criando um consentimento de pagamento utilizando QR Code estático (QRES) QR code Dinâmico (QRDN)

open-finance/tpp/payments/v2/consents
Este endpoint utiliza o método POST

Um exemplo de uma requisição utilizando a inserção de um QR Code estático informando os dados da conta do pagador (debtorAccount), QR Code estático não informando os dados do pagador, QR Code dinâmico informando os dados da conta do pagador (debtorAccount), QR Code dinâmico não informando os dados do pagador.

{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "QRES",
            "proxy": "string",
            "qrCode": "string",
            }
    },
    "debtorAccount": {
        "ispb": "string",
        "issuer": "string",
        "number": "string
        "accountType": "string
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "QRES",
            "qrCode": "string",
            "proxy": "string"
            }
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "QRDN",
            "proxy": "string",
            "qrCode": "string",
            }
    },
    "debtorAccount": {
        "ispb": "string",
        "issuer": "string",
        "number": "string
        "accountType": "string
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "QRDN",
            "proxy": "string",
            "qrCode": "string",
            }
    },
}

Criando um consentimento de pagamento onde o recebedor é previamente conhecido (INIC)

open-finance/tpp/payments/v2/consents
Este endpoint utiliza o método POST

Um exemplo de uma requisição utilizando um pagamento onde o recebedor é previamente conhecido informando os dados da conta do pagador (debtorAccount) e não informando os dados do pagador.

{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "INIC",
            "proxy": "string",
            }
    },
    "debtorAccount": {
        "ispb": "string",
        "issuer": "string",
        "number": "string
        "accountType": "string
}
{
    "authorisationServer": {
        "organisationId": "string",
        "authorisationServerId": "string"
    },
    "loggedUser": {
        "document": {
            "identification": "string",
            "rel": "CPF"
        }
    },
    "payment": {
        "amount": "string
        "details": {
            "localInstrument": "INIC",
            "proxy": "string",
            }
    },
}