From 8e435a5ef4a56edc07d277ac4456fdff5334c55e Mon Sep 17 00:00:00 2001 From: Cecilia Fernandes <115801960+CeciliaFFernandes@users.noreply.github.com> Date: Mon, 3 Jul 2023 12:26:52 +0000 Subject: [PATCH 1/4] =?UTF-8?q?feat(Payments):=20ORB-2904=20-=20PB43=20-?= =?UTF-8?q?=20=20Ajustar=20descri=C3=A7=C3=A3o=20de=20campo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dictionary/paymentsGetPixPaymentsPaymentId_v3.csv | 2 +- dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv | 2 +- dictionary/paymentsPostPixPayments_v3.csv | 2 +- swagger-apis/payments/3.0.0-beta.1.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv b/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv index 9c73a2115..309b264ea 100644 --- a/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv +++ b/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv @@ -110,7 +110,7 @@ SCHD";1;1;"";Não permitido;string;PDNG; - CONTAS_ORIGEM_DESTINO_IGUAIS - Indica uma tentativa de pagamento onde a conta origem e a conta de destino são iguais. -O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retro compatibilidade e integridade entre os participantes. +O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retrocompatibilidade e integridade entre os participantes. ";Texto;;Obrigatório;;"SALDO_INSUFICIENTE VALOR_ACIMA_LIMITE VALOR_INVALIDO diff --git a/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv b/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv index abb14547f..a50d7a82c 100644 --- a/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv +++ b/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv @@ -110,7 +110,7 @@ SCHD";1;1;"";Não permitido;string;PDNG; - CONTAS_ORIGEM_DESTINO_IGUAIS - Indica uma tentativa de pagamento onde a conta origem e a conta de destino são iguais. -O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retro compatibilidade e integridade entre os participantes. +O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retrocompatibilidade e integridade entre os participantes. ";Texto;;Obrigatório;;"SALDO_INSUFICIENTE VALOR_ACIMA_LIMITE VALOR_INVALIDO diff --git a/dictionary/paymentsPostPixPayments_v3.csv b/dictionary/paymentsPostPixPayments_v3.csv index 3d673fae0..cde0879f5 100644 --- a/dictionary/paymentsPostPixPayments_v3.csv +++ b/dictionary/paymentsPostPixPayments_v3.csv @@ -110,7 +110,7 @@ SCHD";1;1;"";Não permitido;string;PDNG; - CONTAS_ORIGEM_DESTINO_IGUAIS - Indica uma tentativa de pagamento onde a conta origem e a conta de destino são iguais. -O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retro compatibilidade e integridade entre os participantes. +O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retrocompatibilidade e integridade entre os participantes. ";Texto;;Obrigatório;;"SALDO_INSUFICIENTE VALOR_ACIMA_LIMITE VALOR_INVALIDO diff --git a/swagger-apis/payments/3.0.0-beta.1.yml b/swagger-apis/payments/3.0.0-beta.1.yml index 3ceabe88f..378bd7a4e 100644 --- a/swagger-apis/payments/3.0.0-beta.1.yml +++ b/swagger-apis/payments/3.0.0-beta.1.yml @@ -1389,7 +1389,7 @@ components: - CONTAS_ORIGEM_DESTINO_IGUAIS - Indica uma tentativa de pagamento onde a conta origem e a conta de destino são iguais. - O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retro compatibilidade e integridade entre os participantes. + O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retrocompatibilidade e integridade entre os participantes. EnumPaymentCancellationReasonType: type: string enum: From e7e9d1dbf7d4f5371cc0db8e368742d97313e9d2 Mon Sep 17 00:00:00 2001 From: FelipeBaumgartel Date: Mon, 3 Jul 2023 17:09:42 -0300 Subject: [PATCH 2/4] feat(Payments): ORB-2903 - SB31 - Ajuste na Tabela do header da API --- swagger-apis/payments/3.0.0-beta.1.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/swagger-apis/payments/3.0.0-beta.1.yml b/swagger-apis/payments/3.0.0-beta.1.yml index 378bd7a4e..545d9ea56 100644 --- a/swagger-apis/payments/3.0.0-beta.1.yml +++ b/swagger-apis/payments/3.0.0-beta.1.yml @@ -138,7 +138,7 @@ info: 5.2 **Momentos de validação dos rejectionReasons de acordo com o funil de consentimentos.** ``` |----------------------------------|------------------------------| - | Etapas do funil de consentimento | RejectionReason/code | + | Etapas do funil de consentimento | rejectionReason/code | |----------------------------------|------------------------------| | Início da autenticação | FALHA_INFRAESTRUTURA | | | TEMPO_EXPIRADO_AUTORIZACAO | From 94518f7edcc535ad8982cff36499e682461d2975 Mon Sep 17 00:00:00 2001 From: FelipeBaumgartel Date: Tue, 4 Jul 2023 14:16:25 -0300 Subject: [PATCH 3/4] feat(Payments): ORB-2918 - SB34 - Remover campo de endpoint e alterar nome de campo --- .../paymentsGetPixPaymentsPaymentId_v3.csv | 2 +- .../paymentsPatchPixPaymentsPaymentId_v3.csv | 2 +- dictionary/paymentsPostPixPayments_v3.csv | 2 +- swagger-apis/payments/3.0.0-beta.1.yml | 18 ++++-------------- 4 files changed, 7 insertions(+), 17 deletions(-) diff --git a/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv b/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv index 309b264ea..4288d8359 100644 --- a/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv +++ b/dictionary/paymentsGetPixPaymentsPaymentId_v3.csv @@ -236,7 +236,7 @@ Segue descrição de cada valor do ENUM. ";Texto;;Obrigatório;;"CACC SVGS TRAN";1;1;"";Não permitido;string;CACC; -/data/authorizationFlow;authorizationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. +/data/authorisationFlow;authorisationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. ";Texto;;Condicional;;"HYBRID_FLOW diff --git a/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv b/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv index a50d7a82c..6bc9db843 100644 --- a/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv +++ b/dictionary/paymentsPatchPixPaymentsPaymentId_v3.csv @@ -237,7 +237,7 @@ Segue descrição de cada valor do ENUM. SLRY SVGS TRAN";1;1;"";Não permitido;string;CACC; -/data/authorizationFlow;authorizationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. +/data/authorisationFlow;authorisationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. ";Texto;;Condicional;;"HYBRID_FLOW diff --git a/dictionary/paymentsPostPixPayments_v3.csv b/dictionary/paymentsPostPixPayments_v3.csv index cde0879f5..255deed8c 100644 --- a/dictionary/paymentsPostPixPayments_v3.csv +++ b/dictionary/paymentsPostPixPayments_v3.csv @@ -205,7 +205,7 @@ Segue descrição de cada valor do ENUM. ";Texto;;Obrigatório;;"CACC SVGS TRAN";1;1;"";Não permitido;string;CACC; -/data/authorizationFlow;authorizationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. +/data/authorisationFlow;authorisationFlow;"Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. ";Texto;;Condicional;;"HYBRID_FLOW diff --git a/swagger-apis/payments/3.0.0-beta.1.yml b/swagger-apis/payments/3.0.0-beta.1.yml index 545d9ea56..299d8c4c9 100644 --- a/swagger-apis/payments/3.0.0-beta.1.yml +++ b/swagger-apis/payments/3.0.0-beta.1.yml @@ -835,7 +835,7 @@ components: O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; - authorizationFlow: + authorisationFlow: type: string enum: - HYBRID_FLOW @@ -1667,16 +1667,6 @@ components: description: Tipo do documento do usuário pagador responsável pelo cancelamento do pagamento. example: CPF pattern: '^[A-Z]{3}$' - authorizationFlow: - type: string - enum: - - HYBRID_FLOW - - CIBA_FLOW - example: HYBRID_FLOW - description: | - Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. - - [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. PatchPixPaymentCancellation: type: object description: | @@ -2174,7 +2164,7 @@ components: $ref: '#/components/schemas/PatchPixPaymentCancellation' debtorAccount: $ref: '#/components/schemas/DebtorAccount' - authorizationFlow: + authorisationFlow: type: string enum: - HYBRID_FLOW @@ -2335,7 +2325,7 @@ components: $ref: '#/components/schemas/PaymentsCreditorAccount' debtorAccount: $ref: '#/components/schemas/PaymentsDebtorAccount' - authorizationFlow: + authorisationFlow: type: string enum: - HYBRID_FLOW @@ -2471,7 +2461,7 @@ components: $ref: '#/components/schemas/PixPaymentCancellation' debtorAccount: $ref: '#/components/schemas/PaymentsDebtorAccount' - authorizationFlow: + authorisationFlow: type: string enum: - HYBRID_FLOW From bbc446e24ca3bdbaadc9af4ef5436b58712c38c8 Mon Sep 17 00:00:00 2001 From: FelipeBaumgartel Date: Tue, 4 Jul 2023 14:37:32 -0300 Subject: [PATCH 4/4] =?UTF-8?q?feat(Payments):=20ORB-2906=20-=20PB54=20-?= =?UTF-8?q?=20Criar=20vers=C3=A3o=20Major=203.0.0-beta.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- swagger-apis/payments/3.0.0-beta.2.yml | 2888 ++++++++++++++++++++++++ swagger-apis/payments/index.html | 5 +- 2 files changed, 2891 insertions(+), 2 deletions(-) create mode 100644 swagger-apis/payments/3.0.0-beta.2.yml diff --git a/swagger-apis/payments/3.0.0-beta.2.yml b/swagger-apis/payments/3.0.0-beta.2.yml new file mode 100644 index 000000000..6628c1d09 --- /dev/null +++ b/swagger-apis/payments/3.0.0-beta.2.yml @@ -0,0 +1,2888 @@ +openapi: 3.0.0 +info: + title: API Payment Initiation - Open Finance Brasil + description: | + API de Iniciação de Pagamentos, responsável por viabilizar as operações de iniciação de pagamentos para o Open Finance Brasil. + Para cada uma das formas de pagamento previstas é necessário obter prévio consentimento do cliente através dos `endpoints` dedicados ao consentimento nesta API. + + # Orientações + No diretório de participantes duas `Roles` estão relacionadas à presente API: + - `CONTA`, referente às instituições detentoras de conta participantes do Open Finance Brasil; + - `PAGTO`, referente às instituições iniciadoras de pagamento participantes do Open Finance Brasil. + Os tokens utilizados para consumo nos endpoints de consentimentos devem possuir o scope `payments` e os `endpoints` de pagamentos devem possuir os `scopes`, `openid` e `payments`. + Esta API não requer a implementação de `permissions` para sua utilização. Todas as requisições e respostas devem ser assinadas seguindo o protocolo estabelecido na sessão Assinaturas do guia de segurança. + + ## Regras do arranjo Pix + A implementação e o uso da API de Pagamentos Pix devem seguir as regras do arranjo Pix do Banco Central, que podem ser encontradas no link abaixo: + [https://www.bcb.gov.br/estabilidadefinanceira/pix?modalAberto=regulamentacao_pix](https://www.bcb.gov.br/estabilidadefinanceira/pix?modalAberto=regulamentacao_pix) + + ## Assinatura de payloads + + No contexto da API Payment Initiation, os `payloads` de mensagem que trafegam tanto por parte da instituição iniciadora de transação de pagamento quanto por parte da instituição detentora + de conta devem estar assinados. Para o processo de assinatura destes `payloads` as instituições devem seguir as especificações de segurança publicadas no Portal do desenvolvedor: + + - Certificados exigidos para assinatura de mensagens: + [Padrões de certificados digitais Open Finance Brasil](https://github.com/OpenBanking-Brasil/specs-seguranca/blob/main/open-banking-brasil-certificate-standards-1_ID1.md#certificado-de-assinatura-certificadoassinatura) + + - Como assinar o payload JWS: [https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/18055279/Como+Assinar+o+Payload+-+v2.0.0-rc1.0+-+Pagamentos](https://openfinancebrasil.atlassian.net/wiki/spaces/OF/pages/18055279/Como+Assinar+o+Payload+-+v2.0.0-rc1.0+-+Pagamentos) + + ## Controle de acesso + + O endpoint de consulta de pagamento GET /pix/payments/{​​​paymentId}​​​ deve suportar acesso a partir de access_token emitido por meio de um grant_type do tipo `client credentials`, como opção do uso do token vinculado ao consentimento (hybrid flow). + + Para evitar vazamento de informação, a detentora deve validar que o pagamento consultado pertence ao ClientId que o criou e, caso haja divergências, retorne um erro HTTP 400. + + Para o caso de QR Code estático e dinâmico a detentora deverá obrigatoriamente realizar validações sobre o conteúdo dos campos recebidos. Entretanto, a escolha do momento desta validação na criação do consentimento ou no pagamento, fica a cargo da detentora. + + ## Aprovações de múltipla alçada + + Para o caso de Pix imediato, todas as aprovações necessárias devem ser realizadas nos canais da detentora até às 23:59 (horário de Brasília) da data de solicitação do pagamento. + Já para o caso de Pix agendado, todas as aprovações devem ser realizadas até a data/hora limite suportada pela detentora. + + ## Validações + **Validações** (*após o processo de DCR e obtenção de token client credential*– não escopo dessa documentação) + Durante a jornada de iniciação de pagamento, diferentes validações são necessárias pela instituição detentora + de conta e devem ocorrer conforme a seguir: + + 1. Na criação do consentimento (*POST /consents*); + 2. Na criação do pagamento - Síncrono (*POST /payments*); + 3. Validações na consulta do pagamento (*GET /pix/payments/{paymentId}*); + 4. Demais validações executadas durante o processamento assíncrono do pagamento pela detentora, poderão ser consultados pela iniciadora através do endpoint (*GET /pix/payments/{paymentId}*) previstos com retorno HTTP Code 200 - OK com status RJCT (Rejected) e rejectionReason; + 5. Demais validações executadas durante o processamento assíncrono do consentimento pela detentora poderão ser consultados pela iniciadora através do endpoint (*GET /consents/{consentId}*) previstos com retorno HTTP Code 200 – OK com status REJECTED e rejectionReason + + **Os tipos de validações dispostas abaixo não determinam a ordem em que as instituições devem implementá-las** + + 1. **Validações na criação do consentimento (_POST /consents_)** + 1.1 **Orientações Iniciais** +  1.1.1 Não devem ser retornadas informações associadas ao usuário/cliente (ex. insuficiência de saldo, conta inexistente/bloqueada), uma vez que o cliente ainda não autorizou o consentimento / consumo de seus dados para o pagamento. +  1.1.2 Não devem ser executadas validações no DICT (Diretório de Identificadores de Contas Transacionais do Pix), a partir dos dados compartilhados nesse *endpoint*. Tais validações podem ocorrer somente na criação do pagamento; + 1.2 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token, jwt, assinatura)** +  1.2.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT); +  1.2.2 Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED); +  1.2.3 Validação de assinatura da mensagem: Valida se assinatura das mensagens enviadas está correta – HTTP Code 400 (BAD_SIGNATURE); +  1.2.4 Validação de Claims (exceto data); +  1.2.4.1 Valida se dados (aud, iss, iat e jti) são válidos - HTTP status code 403 – (INVALID_CLIENT); +  1.2.4.2 Valida reuso de jti - HTTP Code 403 (INVALID_CLIENT). + 1.3 **Casos de erro sintáticos e semânticos, previstos com retorno HTTP Code 422 - Unprocessable Entity (detalhamento adicional na documentação técnica da API):** +  1.3.1 **Sintáticos** +  1.3.1.1 Envio de campos obrigatórios: Valida se todos os campos obrigatórios são informados (PARAMETRO_NAO_INFORMADO); +  1.3.1.2 Formatação de parâmetros: Valida se parâmetros informados obedecem a formatação especificada (PARAMETRO_INVALIDO). +  1.3.2 **Semânticos** +  1.3.2.1 Forma de pagamento: Valida se a forma de pagamento é suportada pela detentora (FORMA_PAGAMENTO_INVALIDA) **Obs. No detalhe do erro, a variável “modalidade” deve ser comunicada pela detentora da forma mais clara possível - ex. modalidade de pagamento não suportada (_localInstrument_ - QRES) ou tipo de arranjo pagamento não suportado (_type_ – ex. Pix / TED – previsto para inclusão futura);** +  1.3.2.2 Data de pagamento: Valida se a data de pagamento enviada é válida para a forma de pagamento selecionada (DATA_PAGAMENTO_INVALIDA); +  1.3.2.3 Detalhes do pagamento: Valida se determinado parâmetro informado obedece às regras de negócio (DETALHE_PAGAMENTO_INVALIDO); +  1.3.2.4 Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO); +  1.3.2.5 Idempotência: Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA). + + 2. **Validações na criação do pagamento - Síncrono (_POST /payments_)** + 2.1 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token, jwt, assinatura)** +  2.1.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT); +  2.1.2 Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED); +  2.1.3 Validação de assinatura da mensagem: Valida se assinatura das mensagens enviadas está correta – HTTP Code 400 (BAD_SIGNATURE); +  2.1.4 Validação de Claims (exceto data); +  2.1.4.1 Valida se dados (aud, iss, iat e jti) são válidos - HTTP status code 403 – (INVALID_CLIENT); +  2.1.4.2 Valida reuso de jti - HTTP Code 403 (INVALID_CLIENT). + 2.2 **Casos de erro sintáticos e semânticos, previstos com retorno HTTP Code 422 - Unprocessable Entity (detalhamento adicional na documentação técnica da API):** +  2.2.1 **Sintáticos** +  2.3.1.1 Envio de campos obrigatórios: Valida se todos os campos obrigatórios são informados (PARAMETRO_NAO_INFORMADO); +  2.3.1.2 Formatação de parâmetros: Valida se parâmetros informados obedecem a formatação especificada (PARAMETRO_INVALIDO). +  2.2.2 **Semânticos** +  2.2.2.1 Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE); +  2.2.2.2 Limites da transação: Valida se valor (ou quantidade de transações) ultrapassa faixa de limite parametrizada na detentora (VALOR_ACIMA_LIMITE); +  2.2.2.3 Valor informado (QR Code): Valida se valor enviado é válido para o QR Code informado (VALOR_INVALIDO); +  2.2.2.4 Cobrança inválida: Valida expiração, vencimento e status (COBRANCA_INVALIDA); +  2.2.2.5 Status Consentimento: Valida se status de consentimento é diferente de “AUTHORISED” (CONSENTIMENTO_INVALIDO); +  2.2.2.6 Divergência entre pagamento e consentimento: Valida se dados do pagamento são diferentes dos dados do consentimento (PAGAMENTO_DIVERGENTE_CONSENTIMENTO) +  2.2.2.7 Recusado pela detentora: Valida se pagamento foi recusado pela detentora (PAGAMENTO_RECUSADO_DETENTORA), com a descrição do motivo de recusa (ex. chave Pix inválida, QRCode inválido, conta bloqueada); +  2.2.2.8 Detalhes do pagamento: Valida se determinado parâmetro informado obedece às regras de negócio (DETALHE_PAGAMENTO_INVALIDO); +  2.2.2.9 Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO); +  2.2.2.10 Idempotência: Valida se há divergência entre chave de idempotência e informações enviadas (ERRO_IDEMPOTENCIA). + 2.3 **Casos de erro para validações síncronas no DICT** +  Nesse cenário, o pagamento não é criado, porém o consentimento deve ser alterado para o status CONSUMED Retorno esperado do endpoint POST/Payments: HTTP Code 422 - Unprocessable Entity: +  • Erro por dados inválidos: Conforme item **2.2.2.8** +  • Erro por suspeita de fraude: Conforme item **2.2.2.9** + + 3. **Validações na consulta do pagamento (_GET /pix/payments/{paymentId}_)** + 3.1 **Casos de erro relacionados às permissões de segurança para acesso à API (ex. certificado, access_token)** +  3.1.1 Validação de Certificado: Valida utilização de certificado correto durante processo de DCR - HTTP Code 401 (INVALID_CLIENT); +  3.1.2 Validação de Access_Token: Verifica se Access_Token utilizado está correto - HTTP Code 401 (UNAUTHORIZED). + + 4. **Demais validações executadas durante o processamento assíncrono do pagamento pela detentora, poderão ser consultados pela iniciadora através do endpoint _GET /pix/payments/{paymentId}_ previstos com retorno HTTP Code 200 - OK com status RJCT (Rejected) e rejectionReason conforme abaixo (detalhamento adicional na documentação técnica da API):** + 4.1 **Demais validações durante processamento assíncrono** +  4.1.1 Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE); +  4.1.2 Limites da transação: Valida se valor (ou quantidade de transações) ultrapassa faixa de limite parametrizada na detentora (VALOR_ACIMA_LIMITE); +  4.1.3 Valor informado (QR Code): Valida se valor enviado é válido para o QR Code informado (VALOR_INVALIDO); +  4.1.4 Cobrança inválida: Valida expiração, vencimento e status (COBRANCA_INVALIDA); +  4.1.5 Divergência entre pagamento e consentimento: Valida se dados do pagamento são diferentes dos dados do consentimento (PAGAMENTO_DIVERGENTE_CONSENTIMENTO); +  4.1.6 Recusado pela detentora: Valida se pagamento foi recusado pela detentora (PAGAMENTO_RECUSADO_DETENTORA), com a descrição do motivo de recusa (ex. chave Pix inválida, QRCode inválido, conta bloqueada); +  4.1.7 Detalhes do pagamento: Valida se determinado parâmetro informado obedece às regras de negócio (DETALHE_PAGAMENTO_INVALIDO); +  4.1.8 Demais validações não explicitamente informadas (ex. suspeita de fraude): (NAO_INFORMADO); +  4.1.9 Validação SPI: Externaliza validações no SPI (PAGAMENTO_RECUSADO_SPI); + 4.2 **Casos de erro para validações assíncronas no DICT** +  Neste cenário o pagamento é criado com sucesso (status RCVD) e o consentimento é consumido (status CONSUMED), porém, as validações contra o DICT só ocorrerão de forma assíncrona e em caso de negativa será percebido pela iniciadora na consulta do pagamento (GET /Payments). +  Retorno esperado do endpoint GET /Payments: HTTP Code 200 - OK. +  Status do Pagamento: RJCT (Rejected), com as seguintes opções rejectionReason: +  • Erro por dados inválidos: Conforme item **4.1.7**; +  • Erro por suspeita de fraude: Conforme item **4.1.8**. + + 5. **Demais validações executadas durante o processamento assíncrono do consentimento pela detentora poderão ser consultados pela iniciadora através do endpoint _GET /consents/{consentId}_ previstos com retorno HTTP Code 200 – OK com status REJECTED e rejectionReason conforme abaixo:** + 5.1 **Validações durante o processamento assíncrono** +  5.1.1 - Falha de infraestrutura: Ocorreu algum erro interno na detentora durante processamento da criação do consentimento (FALHA_INFRAESTRUTURA) +  5.1.2 - Tempo de autorização expirado: O usuário não confirmou o consentimento e o mesmo expirou (TEMPO_EXPIRADO_AUTORIZACAO); +  5.1.3 - Rejeitado pelo usuário: O usuário explicitamente rejeitou a autorização do consentimento (REJEITADO_USUARIO); +  5.1.4 - Mesma conta origem/destino: A conta indicada pelo usuário para recebimento é a mesma selecionada para o pagamento (CONTAS_ORIGEM_DESTINO_IGUAIS); +  5.1.5 - Tipo de conta inválida: A conta indicada não permite operações de pagamento (CONTA_NAO_PERMITE_PAGAMENTO); +  5.1.6 - Saldo do usuário: Valida se a conta selecionada possui saldo suficiente para realizar o pagamento (SALDO_INSUFICIENTE); +  5.1.7 - Limites da transação: Valida se o valor ultrapassa o limite estabelecido [na instituição/no arranjo/outro] para permitir a realização de transações pelo cliente (VALOR_ACIMA_LIMITE); +  5.1.8 - QRCode inválido: O QRCode utilizado para a iniciação de pagamento não é válido (QRCODE_INVALIDO). + 5.2 **Momentos de validação dos rejectionReasons de acordo com o funil de consentimentos.** + ``` + |----------------------------------|------------------------------| + | Etapas do funil de consentimento | rejectionReason/code | + |----------------------------------|------------------------------| + | Início da autenticação | FALHA_INFRAESTRUTURA | + | | TEMPO_EXPIRADO_AUTORIZACAO | + | | NAO_INFORMADO | + |----------------------------------|------------------------------| + | Conclusão da autenticação | FALHA_INFRAESTRUTURA | + | | TEMPO_EXPIRADO_AUTORIZACAO | + | | REJEITADO_USUARIO | + | | NAO_INFORMADO | + |----------------------------------|------------------------------| + | Autorização do cliente | FALHA_INFRAESTRUTURA | + | | CONTAS_ORIGEM_DESTINO_IGUAIS | + | | CONTA_SALARIO | + | | SALDO_INSUFICIENTE | + | | VALOR_ACIMA_LIMITE | + | | QRCODE_INVALIDO | + | | VALOR_INVALIDO | + | | NAO_INFORMADO | + |----------------------------------|------------------------------| + | Authorisation code emitido | FALHA_INFRAESTRUTURA | + | | TEMPO_EXPIRADO_CONSUMO | + | | NAO_INFORMADO | + |----------------------------------|------------------------------| + ``` + version: '3.0.0-beta.2' + license: + name: Apache 2.0 + url: 'https://www.apache.org/licenses/LICENSE-2.0' + contact: + name: Governança do Open Finance Brasil – Especificações + email: gt-interfaces@openbankingbr.org + url: 'https://openbanking-brasil.github.io/areadesenvolvedor/' +servers: + - url: 'https://api.banco.com.br/open-banking/payments/v2' + description: Servidor de Produção + - url: 'https://apih.banco.com.br/open-banking/payments/v2' + description: Servidor de Homologação +tags: + - name: Pagamentos +paths: + /consents: + post: + tags: + - Pagamentos + summary: Criar consentimento para a iniciação de pagamento. + operationId: paymentsPostConsents + description: Método de criação do consentimento para a iniciação de pagamento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/XIdempotencyKey' + requestBody: + content: + application/jwt: + schema: + $ref: '#/components/schemas/CreatePaymentConsent' + description: Payload para criação do consentimento para iniciação do pagamento. + required: true + responses: + '201': + $ref: '#/components/responses/201PaymentsConsentsConsentCreated' + '400': + $ref: '#/components/responses/BadRequestPayments' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntityConsents' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2ClientCredentials: + - payments + '/consents/{consentId}': + get: + tags: + - Pagamentos + summary: Consultar consentimento para iniciação de pagamento. + operationId: paymentsGetConsentsConsentId + description: Método para consulta do consentimento para a iniciação de pagamento. + parameters: + - $ref: '#/components/parameters/consentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/200PaymentsConsentsConsentIdRead' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2ClientCredentials: + - payments + /pix/payments: + post: + tags: + - Pagamentos + summary: Criar iniciação de pagamento. + operationId: paymentsPostPixPayments + description: Método para criar uma iniciação de pagamento. + parameters: + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + - $ref: '#/components/parameters/XIdempotencyKey' + requestBody: + content: + application/jwt: + schema: + $ref: '#/components/schemas/CreatePixPayment' + description: Payload para criação da iniciação do pagamento Pix. + required: true + responses: + '201': + $ref: '#/components/responses/201PaymentsInitiationPixPaymentCreated' + '400': + $ref: '#/components/responses/BadRequestPixPayments' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '415': + $ref: '#/components/responses/UnsupportedMediaType' + '422': + $ref: '#/components/responses/UnprocessableEntityPixPayment' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2AuthorizationCode: + - openid + - 'consent:consentId' + - payments + '/pix/payments/{paymentId}': + get: + tags: + - Pagamentos + summary: Consultar iniciação de pagamento. + operationId: paymentsGetPixPaymentsPaymentId + description: Método para consultar uma iniciação de pagamento. + parameters: + - $ref: '#/components/parameters/paymentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + responses: + '200': + $ref: '#/components/responses/200PaymentsInitiationPixPaymentIdRead' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2ClientCredentials: + - payments + patch: + tags: + - Pagamentos + summary: Cancelar iniciação de pagamento. + operationId: paymentsPatchPixPaymentsPaymentId + description: | + + Esse endpoint deve ser usado para cancelar, a pedido do cliente pagador, as transações que estejam em uma das seguintes situações: Agendada com sucesso (SCHD), retida para análise (PDNG) ou aguardando autorização de múltiplas alçadas (PATC). + + - Caso a requisição seja bem sucedida, a transação vai para a situação CANC. + + - Caso o status do pagamento seja diferente de SCHD/PDNG/PATC ou alguma outra regra de negócio impeça o cancelamento, a requisição PATCH retorna HTTP Status 422 com o code PAGAMENTO_NAO_PERMITE_CANCELAMENTO. + + - Caso receba um 422, a iniciadora deve fazer uma requisição GET no pagamento para verificar a situação atual dele, bem como detalhes associados. + + O cancelamento de pagamento agendado (SCHD) pode ser enviado até 23:59 (Horário de Brasília) do dia anterior à data de efetivação do pagamento. + parameters: + - $ref: '#/components/parameters/paymentId' + - $ref: '#/components/parameters/Authorization' + - $ref: '#/components/parameters/xFapiAuthDate' + - $ref: '#/components/parameters/xFapiCustomerIpAddress' + - $ref: '#/components/parameters/xFapiInteractionId' + - $ref: '#/components/parameters/xCustomerUserAgent' + requestBody: + content: + application/jwt: + schema: + $ref: '#/components/schemas/PatchPixPayment' + description: Payload para cancelamento do pagamento. + required: true + responses: + '200': + $ref: '#/components/responses/200PatchPixPayments' + '400': + $ref: '#/components/responses/BadRequest' + '401': + $ref: '#/components/responses/Unauthorized' + '403': + $ref: '#/components/responses/Forbidden' + '404': + $ref: '#/components/responses/NotFound' + '405': + $ref: '#/components/responses/MethodNotAllowed' + '406': + $ref: '#/components/responses/NotAcceptable' + '422': + $ref: '#/components/responses/UnprocessableEntityPixPayments' + '429': + $ref: '#/components/responses/TooManyRequests' + '500': + $ref: '#/components/responses/InternalServerError' + '529': + $ref: '#/components/responses/SiteIsOverloaded' + default: + description: Erro inesperado. + content: + application/json: + schema: + $ref: '#/components/schemas/ResponseError' + security: + - OAuth2ClientCredentials: + - payments +components: + schemas: + 422ResponseErrorCreateConsent: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 3 + items: + type: object + required: + - code + - title + - detail + properties: + code: + type: string + enum: + - FORMA_PAGAMENTO_INVALIDA + - DATA_PAGAMENTO_INVALIDA + - DETALHE_PAGAMENTO_INVALIDO + - PARAMETRO_NAO_INFORMADO + - PARAMETRO_INVALIDO + - ERRO_IDEMPOTENCIA + - NAO_INFORMADO + example: FORMA_PAGAMENTO_INVALIDA + description: | + Códigos de erros previstos na criação de consentimento para a iniciação de pagamentos: + • FORMA_PAGAMENTO_INVALIDA: Forma de pagamento inválida. + • DATA_PAGAMENTO_INVALIDA: Data de pagamento inválida. + • DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido. + • PARAMETRO_NAO_INFORMADO: Parâmetro não informado. + • PARAMETRO_INVALIDO: Parâmetro inválido. + • ERRO_IDEMPOTENCIA: Erro idempotência. + • NAO_INFORMADO: Não informado. + title: + type: string + maxLength: 255 + pattern: '[\w\W\s]*' + example: Forma de pagamento inválida. + description: | + Título específico do erro reportado, de acordo com o código enviado: + • FORMA_PAGAMENTO_INVALIDA: Forma de pagamento inválida. + • DATA_PAGAMENTO_INVALIDA: Data de pagamento inválida. + • DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido. + • PARAMETRO_NAO_INFORMADO: Parâmetro não informado. + • PARAMETRO_INVALIDO: Parâmetro inválido. + • ERRO_IDEMPOTENCIA: Erro idempotência. + • NAO_INFORMADO: Não informado. + detail: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + example: 'Forma de pagamento [Modalidade] não suportada.' + description: | + Descrição específica do erro de acordo com o código reportado: + • FORMA_PAGAMENTO_INVALIDA: Forma de pagamento [Modalidade] não suportada. + • DATA_PAGAMENTO_INVALIDA: Data de pagamento inválida para a forma de pagamento selecionada. + • DETALHE_PAGAMENTO_INVALIDO: Parâmetro [nome_campo] não obedece às regras de negócio. + • PARAMETRO_NAO_INFORMADO: Parâmetro [nome_campo] obrigatório não informado. + • PARAMETRO_INVALIDO: Parâmetro [nome_campo] não obedece as regras de formatação esperadas. + • ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). + • NAO_INFORMADO: Não reportado/identificado pela instituição detentora de conta. + meta: + $ref: '#/components/schemas/Meta' + 422ResponseErrorCreatePixPayments: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 9 + items: + type: object + required: + - code + - title + - detail + properties: + code: + $ref: '#/components/schemas/EnumErrorsCreatePayment' + title: + type: string + maxLength: 255 + pattern: '[\w\W\s]*' + example: Saldo insuficiente. + description: | + Título específico do erro reportado, de acordo com o código enviado: + + • SALDO_INSUFICIENTE: Saldo insuficiente. + + • VALOR_ACIMA_LIMITE: Acima do limite estabelecido. + + • VALOR_INVALIDO: Valor inválido. + + • COBRANCA_INVALIDA: Cobrança inválida. + + • CONSENTIMENTO_INVALIDO: Consentimento inválido. + + • PARAMETRO_NAO_INFORMADO: Parâmetro obrigatório não informado. + + • PARAMETRO_INVALIDO: Parâmetro com valor inválido. + + • NAO_INFORMADO: Não informado. + + • PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Divergência entre pagamento e consentimento. + + • DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido. + + • PAGAMENTO_RECUSADO_DETENTORA: Pagamento recusado pela detentora de conta. + + • PAGAMENTO_RECUSADO_SPI: Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI). + + • ERRO_IDEMPOTENCIA: Erro idempotência. + detail: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + example: A conta selecionada não possui saldo suficiente para realizar o pagamento. + description: | + Descrição específica do erro de acordo com o código reportado: + + • SALDO_INSUFICIENTE: A conta selecionada não possui saldo suficiente para realizar o pagamento. + + • VALOR_ACIMA_LIMITE: O valor (ou quantidade de transações) ultrapassa a faixa de limite parametrizada na detentora para permitir a realização de transações pelo cliente. + + • VALOR_INVALIDO: O valor enviado não é válido para o QR Code informado. + + • COBRANCA_INVALIDA: Validação de expiração, validação de vencimento ou Status Válido. + + • CONSENTIMENTO_INVALIDO: Consentimento inválido (status diferente de "AUTHORISED" ou está expirado). + + • PARAMETRO_NAO_INFORMADO: endToEndId + + • PARAMETRO_INVALIDO: endToEndId + + • NAO_INFORMADO: Não reportado/identificado pela instituição detentora de conta. + + • PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Dados do pagamento divergentes dos dados do consentimento. + + • DETALHE_PAGAMENTO_INVALIDO: Parâmetro [nome_campo] não obedece às regras de negócio. + + • PAGAMENTO_RECUSADO_DETENTORA: [descrição do motivo de recusa]. + + • PAGAMENTO_RECUSADO_SPI: [código de erro conforme tabela de domínios reason PACS.002]. + + • ERRO_IDEMPOTENCIA: Conteúdo da mensagem (claim data) diverge do conteúdo associado a esta chave de idempotência (x-idempotency-key). + meta: + $ref: '#/components/schemas/Meta' + 422ResponseErrorCreatePixPayment: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 9 + items: + type: object + required: + - code + - title + - detail + properties: + code: + $ref: '#/components/schemas/EnumErrorsCreatePixPayment' + title: + type: string + maxLength: 255 + pattern: '[\w\W\s]*' + example: Pagamento não permite cancelamento. + description: | + Título específico do erro reportado, de acordo com o código enviado: + + • PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento não permite cancelamento + detail: + type: string + maxLength: 2048 + pattern: '[\w\W\s]*' + example: Pagamento não permite cancelamento. + description: | + Descrição específica do erro de acordo com o código reportado: + + • PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento não permite cancelamento + meta: + $ref: '#/components/schemas/Meta' + BusinessEntity: + type: object + description: 'Usuário (pessoa jurídica) que encontra-se logado na instituição Iniciadora de Pagamento. [Restrição] Preenchimento obrigatório se usuário logado na instituição Iniciadora de Pagamento for um CNPJ (pessoa jurídica).' + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 14 + description: Número do documento de identificação oficial do titular pessoa jurídica. + example: '11111111111111' + pattern: '^\d{14}$' + rel: + type: string + maxLength: 4 + description: Tipo do documento de identificação oficial do titular pessoa jurídica. + example: CNPJ + pattern: '^[A-Z]{4}$' + CreatePaymentConsent: + type: object + required: + - data + properties: + data: + type: object + description: Objeto contendo as informações de consentimento para a iniciação de pagamento individual. + required: + - loggedUser + - creditor + - payment + properties: + loggedUser: + $ref: '#/components/schemas/LoggedUser' + businessEntity: + $ref: '#/components/schemas/BusinessEntity' + creditor: + $ref: '#/components/schemas/Identification' + payment: + type: object + description: Objeto contendo dados de pagamento para consentimento. + required: + - type + - currency + - amount + - details + properties: + type: + $ref: '#/components/schemas/EnumPaymentType' + schedule: + oneOf: + - $ref: '#/components/schemas/Schedule' + date: + type: string + format: date + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2021-01-01' + description: | + [Restrição] Mutuamente excludente com o objeto schedule. + + Este campo é obrigatório no caso de pagamento único. + + Neste caso, o objeto schedule não deve ser informado. + currency: + type: string + maxLength: 3 + pattern: '^([A-Z]{3})$' + example: BRL + description: | + Código da moeda nacional segundo modelo ISO-4217, ou seja, 'BRL'. + Todos os valores monetários informados estão representados com a moeda vigente do Brasil. + amount: + type: string + minLength: 4 + maxLength: 19 + pattern: '^((\d{1,16}\.\d{2}))$' + example: '100000.12' + description: | + Valor da transação com 2 casas decimais. O valor deve ser o mesmo enviado no consentimento. + + Para QR Code estático com valor pré-determinado no QR Code ou para QR Code dinâmico com indicação de que o valor não pode ser alterado: O campo amount deve ser preenchido com o valor estabelecido no QR Code. + Caso seja preenchido com valor divergente do QR Code, deve ser retornado um erro HTTP Status 422. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + details: + $ref: '#/components/schemas/Details' + debtorAccount: + $ref: '#/components/schemas/DebtorAccount' + CreatePixPayment: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/CreatePixPaymentData' + CreatePixPaymentData: + type: object + description: Objeto contendo dados do pagamento e do recebedor (creditor). + required: + - endToEndId + - localInstrument + - payment + - creditorAccount + - cnpjInitiator + properties: + endToEndId: + $ref: '#/components/schemas/EndToEndIdWithoutRestriction' + localInstrument: + $ref: '#/components/schemas/EnumLocalInstrument' + payment: + $ref: '#/components/schemas/PaymentPix' + creditorAccount: + $ref: '#/components/schemas/PaymentsCreditorAccount' + remittanceInformation: + type: string + maxLength: 140 + pattern: '[\w\W\s]*' + example: Pagamento da nota XPTO035-002. + description: | + Deve ser preenchido sempre que o usuário pagador inserir alguma informação adicional em um pagamento, a ser enviada ao recebedor. + qrCode: + type: string + maxLength: 512 + pattern: '[\w\W\s]*' + example: | + 00020104141234567890123426660014BR.GOV.BCB.PIX014466756C616E6F32303139406578616D706C652E636F6D27300012 + BR.COM.OUTRO011001234567895204000053039865406123.455802BR5915NOMEDORECEBEDOR6008BRASILIA61087007490062 + 530515RP12345678-201950300017BR.GOV.BCB.BRCODE01051.0.080450014BR.GOV.BCB.PIX0123PADRAO.URL.PIX/0123AB + CD81390012BR.COM.OUTRO01190123.ABCD.3456.WXYZ6304EB76 + description: | + Sequência de caracteres que corresponde ao QR Code disponibilizado para o pagador. + É a sequência de caracteres que seria lida pelo leitor de QR Code, e deve propiciar o retorno dos dados do pagador após consulta na DICT. + Essa funcionalidade é possível tanto para QR Code estático quanto para QR Code dinâmico. + No arranjo do Pix esta é a mesma sequência gerada e/ou lida pela funcionalidade Pix Copia e Cola. + Este campo deverá ser no formato UTF-8. + [Restrição] Preenchimento obrigatório para pagamentos por QR Code, observado o tamanho máximo de 512 bytes. + proxy: + type: string + maxLength: 77 + pattern: '[\w\W\s]*' + example: '12345678901' + description: | + Chave cadastrada no DICT pertencente ao recebedor. Os tipos de chaves podem ser: telefone, e-mail, cpf/cnpj ou chave aleatória. + No caso de telefone celular deve ser informado no padrão E.1641. + Para e-mail deve ter o formato xxxxxxxx@xxxxxxx.xxx(.xx) e no máximo 77 caracteres. + No caso de CPF deverá ser informado com 11 números, sem pontos ou traços. + Para o caso de CNPJ deverá ser informado com 14 números, sem pontos ou traços. + No caso de chave aleatória deve ser informado o UUID gerado pelo DICT, conforme formato especificado na RFC41223. + Se informado, a detentora da conta deve validar o proxy no DICT quando localInstrument for igual a DICT, QRDN ou QRES e validar o campo creditorAccount. + Esta validação é opcional caso o localInstrument for igual a INIC. + [Restrição] Se localInstrument for igual a MANU, o campo proxy não deve ser preenchido. Se localInstrument for igual INIC, DICT, QRDN ou QRES, o campo proxy deve ser sempre preenchido com a chave Pix. + cnpjInitiator: + type: string + pattern: '^\d{14}$' + maxLength: 14 + example: '50685362000135' + description: CNPJ do Iniciador de Pagamento devidamente habilitado para a prestação de Serviço de Iniciação no Pix. + transactionIdentification: + type: string + pattern: '^[a-zA-Z0-9]{1,35}$' + maxLength: 35 + example: E00038166201907261559y6j6 + description: | + Trata-se de um identificador de transação que deve ser retransmitido intacto pelo PSP do pagador ao gerar a ordem de pagamento. Essa informação permitirá ao recebedor identificar e correlacionar a transferência, quando recebida, com a apresentação das instruções ao pagador. + Os caracteres permitidos no contexto do Pix para o campo txid (EMV 62-05) são: + - Letras minúsculas, de ‘a’ a ‘z’ + - Letras maiúsculas, de ‘A’ a ‘z’ + - Dígitos decimais, de ‘0’ a ‘9’ + + [Restrição] Preenchimento condicional de acordo com o conteúdo do campo localInstument: + + – MANU - O campo transactionIdentification não deve ser preenchido. + – DICT - O campo transactionIdentification não deve ser preenchido. + – INIC - O campo transactionIdentification deve ser preenchido obrigatoriamente e deve conter até 25 caracteres alfanuméricos ([a-z|A-Z|0-9]). + – QRES - Caso o QR Code estático possua o dado <TxId> preenchido, o campo transactionIdentification deverá ser preenchido com este valor, caso o QR Code não possua o <TxId> o campo transactionIdentification não deverá ser preenchido. O <TxId> deve conter até 25 caracteres alfanuméricos ([a-z|A-Z|0-9]). + – QRDN - Será obrigatório seu preenchimento com o <TxId> do payload JSON do QR Code dinâmico. O <TxId> deve conter entre 26 e 35 caracteres alfanuméricos ([a-z|A-Z|0-9]). + + A detentora de conta deve validar se a condicionalidade e o formato do campo foram atendidas pela iniciadora de pagamento. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + authorisationFlow: + type: string + enum: + - HYBRID_FLOW + - CIBA_FLOW + example: HYBRID_FLOW + description: | + Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. + + [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. + CreditorAccount: + type: object + description: | + Objeto que contém a identificação da conta de destino do beneficiário/recebedor. + required: + - ispb + - number + - accountType + properties: + ispb: + type: string + minLength: 8 + maxLength: 8 + pattern: '^[0-9]{8}$' + example: '12345678' + description: | + Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. + issuer: + type: string + minLength: 1 + maxLength: 4 + pattern: '^[0-9]{1,4}$' + example: '1774' + description: | + Código da Agência emissora da conta sem dígito. + (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, + no exercício de atividades da instituição, não podendo ser móvel ou transitória). + [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA), SVGS (CONTA_POUPANCA) e SLRY (CONTA_SALARIO). + number: + type: string + minLength: 1 + maxLength: 20 + pattern: '^[0-9]{1,20}$' + example: '1234567890' + description: | + Deve ser preenchido com o número da conta do usuário recebedor, com dígito verificador (se este existir), + se houver valor alfanumérico, este deve ser convertido para 0. + accountType: + $ref: '#/components/schemas/EnumAccountPaymentsType' + PaymentsCreditorAccount: + type: object + description: | + Objeto que contém a identificação da conta de destino do beneficiário/recebedor. + required: + - ispb + - number + - accountType + properties: + ispb: + type: string + minLength: 8 + maxLength: 8 + pattern: '^[0-9]{8}$' + example: '12345678' + description: | + Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. + issuer: + type: string + minLength: 1 + maxLength: 4 + pattern: '^[0-9]{1,4}$' + example: '1774' + description: | + Código da Agência emissora da conta sem dígito. + (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, + no exercício de atividades da instituição, não podendo ser móvel ou transitória). + [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA), SVGS (CONTA_POUPANCA) e SLRY (CONTA_SALARIO). + number: + type: string + minLength: 1 + maxLength: 20 + pattern: '^[0-9]{1,20}$' + example: '1234567890' + description: | + Deve ser preenchido com o número da conta do usuário recebedor, com dígito verificador (se este existir), + se houver valor alfanumérico, este deve ser convertido para 0. + accountType: + $ref: '#/components/schemas/EnumPaymentsAccountPaymentsType' + DebtorAccount: + type: object + description: | + Objeto que contém a identificação da conta de origem do pagador. + As informações quanto à conta de origem do pagador poderão ser trazidas no consentimento para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do pagamento. + required: + - ispb + - number + - accountType + properties: + ispb: + type: string + minLength: 8 + maxLength: 8 + pattern: '^[0-9]{8}$' + example: '12345678' + description: | + Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. + issuer: + type: string + minLength: 1 + maxLength: 4 + pattern: '^[0-9]{1,4}$' + example: '1774' + description: | + Código da Agência emissora da conta sem dígito. + (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, + no exercício de atividades da instituição, não podendo ser móvel ou transitória). + [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA), SVGS (CONTA_POUPANCA) e SLRY (CONTA_SALARIO). + number: + type: string + minLength: 1 + maxLength: 20 + pattern: '^[0-9]{1,20}$' + example: '1234567890' + description: | + Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir), + se houver valor alfanumérico, este deve ser convertido para 0. + accountType: + $ref: '#/components/schemas/EnumAccountPaymentsType' + PaymentsDebtorAccount: + type: object + description: | + Objeto que contém a identificação da conta de origem do pagador. + As informações quanto à conta de origem do pagador poderão ser trazidas no consentimento para a detentora, caso a iniciadora tenha coletado essas informações do cliente. Do contrário, será coletada na detentora e trazida para a iniciadora como resposta à criação do pagamento. + required: + - ispb + - number + - accountType + properties: + ispb: + type: string + minLength: 8 + maxLength: 8 + pattern: '^[0-9]{8}$' + example: '12345678' + description: | + Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. + issuer: + type: string + minLength: 1 + maxLength: 4 + pattern: '^[0-9]{1,4}$' + example: '1774' + description: | + Código da Agência emissora da conta sem dígito. + (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, + no exercício de atividades da instituição, não podendo ser móvel ou transitória). + [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA), SVGS (CONTA_POUPANCA) e SLRY (CONTA_SALARIO). + number: + type: string + minLength: 1 + maxLength: 20 + pattern: '^[0-9]{1,20}$' + example: '1234567890' + description: | + Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir), + se houver valor alfanumérico, este deve ser convertido para 0. + accountType: + $ref: '#/components/schemas/EnumPaymentsAccountPaymentsType' + ConsentsDebtorAccount: + type: object + description: | + Objeto que contém a identificação da conta de origem do pagador. + As informações quanto à conta de origem do pagador poderão ser trazidas no consentimento para a detentora, caso a iniciadora tenha coletado essas informações do cliente. + No caso em que o cliente não preenche os dados na iniciadora, a detentora deverá persistir as informações da conta selecionada seguindo as condições abaixo. + + [Restrição] + - AUTHORISED e CONSUMED: Para esses dois status, o preenchimento do campo deverá ser obrigatório. + - REJECTED: Para este status o preenchimento é condicional, dado que há cenários em que a detentora também não terá conhecimento da conta origem, pois a mesma não foi selecionada pelo usuário. Nos casos em que houver seleção, a conta deve ser preenchida obrigatoriamente. + required: + - ispb + - number + - accountType + properties: + ispb: + type: string + minLength: 8 + maxLength: 8 + pattern: '^[0-9]{8}$' + example: '12345678' + description: | + Deve ser preenchido com o ISPB (Identificador do Sistema de Pagamentos Brasileiros) do participante do SPI (Sistema de pagamentos instantâneos) somente com números. + issuer: + type: string + minLength: 1 + maxLength: 4 + pattern: '^[0-9]{1,4}$' + example: '1774' + description: | + Código da Agência emissora da conta sem dígito. + (Agência é a dependência destinada ao atendimento aos clientes, ao público em geral e aos associados de cooperativas de crédito, + no exercício de atividades da instituição, não podendo ser móvel ou transitória). + [Restrição] Preenchimento obrigatório para os seguintes tipos de conta: CACC (CONTA_DEPOSITO_A_VISTA), SVGS (CONTA_POUPANCA) e SLRY (CONTA_SALARIO). + number: + type: string + minLength: 1 + maxLength: 20 + pattern: '^[0-9]{1,20}$' + example: '1234567890' + description: | + Deve ser preenchido com o número da conta transacional do usuário pagador, com dígito verificador (se este existir), + se houver valor alfanumérico, este deve ser convertido para 0. + accountType: + $ref: '#/components/schemas/EnumAccountPaymentsType' + Details: + type: object + description: | + Objeto contendo os detalhes do pagamento. + required: + - localInstrument + - creditorAccount + properties: + localInstrument: + $ref: '#/components/schemas/EnumLocalInstrument' + qrCode: + type: string + maxLength: 512 + pattern: '[\w\W\s]*' + example: | + 00020104141234567890123426660014BR.GOV.BCB.PIX014466756C616E6F32303139406578616D706C652E636F6D27300012 + BR.COM.OUTRO011001234567895204000053039865406123.455802BR5915NOMEDORECEBEDOR6008BRASILIA61087007490062 + 530515RP12345678-201950300017BR.GOV.BCB.BRCODE01051.0.080450014BR.GOV.BCB.PIX0123PADRAO.URL.PIX/0123AB + CD81390012BR.COM.OUTRO01190123.ABCD.3456.WXYZ6304EB76 + description: | + Sequência de caracteres que corresponde ao QR Code disponibilizado para o pagador. + É a sequência de caracteres que seria lida pelo leitor de QR Code, e deve propiciar o retorno dos dados do pagador após consulta na DICT. + Essa funcionalidade é possível tanto para QR Code estático quanto para QR Code dinâmico. + No arranjo do Pix esta é a mesma sequência gerada e/ou lida pela funcionalidade Pix Copia e Cola. + Este campo deverá ser no formato UTF-8. + [Restrição] Preenchimento obrigatório para pagamentos por QR Code, observado o tamanho máximo de 512 bytes. + proxy: + type: string + maxLength: 77 + pattern: '[\w\W\s]*' + example: '12345678901' + description: | + Chave cadastrada no DICT pertencente ao recebedor. Os tipos de chaves podem ser: telefone, e-mail, cpf/cnpj ou chave aleatória. + No caso de telefone celular deve ser informado no padrão E.1641. + Para e-mail deve ter o formato xxxxxxxx@xxxxxxx.xxx(.xx) e no máximo 77 caracteres. + No caso de CPF deverá ser informado com 11 números, sem pontos ou traços. + Para o caso de CNPJ deverá ser informado com 14 números, sem pontos ou traços. + No caso de chave aleatória deve ser informado o UUID gerado pelo DICT, conforme formato especificado na RFC41223. + Se informado, a detentora da conta deve validar o proxy no DICT quando localInstrument for igual a DICT, QRDN ou QRES e validar o campo creditorAccount. + Esta validação é opcional caso o localInstrument for igual a INIC. + [Restrição] + Se localInstrument for igual a MANU, o campo proxy não deve ser preenchido. + Se localInstrument for igual INIC, DICT, QRDN ou QRES, o campo proxy deve ser sempre preenchido com a chave Pix. + creditorAccount: + $ref: '#/components/schemas/CreditorAccount' + EndToEndId: + type: string + minLength: 32 + maxLength: 32 + pattern: '^([E])([0-9]{8})([0-9]{4})(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])(2[0-3]|[01][0-9])([0-5][0-9])([a-zA-Z0-9]{11})$' + example: E9040088820210128000800123873170 + description: | + Trata-se de um identificador único, gerado na instituição iniciadora de pagamento e recebido na instituição detentora de conta, permeando toda a jornada do pagamento Pix. + + [Restrição] A detentora deve obrigatoriamente retornar o campo Com o mesmo valor recebido da iniciadora. + EndToEndIdWithoutRestriction: + type: string + minLength: 32 + maxLength: 32 + pattern: '^([E])([0-9]{8})([0-9]{4})(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])(2[0-3]|[01][0-9])([0-5][0-9])([a-zA-Z0-9]{11})$' + example: E9040088820210128000800123873170 + description: | + Deve ser preenchido no formato padrão ExxxxxxxxyyyyMMddHHmmkkkkkkkkkkk (32 caracteres; “case sensitive”, isso é, diferencia letras maiúsculas e minúsculas), sendo: + + • “E” – fixo (1 caractere); + + • xxxxxxxx – identificação do agente que gerou o ´EndToEndId´, podendo ser: o ISPB do participante direto ou o ISPB do participante indireto (8 caracteres numéricos [0-9]); + + • yyyyMMddHHmm – data, hora e minuto (12 caracteres), seguindo o horário UTC, da submissão da ordem de pagamento, caso a liquidação seja prioritária, ou prevista para o envio da ordem ao sistema de liquidação, caso seja realizado um agendamento. Para ordens prioritárias e não prioritárias, aceita-se o preenchimento, pelo agente que gerou o ´EndToEndId´, com uma tolerância máxima de 12 horas, para o futuro e para o passado, em relação ao horário efetivo de processamento da ordem pelo SPI; + + • kkkkkkkkkkk – sequencial criado pelo agente que gerou o ´EndToEndId´ (11 caracteres alfanuméricos [a-z/A-Z/0-9]). Deve ser único dentro de cada “yyyyMMddHHmm”. + + Admite-se que o ´EndToEndId´ seja gerado pelo participante direto, pelo participante indireto ou pelo iniciador de pagamento. + + Ele deve ser único, não podendo ser repetido em qualquer outra operação enviada ao SPI. + + No caso de Pix agendamento, a iniciadora deverá, no que tange a composição do endToEndId, utilizar a data para a qual o Pix está sendo agendado e horário fixo 15:00 UTC, que dará para a detentora a janela de efetivação de 00:00 e 23:59 do horário de Brasília. + EnumAccountPaymentsType: + type: string + enum: + - CACC + - SLRY + - SVGS + - TRAN + example: CACC + description: | + Tipos de contas usadas para pagamento. + Modalidades tradicionais previstas pela Resolução 4.753, não contemplando contas vinculadas, + conta de domiciliados no exterior, contas em moedas estrangeiras e conta correspondente moeda eletrônica. + Segue descrição de cada valor do ENUM. + + - CACC - Current - Conta Corrente. + - SLRY - Salary - Conta-Salário. + - SVGS - Savings - Conta de Poupança. + - TRAN - TransactingAccount - Conta de Pagamento pré-paga. + EnumPaymentsAccountPaymentsType: + type: string + enum: + - CACC + - SVGS + - TRAN + example: CACC + description: | + Tipos de contas usadas para pagamento. + Modalidades tradicionais previstas pela Resolução 4.753, não contemplando contas vinculadas, + conta de domiciliados no exterior, contas em moedas estrangeiras e conta correspondente moeda eletrônica. + Segue descrição de cada valor do ENUM. + + - CACC - Current - Conta Corrente. + - SVGS - Savings - Conta de Poupança. + - TRAN - TransactingAccount - Conta de Pagamento pré-paga. + EnumAuthorisationStatusType: + type: string + enum: + - AWAITING_AUTHORISATION + - AUTHORISED + - REJECTED + - CONSUMED + example: AWAITING_AUTHORISATION + description: | + Retorna o estado do consentimento, o qual no momento de sua criação será AWAITING_AUTHORISATION. + Este estado será alterado depois da autorização do consentimento na detentora da conta do pagador (Debtor) para AUTHORISED ou REJECTED. + O consentimento fica no estado CONSUMED após ocorrer a iniciação do pagamento referente ao consentimento. + Em caso de consentimento expirado a detentora deverá retornar o status REJECTED. + Estados possíveis: + AWAITING_AUTHORISATION - Aguardando autorização + AUTHORISED - Autorizado + REJECTED - Rejeitado + CONSUMED - Consumido + EnumErrorsCreatePixPayment: + type: string + enum: + - PAGAMENTO_NAO_PERMITE_CANCELAMENTO + example: PAGAMENTO_NAO_PERMITE_CANCELAMENTO + description: | + Códigos de erros previstos na criação da iniciação de pagamento: + + • PAGAMENTO_NAO_PERMITE_CANCELAMENTO: Pagamento não permite cancelamento + EnumErrorsCreatePayment: + type: string + enum: + - SALDO_INSUFICIENTE + - VALOR_ACIMA_LIMITE + - VALOR_INVALIDO + - COBRANCA_INVALIDA + - CONSENTIMENTO_INVALIDO + - PARAMETRO_NAO_INFORMADO + - PARAMETRO_INVALIDO + - NAO_INFORMADO + - PAGAMENTO_DIVERGENTE_CONSENTIMENTO + - DETALHE_PAGAMENTO_INVALIDO + - PAGAMENTO_RECUSADO_DETENTORA + - PAGAMENTO_RECUSADO_SPI + - ERRO_IDEMPOTENCIA + example: SALDO_INSUFICIENTE + description: | + Códigos de erros previstos na criação da iniciação de pagamento: + + • SALDO_INSUFICIENTE: Esta conta não possui saldo suficiente para realizar o pagamento. + + • VALOR_ACIMA_LIMITE: O valor (ou quantidade de transações) ultrapassa a faixa de limite parametrizada na detentora para permitir a realização de transações pelo cliente. + + • VALOR_INVALIDO: O valor enviado não é válido para o QR Code informado. + + • COBRANCA_INVALIDA: Validação de expiração, validação de vencimento, Status Válido. + + • CONSENTIMENTO_INVALIDO: Consentimento inválido (status não é "authorised" ou está expirado). + + • PARAMETRO_NAO_INFORMADO: Parâmetro não informado. + + • PARAMETRO_INVALIDO: Parâmetro inválido. + + • NAO_INFORMADO: Não informada pela detentora de conta. + + • PAGAMENTO_DIVERGENTE_CONSENTIMENTO: Dados do pagamento divergentes dos dados do consentimento. + + • DETALHE_PAGAMENTO_INVALIDO: Detalhe do pagamento inválido. + + • PAGAMENTO_RECUSADO_DETENTORA: Pagamento recusado pela detentora de conta. + + • PAGAMENTO_RECUSADO_SPI: Pagamento recusado no Sistema de Pagamentos Instantâneos (SPI). + + • ERRO_IDEMPOTENCIA: Erro idempotência. + EnumLocalInstrument: + type: string + enum: + - MANU + - DICT + - QRDN + - QRES + - INIC + example: DICT + description: | + Especifica a forma de iniciação do pagamento: + - MANU - Inserção manual de dados da conta transacional + - DICT - Inserção manual de chave Pix + - QRDN - QR code dinâmico + - QRES - QR code estático + - INIC - Indica que o recebedor (creditor) contratou o Iniciador de Pagamentos especificamente para realizar iniciações de pagamento em que o beneficiário é previamente conhecido. + EnumPaymentCancellationStatusType: + type: string + enum: + - CANC + example: CANC + description: | + Utilizado para informar para qual estado deve ir o pagamento. + Atualmente o único valor possível é CANC. + EnumPaymentPersonType: + type: string + enum: + - PESSOA_NATURAL + - PESSOA_JURIDICA + description: | + Titular, pessoa natural ou juridica a quem se referem os dados de recebedor (creditor). + EnumPaymentStatusType: + type: string + enum: + - RCVD + - PATC + - CANC + - ACCP + - ACPD + - RJCT + - ACSC + - PDNG + - SCHD + example: PDNG + description: | + Estado atual da iniciação de pagamento. O estado evolui na seguinte ordem: + + 1. RCVD (Received) - Indica que a requisição de pagamento foi recebida com sucesso pela detentora, mas ainda há validações a serem feitas antes de ser submetida para liquidação. + + 2. PATC (Partially Accepted Technical Correct) - Indica que a transação precisa da confirmação de mais autorizadores para que o processamento do pagamento possa prosseguir. + + 3. CANC (Cancelled) - Indica que a transação Pix pendente foi cancelada com sucesso pelo usuário antes que fosse confirmada (ACCP) ou rejeitada (RJCT) pela detentora. + + 4. ACCP( Accepted Customer Profile) - Indica que todas as verificações necessárias já foram realizadas pela detentora e que a transação está pronta para ser enviada para liquidação (no SPI se for Pix para outra instituição ou internamente se for para outra conta na mesma instituição). + + 5. ACPD (Accepted Clearing Processed) - Indica que a detentora já submeteu a transação para liquidação, mas ainda não tem a confirmação se foi liquidada ou rejeitada. + + 6. RJCT (Rejected) Indica que a transação foi rejeitada pela detentora ou pelo SPI. + + 7. ACSC (Accepted Settlement Completed Debitor Account) - Indica que a transação foi efetivada pela detentora ou pelo SPI. + + 8. PDNG (Pending) - Indica que a detentora reteve temporariamente a transação Pix para análise. + + 9. SCHD (Scheduled) - Indica que a transação Pix foi agendada com sucesso na detentora. + + Em caso insucesso: + + RJCT (REJECTED) - Instrução de pagamento rejeitada. + EnumPaymentType: + type: string + enum: + - PIX + example: PIX + description: | + Este campo define o tipo de pagamento que será iniciado após a autorização do consentimento. + EnumConsentRejectionReasonType: + type: string + enum: + - VALOR_INVALIDO + - NAO_INFORMADO + - FALHA_INFRAESTRUTURA + - TEMPO_EXPIRADO_AUTORIZACAO + - TEMPO_EXPIRADO_CONSUMO + - REJEITADO_USUARIO + - CONTAS_ORIGEM_DESTINO_IGUAIS + - CONTA_NAO_PERMITE_PAGAMENTO + - SALDO_INSUFICIENTE + - VALOR_ACIMA_LIMITE + - QRCODE_INVALIDO + example: SALDO_INSUFICIENTE + description: | + Define o código da razão pela qual o consentimento foi rejeitado + - VALOR_INVALIDO + - NAO_INFORMADO + - FALHA_INFRAESTRUTURA + - TEMPO_EXPIRADO_AUTORIZACAO + - TEMPO_EXPIRADO_CONSUMO + - REJEITADO_USUARIO + - CONTAS_ORIGEM_DESTINO_IGUAIS + - CONTA_NAO_PERMITE_PAGAMENTO + - SALDO_INSUFICIENTE + - VALOR_ACIMA_LIMITE + - QRCODE_INVALIDO + EnumRejectionReasonType: + type: string + enum: + - SALDO_INSUFICIENTE + - VALOR_ACIMA_LIMITE + - VALOR_INVALIDO + - COBRANCA_INVALIDA + - NAO_INFORMADO + - PAGAMENTO_DIVERGENTE_CONSENTIMENTO + - DETALHE_PAGAMENTO_INVALIDO + - PAGAMENTO_RECUSADO_DETENTORA + - PAGAMENTO_RECUSADO_SPI + - FALHA_INFRAESTRUTURA + - FALHA_INFRAESTRUTURA_SPI + - FALHA_INFRAESTRUTURA_DICT + - FALHA_INFRAESTRUTURA_ICP + - FALHA_INFRAESTRUTURA_PSP_RECEBEDOR + - FALHA_INFRAESTRUTURA_DETENTORA + - CONTAS_ORIGEM_DESTINO_IGUAIS + example: SALDO_INSUFICIENTE + description: | + Define o código da razão pela qual o pagamento foi rejeitado + + - SALDO_INSUFICIENTE - A conta selecionada não possui saldo suficiente para realizar o pagamento. + + - VALOR_ACIMA_LIMITE - O valor ultrapassa o limite estabelecido [na instituição/no arranjo/outro] para permitir a realização de transações pelo cliente. + + - VALOR_INVALIDO - O valor enviado não é válido para o QR Code informado. + + - COBRANCA_INVALIDA - Validação de expiração, validação de vencimento ou Status Válido. + + - NAO_INFORMADO - Não reportado/identificado pela instituição detentora de conta. + + - PAGAMENTO_DIVERGENTE_CONSENTIMENTO - Dados do pagamento divergentes dos dados do consentimento. + + - DETALHE_PAGAMENTO_INVALIDO - Parâmetro [nome_campo] não obedecer às regras de negócio. + + - PAGAMENTO_RECUSADO_DETENTORA - [Descrição do motivo de recusa]. + + - PAGAMENTO_RECUSADO_SPI - [Código de erro conforme tabela de domínios reason PACS.002]. + + - FALHA_INFRAESTRUTURA - [Descrição de qual falha na infraestrutura inviabilizou o processamento]. + + - FALHA_INFRAESTRUTURA_SPI - Indica uma falha no Sistema de Pagamentos Instantâneos (SPI). + + - FALHA_INFRAESTRUTURA_DICT - Indica uma falha no Diretório de Identificadores de Contas Transacionais (DICT). + + - FALHA_INFRAESTRUTURA_ICP - Indica uma falha na Infraestrutura de Chaves Públicas (ICP). + + - FALHA_INFRAESTRUTURA_PSP_RECEBEDOR - Indica uma falha na infraestrutura do Prestador de Serviço de Pagamento (PSP) que recebe o pagamento. + + - FALHA_INFRAESTRUTURA_DETENTORA - indica uma falha na infraestrutura da instituição detentora das informações ou recursos. + + - CONTAS_ORIGEM_DESTINO_IGUAIS - Indica uma tentativa de pagamento onde a conta origem e a conta de destino são iguais. + + O rejectionReason FALHA_INFRAESTRUTURA não será excluído, apenas deixará de ser utilizado, permitindo assim, retrocompatibilidade e integridade entre os participantes. + EnumPaymentCancellationReasonType: + type: string + enum: + - CANCELADO_PENDENCIA + - CANCELADO_AGENDAMENTO + - CANCELADO_MULTIPLAS_ALCADAS + example: CANCELADO_PENDENCIA + description: | + O preenchimento desse campo para retorno, deve ocorrer pela detentora de contas a partir do status em que o pagamento estiver no momento da solicitação do cancelamento (ex. Status de pagamento = PDNG, campo deve ser preenchido com enum CANCELADO_PENDENCIA) + + Valores possíveis: + + CANCELADO_PENDENCIA - Pagamento cancelado enquanto estava na situação PDNG + + CANCELADO_AGENDAMENTO - Pagamento cancelado enquanto estava na situação SCHD + + CANCELADO_MULTIPLAS_ALCADAS - Pagamento cancelado enquanto estava na situação PATC + EnumPaymentCancellationFromType: + type: string + enum: + - INICIADORA + - DETENTORA + example: INICIADORA + description: | + Campo utilizado para informar o meio pelo qual foi realizado o cancelamento. + + Valores possíveis: + + INICIADORA - Pagamento cancelado pelo usuário pagador nos canais da iniciadora + + DETENTORA - Pagamento cancelado pelo usuário pagador nos canais da detentora + ConsentRejectionReason: + type: object + description: Motivo da rejeição do consentimento. Informações complementares sobre o motivo do status + required: + - code + - detail + properties: + code: + $ref: '#/components/schemas/EnumConsentRejectionReasonType' + detail: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + description: | + Contém informações adicionais ao consentimento rejeitado. + - FALHA_INFRAESTRUTURA: [Descrição de qual falha na infraestrutura inviabilizou o processamento]. + - TEMPO_EXPIRADO_AUTORIZACAO: Consentimento expirou antes que o usuário pudesse confirmá-lo. + - REJEITADO_USUARIO: O usuário rejeitou a autorização do consentimento + - CONTAS_ORIGEM_DESTINO_IGUAIS: A conta selecionada é igual à conta destino e não permite realizar esse pagamento. + - CONTA_NAO_PERMITE_PAGAMENTO: A conta selecionada é do tipo [salario/investimento/liquidação/outros] e não permite realizar esse pagamento. + - SALDO_INSUFICIENTE: A conta selecionada não possui saldo suficiente para realizar o pagamento. + - VALOR_ACIMA_LIMITE: O valor ultrapassa o limite estabelecido [na instituição/no arranjo/outro] para permitir a realização de transações pelo cliente. + - QRCODE_INVALIDO: O QRCode utilizado para a iniciação de pagamento não é válido. + example: O usuário rejeitou a autorização do consentimento + RejectionReason: + type: object + description: |- + Motivo da rejeição do pagamento. Informações complementares sobre o motivo do status + [Restrição] Esse motivo deverá ser enviado quando o campo /data/status for igual a RJCT (REJECTED). + required: + - code + - detail + properties: + code: + $ref: '#/components/schemas/EnumRejectionReasonType' + detail: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + description: Contém informações adicionais ao pagamento rejeitado + Identification: + type: object + description: Objeto contendo os dados do recebedor (creditor). + required: + - personType + - cpfCnpj + - name + properties: + personType: + $ref: '#/components/schemas/EnumPaymentPersonType' + cpfCnpj: + type: string + minLength: 11 + maxLength: 14 + pattern: '^\d{11}$|^\d{14}$' + example: '58764789000137' + description: | + Identificação da pessoa envolvida na transação. + Preencher com o CPF ou CNPJ, de acordo com o valor escolhido no campo type. + O CPF será utilizado com 11 números e deverá ser informado sem pontos ou traços. + O CNPJ será utilizado com 14 números e deverá ser informado sem pontos ou traços. + name: + type: string + pattern: ^([A-Za-zÀ-ÖØ-öø-ÿ,.@:&*+_<>()!?/\\$%\d' -]+)$ + maxLength: 120 + example: Marco Antonio de Brito + description: | + Em caso de pessoa natural deve ser informado o nome completo do titular da conta do recebedor. + Em caso de pessoa jurídica deve ser informada a razão social ou o nome fantasia da conta do recebedor. + LoggedUser: + type: object + description: Usuário (pessoa natural) que encontra-se logado na instituição Iniciadora de Pagamento. + required: + - document + properties: + document: + type: object + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento de identificação oficial do usuário. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento de identificação oficial do usuário. + example: CPF + pattern: '^[A-Z]{3}$' + Meta: + type: object + description: Meta informação referente a API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + LinkSingle: + type: object + description: Referências para outros recusos da API requisitada. + required: + - self + properties: + self: + type: string + format: uri + maxLength: 2000 + description: URI completo que gerou a resposta atual. + example: 'https://api.banco.com.br/open-banking/api/v1/resource' + pattern: '^(https:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&\/\/=]*)$' + PaymentConsent: + type: object + description: Objeto contendo dados de pagamento para consentimento. + required: + - type + - currency + - amount + - details + properties: + type: + $ref: '#/components/schemas/EnumPaymentType' + schedule: + oneOf: + - $ref: '#/components/schemas/Schedule' + date: + type: string + format: date + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2021-01-01' + description: | + [Restrição] Mutuamente excludente com o objeto schedule. + + Este campo é obrigatório no caso de pagamento único. + + Neste caso, o objeto schedule não deve ser informado. + currency: + type: string + maxLength: 3 + pattern: '^([A-Z]{3})$' + example: BRL + description: | + Código da moeda nacional segundo modelo ISO-4217, ou seja, 'BRL'. + Todos os valores monetários informados estão representados com a moeda vigente do Brasil. + amount: + type: string + minLength: 4 + maxLength: 19 + pattern: '^((\d{1,16}\.\d{2}))$' + example: '100000.12' + description: | + Valor da transação com 2 casas decimais. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + details: + $ref: '#/components/schemas/Details' + PaymentPix: + type: object + description: Objeto contendo dados do pagameto como moeda e valor. + required: + - amount + - currency + properties: + amount: + type: string + minLength: 4 + maxLength: 19 + pattern: '^((\d{1,16}\.\d{2}))$' + example: '100000.12' + description: | + Valor da transação com 2 casas decimais. O valor deve ser o mesmo enviado no consentimento. + + Para QR Code estático com valor pré-determinado no QR Code ou para QR Code dinâmico com indicação de que o valor não pode ser alterado: O campo amount deve ser preenchido com o valor estabelecido no QR Code. + Caso seja preenchido com valor divergente do QR Code, deve ser retornado um erro HTTP Status 422. + currency: + type: string + maxLength: 3 + pattern: '^([A-Z]{3})$' + example: BRL + description: | + Código da moeda nacional segundo modelo ISO-4217, ou seja, 'BRL'. + Todos os valores monetários informados estão representados com a moeda vigente do Brasil. + PatchPixPayment: + type: object + required: + - data + properties: + data: + $ref: '#/components/schemas/PatchPixPaymentData' + PatchPixPaymentData: + type: object + required: + - status + - cancellation + properties: + status: + $ref: '#/components/schemas/EnumPaymentCancellationStatusType' + cancellation: + type: object + description: | + Objeto que agrupa as informações de qual foi o usuário pagador que solicitou o cancelamento da transação. + Observação: este campo é necessário porque, em casos de múltiplas alçadas de autorização, é possível que o pagamento seja solicitado por um usuário pagador e cancelado por outro. + required: + - cancelledBy + properties: + cancelledBy: + type: object + description: Informação relacionada ao usuário pagador que solicitou o cancelamento do pagamento. + required: + - document + properties: + document: + type: object + description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento. + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: CPF + pattern: '^[A-Z]{3}$' + PatchPixPaymentCancellation: + type: object + description: | + Objeto que contém os dados referentes ao usuário pagador que solicitou o cancelamento, o canal utilizado por ele e o motivo. + required: + - cancelledAt + - cancelledBy + - reason + - cancelledFrom + properties: + reason: + $ref: '#/components/schemas/EnumPaymentCancellationReasonType' + cancelledFrom: + $ref: '#/components/schemas/EnumPaymentCancellationFromType' + cancelledAt: + type: string + description: 'Data e hora que foi realizado o cancelamento, conforme especificação RFC-3339, formato UTC.' + format: date-time + maxLength: 20 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2021-05-21T08:30:00Z' + cancelledBy: + type: object + description: Informação relacionada ao usuário pagador que solicitou o cancelamento do pagamento. + required: + - document + properties: + document: + type: object + description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento. + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: CPF + pattern: '^[A-Z]{3}$' + PixPaymentCancellation: + type: object + description: | + Objeto que contém os dados referentes ao usuário pagador que solicitou o cancelamento, o canal utilizado por ele e o motivo. + + [Restrição] O objeto cancellation será obrigatório apenas quando o valor do campo status for igual a CANC. + required: + - cancelledAt + - cancelledBy + - reason + - cancelledFrom + properties: + reason: + $ref: '#/components/schemas/EnumPaymentCancellationReasonType' + cancelledFrom: + $ref: '#/components/schemas/EnumPaymentCancellationFromType' + cancelledAt: + type: string + description: 'Data e hora que foi realizado o cancelamento, conforme especificação RFC-3339, formato UTC.' + format: date-time + maxLength: 20 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2021-05-21T08:30:00Z' + cancelledBy: + type: object + description: Informação relacionada ao usuário pagador que solicitou o cancelamento do pagamento. + required: + - document + properties: + document: + type: object + description: Objeto que consolida os dados do documento do usuário que solicitou o cancelamento. + required: + - identification + - rel + properties: + identification: + type: string + maxLength: 11 + description: Número do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: '11111111111' + pattern: '^\d{11}$' + rel: + type: string + maxLength: 3 + description: Tipo do documento do usuário pagador responsável pelo cancelamento do pagamento. + example: CPF + pattern: '^[A-Z]{3}$' + ResponseError: + type: object + required: + - errors + properties: + errors: + type: array + minItems: 1 + maxItems: 13 + items: + type: object + required: + - code + - title + - detail + properties: + code: + description: Código de erro específico do endpoint + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + title: + description: Título legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 255 + detail: + description: Descrição legível por humanos deste erro específico + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + meta: + type: object + description: Meta informações referente à API requisitada. + required: + - requestDateTime + properties: + requestDateTime: + description: 'Data e hora da consulta, conforme especificação RFC-3339, formato UTC.' + type: string + maxLength: 20 + format: date-time + example: '2021-05-21T08:30:00Z' + ResponsePaymentConsent: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Objeto contendo as informações de resposta do consentimento para a iniciação de pagamento individual. + required: + - consentId + - statusUpdateDateTime + - creationDateTime + - expirationDateTime + - status + - loggedUser + - creditor + - payment + properties: + consentId: + type: string + maxLength: 256 + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + example: 'urn:bancoex:C1DD33123' + description: | + Identificador único do consentimento criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + creationDateTime: + description: 'Data e hora em que o consentimento foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + expirationDateTime: + description: | + Data e hora em que o consentimento da iniciação de pagamento expira, devendo ser sempre o creationDateTime mais 5 minutos. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC (UTC time format). + O consentimento é criado com o status AWAITING_AUTHORISATION, e deve assumir o status AUTHORIZED ou REJECTED antes do tempo de expiração - 5 minutos. Caso o tempo seja expirado, o status deve assumir REJECTED. + Para o cenário em que o status assumiu AUTHORISED, o tempo máximo do expirationDateTime do consentimento deve assumir "now + 60 minutos". Este é o tempo para consumir o consentimento autorizado, mudando seu status para CONSUMED. Não é possível prorrogar este tempo e a criação de um novo consentimento será necessária para os cenários de insucesso. + O tempo do expirationDateTime é garantido com os 15 minutos do access token, sendo possível utilizar mais três refresh tokens até totalizar 60 minutos. + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + statusUpdateDateTime: + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + description: | + Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format). + status: + $ref: '#/components/schemas/EnumAuthorisationStatusType' + loggedUser: + $ref: '#/components/schemas/LoggedUser' + businessEntity: + $ref: '#/components/schemas/BusinessEntity' + creditor: + $ref: '#/components/schemas/Identification' + payment: + $ref: '#/components/schemas/PaymentConsent' + debtorAccount: + $ref: '#/components/schemas/ConsentsDebtorAccount' + rejectionReason: + $ref: '#/components/schemas/ConsentRejectionReason' + links: + $ref: '#/components/schemas/LinkSingle' + meta: + $ref: '#/components/schemas/Meta' + ResponseCreatePaymentConsent: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Objeto contendo as informações de resposta do consentimento para a iniciação de pagamento individual. + required: + - consentId + - statusUpdateDateTime + - creationDateTime + - expirationDateTime + - status + - loggedUser + - creditor + - payment + properties: + consentId: + type: string + maxLength: 256 + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + example: 'urn:bancoex:C1DD33123' + description: | + Identificador único do consentimento criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + creationDateTime: + description: 'Data e hora em que o consentimento foi criado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format).' + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + expirationDateTime: + description: | + Data e hora em que o consentimento da iniciação de pagamento expira, devendo ser sempre o creationDateTime mais 5 minutos. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC (UTC time format). + O consentimento é criado com o status AWAITING_AUTHORISATION, e deve assumir o status AUTHORIZED ou REJECTED antes do tempo de expiração - 5 minutos. Caso o tempo seja expirado, o status deve assumir REJECTED. + Para o cenário em que o status assumiu AUTHORISED, o tempo máximo do expirationDateTime do consentimento deve assumir "now + 60 minutos". Este é o tempo para consumir o consentimento autorizado, mudando seu status para CONSUMED. Não é possível prorrogar este tempo e a criação de um novo consentimento será necessária para os cenários de insucesso. + O tempo do expirationDateTime é garantido com os 15 minutos do access token, sendo possível utilizar mais três refresh tokens até totalizar 60 minutos. + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + statusUpdateDateTime: + type: string + format: date-time + example: '2021-05-21T08:30:00Z' + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + maxLength: 20 + description: | + Data e hora em que o recurso foi atualizado. Uma string com data e hora conforme especificação RFC-3339, sempre com a utilização de timezone UTC(UTC time format). + status: + $ref: '#/components/schemas/EnumAuthorisationStatusType' + loggedUser: + $ref: '#/components/schemas/LoggedUser' + businessEntity: + $ref: '#/components/schemas/BusinessEntity' + creditor: + $ref: '#/components/schemas/Identification' + payment: + type: object + description: Objeto contendo dados de pagamento para consentimento. + required: + - type + - currency + - amount + - details + properties: + type: + $ref: '#/components/schemas/EnumPaymentType' + schedule: + oneOf: + - $ref: '#/components/schemas/Schedule' + date: + type: string + format: date + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2021-01-01' + description: | + [Restrição] Mutuamente excludente com o objeto schedule. + + Este campo é obrigatório no caso de pagamento único. + + Neste caso, o objeto schedule não deve ser informado. + currency: + type: string + maxLength: 3 + pattern: '^([A-Z]{3})$' + example: BRL + description: | + Código da moeda nacional segundo modelo ISO-4217, ou seja, 'BRL'. + Todos os valores monetários informados estão representados com a moeda vigente do Brasil. + amount: + type: string + minLength: 4 + maxLength: 19 + pattern: '^((\d{1,16}\.\d{2}))$' + example: '100000.12' + description: | + Valor da transação com 2 casas decimais. O valor deve ser o mesmo enviado no consentimento. + + Para QR Code estático com valor pré-determinado no QR Code ou para QR Code dinâmico com indicação de que o valor não pode ser alterado: O campo amount deve ser preenchido com o valor estabelecido no QR Code. + Caso seja preenchido com valor divergente do QR Code, deve ser retornado um erro HTTP Status 422. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + details: + $ref: '#/components/schemas/Details' + debtorAccount: + $ref: '#/components/schemas/ConsentsDebtorAccount' + links: + $ref: '#/components/schemas/LinkSingle' + meta: + $ref: '#/components/schemas/Meta' + ResponsePixPayment: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponsePixPaymentData' + links: + $ref: '#/components/schemas/LinkSingle' + meta: + $ref: '#/components/schemas/Meta' + ResponsePatchPixPayment: + type: object + required: + - data + - links + - meta + properties: + data: + $ref: '#/components/schemas/ResponsePatchPixPaymentData' + links: + $ref: '#/components/schemas/LinkSingle' + meta: + $ref: '#/components/schemas/Meta' + ResponsePatchPixPaymentData: + type: object + description: Objeto contendo dados do pagamento e da conta do recebedor (creditor). + required: + - paymentId + - endToEndId + - consentId + - creationDateTime + - statusUpdateDateTime + - status + - localInstrument + - payment + - creditorAccount + - cnpjInitiator + - debtorAccount + - cancellation + properties: + paymentId: + type: string + minLength: 1 + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + example: TXpRMU9UQTROMWhZV2xSU1FUazJSMDl + description: | + Código ou identificador único informado pela instituição detentora da conta para representar + a iniciação de pagamento individual. O `paymentId` deve ser diferente do `endToEndId`. + Este é o identificador que deverá ser utilizado na consulta ao status da iniciação de pagamento efetuada. + endToEndId: + $ref: '#/components/schemas/EndToEndId' + consentId: + type: string + maxLength: 256 + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + example: 'urn:bancoex:C1DD33123' + description: | + Identificador único do consentimento criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + creationDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora em que o recurso foi criado. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + statusUpdateDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora da última atualização da iniciação de pagamento. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + proxy: + type: string + maxLength: 77 + pattern: '[\w\W\s]*' + example: '12345678901' + description: | + Chave cadastrada no DICT pertencente ao recebedor. Os tipos de chaves podem ser: telefone, e-mail, cpf/cnpj ou chave aleatória. + No caso de telefone celular deve ser informado no padrão E.1641. + Para e-mail deve ter o formato xxxxxxxx@xxxxxxx.xxx(.xx) e no máximo 77 caracteres. + No caso de CPF deverá ser informado com 11 números, sem pontos ou traços. + Para o caso de CNPJ deverá ser informado com 14 números, sem pontos ou traços. + No caso de chave aleatória deve ser informado o UUID gerado pelo DICT, conforme formato especificado na RFC41223. + Se informado, a detentora da conta deve validar o proxy no DICT quando localInstrument for igual a DICT, QRDN ou QRES e validar o campo creditorAccount. + Esta validação é opcional caso o localInstrument for igual a INIC. + [Restrição] Se localInstrument for igual a MANU, o campo proxy não deve ser preenchido. Se localInstrument for igual INIC, DICT, QRDN ou QRES, o campo proxy deve ser sempre preenchido com a chave Pix. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + status: + $ref: '#/components/schemas/EnumPaymentStatusType' + rejectionReason: + $ref: '#/components/schemas/RejectionReason' + localInstrument: + $ref: '#/components/schemas/EnumLocalInstrument' + cnpjInitiator: + type: string + pattern: '^\d{14}$' + maxLength: 14 + example: '50685362000135' + description: CNPJ do Iniciador de Pagamento devidamente habilitado para a prestação de Serviço de Iniciação no Pix. + payment: + $ref: '#/components/schemas/PaymentPix' + transactionIdentification: + type: string + pattern: '^[a-zA-Z0-9]{1,35}$' + maxLength: 35 + example: E00038166201907261559y6j6 + description: | + Trata-se de um identificador de transação que deve ser retransmitido intacto pelo PSP do pagador ao gerar a ordem de pagamento. + + [Restrição] A detentora deve obrigatoriamente retornar o campo com o mesmo valor recebido da iniciadora, caso ele tenha sido enviado na requisição da iniciação do pagamento. + remittanceInformation: + type: string + maxLength: 140 + pattern: '[\w\W\s]*' + example: Pagamento da nota RSTO035-002. + description: | + Deve ser preenchido sempre que o usuário pagador inserir alguma informação adicional em um pagamento, a ser enviada ao recebedor. + creditorAccount: + $ref: '#/components/schemas/CreditorAccount' + cancellation: + $ref: '#/components/schemas/PatchPixPaymentCancellation' + debtorAccount: + $ref: '#/components/schemas/DebtorAccount' + authorisationFlow: + type: string + enum: + - HYBRID_FLOW + - CIBA_FLOW + example: HYBRID_FLOW + description: | + Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. + + [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. + ResponseCreatePixPayment: + type: object + required: + - data + - links + - meta + properties: + data: + type: object + description: Objeto contendo dados do pagamento e da conta do recebedor (creditor). + required: + - paymentId + - endToEndId + - consentId + - creationDateTime + - statusUpdateDateTime + - status + - localInstrument + - payment + - creditorAccount + - cnpjInitiator + - debtorAccount + properties: + paymentId: + type: string + minLength: 1 + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + example: TXpRMU9UQTROMWhZV2xSU1FUazJSMDl + description: | + Código ou identificador único informado pela instituição detentora da conta para representar + a iniciação de pagamento individual. O `paymentId` deve ser diferente do `endToEndId`. + Este é o identificador que deverá ser utilizado na consulta ao status da iniciação de pagamento efetuada. + endToEndId: + $ref: '#/components/schemas/EndToEndId' + consentId: + type: string + maxLength: 256 + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + example: 'urn:bancoex:C1DD33123' + description: | + Identificador único do consentimento criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + creationDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora em que o recurso foi criado. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + statusUpdateDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora da última atualização da iniciação de pagamento. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + proxy: + type: string + maxLength: 77 + pattern: '[\w\W\s]*' + example: '12345678901' + description: | + Chave cadastrada no DICT pertencente ao recebedor. Os tipos de chaves podem ser: telefone, e-mail, cpf/cnpj ou chave aleatória. + No caso de telefone celular deve ser informado no padrão E.1641. + Para e-mail deve ter o formato xxxxxxxx@xxxxxxx.xxx(.xx) e no máximo 77 caracteres. + No caso de CPF deverá ser informado com 11 números, sem pontos ou traços. + Para o caso de CNPJ deverá ser informado com 14 números, sem pontos ou traços. + No caso de chave aleatória deve ser informado o UUID gerado pelo DICT, conforme formato especificado na RFC41223. + Se informado, a detentora da conta deve validar o proxy no DICT quando localInstrument for igual a DICT, QRDN ou QRES e validar o campo creditorAccount. + Esta validação é opcional caso o localInstrument for igual a INIC. + [Restrição] Se localInstrument for igual a MANU, o campo proxy não deve ser preenchido. Se localInstrument for igual INIC, DICT, QRDN ou QRES, o campo proxy deve ser sempre preenchido com a chave Pix. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + status: + $ref: '#/components/schemas/EnumPaymentStatusType' + rejectionReason: + $ref: '#/components/schemas/RejectionReason' + localInstrument: + $ref: '#/components/schemas/EnumLocalInstrument' + cnpjInitiator: + type: string + pattern: '^\d{14}$' + maxLength: 14 + example: '50685362000135' + description: CNPJ do Iniciador de Pagamento devidamente habilitado para a prestação de Serviço de Iniciação no Pix. + payment: + type: object + description: Objeto contendo dados do pagameto como moeda e valor. + required: + - amount + - currency + properties: + amount: + type: string + minLength: 4 + maxLength: 19 + pattern: '^((\d{1,16}\.\d{2}))$' + example: '100000.12' + description: | + Valor da transação com 2 casas decimais. O valor deve ser o mesmo enviado no consentimento. + + Para QR Code estático com valor pré-determinado no QR Code ou para QR Code dinâmico com indicação de que o valor não pode ser alterado: O campo amount deve ser preenchido com o valor estabelecido no QR Code. + Caso seja preenchido com valor divergente do QR Code, deve ser retornado um erro HTTP Status 422. + currency: + type: string + maxLength: 3 + pattern: '^([A-Z]{3})$' + example: BRL + description: | + Código da moeda nacional segundo modelo ISO-4217, ou seja, 'BRL'. + Todos os valores monetários informados estão representados com a moeda vigente do Brasil. + transactionIdentification: + type: string + pattern: '^[a-zA-Z0-9]{1,35}$' + maxLength: 35 + example: E00038166201907261559y6j6 + description: | + Trata-se de um identificador de transação que deve ser retransmitido intacto pelo PSP do pagador ao gerar a ordem de pagamento. + + [Restrição] A detentora deve obrigatoriamente retornar o campo com o mesmo valor recebido da iniciadora, caso ele tenha sido enviado na requisição da iniciação do pagamento. + remittanceInformation: + type: string + maxLength: 140 + pattern: '[\w\W\s]*' + example: Pagamento da nota RSTO035-002. + description: | + Deve ser preenchido sempre que o usuário pagador inserir alguma informação adicional em um pagamento, a ser enviada ao recebedor. + creditorAccount: + $ref: '#/components/schemas/PaymentsCreditorAccount' + debtorAccount: + $ref: '#/components/schemas/PaymentsDebtorAccount' + authorisationFlow: + type: string + enum: + - HYBRID_FLOW + - CIBA_FLOW + example: HYBRID_FLOW + description: | + Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. + + [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. + links: + $ref: '#/components/schemas/LinkSingle' + meta: + $ref: '#/components/schemas/Meta' + ResponsePixPaymentData: + type: object + description: Objeto contendo dados do pagamento e da conta do recebedor (creditor). + required: + - paymentId + - endToEndId + - consentId + - creationDateTime + - statusUpdateDateTime + - status + - localInstrument + - payment + - creditorAccount + - cnpjInitiator + - debtorAccount + properties: + paymentId: + type: string + minLength: 1 + maxLength: 100 + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + example: TXpRMU9UQTROMWhZV2xSU1FUazJSMDl + description: | + Código ou identificador único informado pela instituição detentora da conta para representar + a iniciação de pagamento individual. O `paymentId` deve ser diferente do `endToEndId`. + Este é o identificador que deverá ser utilizado na consulta ao status da iniciação de pagamento efetuada. + endToEndId: + $ref: '#/components/schemas/EndToEndId' + consentId: + type: string + maxLength: 256 + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + example: 'urn:bancoex:C1DD33123' + description: | + Identificador único do consentimento criado para a iniciação de pagamento solicitada. Deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + creationDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora em que o recurso foi criado. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + statusUpdateDateTime: + type: string + format: date-time + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])T(?:[01]\d|2[0123]):(?:[012345]\d):(?:[012345]\d)Z$' + example: '2020-07-21T08:30:00Z' + description: | + Data e hora da última atualização da iniciação de pagamento. + Uma string com data e hora conforme especificação RFC-3339, + sempre com a utilização de timezone UTC(UTC time format). + proxy: + type: string + maxLength: 77 + pattern: '[\w\W\s]*' + example: '12345678901' + description: | + Chave cadastrada no DICT pertencente ao recebedor. Os tipos de chaves podem ser: telefone, e-mail, cpf/cnpj ou chave aleatória. + No caso de telefone celular deve ser informado no padrão E.1641. + Para e-mail deve ter o formato xxxxxxxx@xxxxxxx.xxx(.xx) e no máximo 77 caracteres. + No caso de CPF deverá ser informado com 11 números, sem pontos ou traços. + Para o caso de CNPJ deverá ser informado com 14 números, sem pontos ou traços. + No caso de chave aleatória deve ser informado o UUID gerado pelo DICT, conforme formato especificado na RFC41223. + Se informado, a detentora da conta deve validar o proxy no DICT quando localInstrument for igual a DICT, QRDN ou QRES e validar o campo creditorAccount. + Esta validação é opcional caso o localInstrument for igual a INIC. + [Restrição] Se localInstrument for igual a MANU, o campo proxy não deve ser preenchido. Se localInstrument for igual INIC, DICT, QRDN ou QRES, o campo proxy deve ser sempre preenchido com a chave Pix. + ibgeTownCode: + type: string + minLength: 7 + maxLength: 7 + pattern: '^\d{7}$' + example: '5300108' + description: | + O campo ibgetowncode no arranjo PIX, tem o mesmo comportamento que o campo codMun descrito no item 1.6.6 do manual do PIX, conforme segue: + + 1. Caso a informação referente ao município não seja enviada; o PSP do recebedor assumirá que não existem feriados estaduais e municipais no período em questão; + status: + $ref: '#/components/schemas/EnumPaymentStatusType' + rejectionReason: + $ref: '#/components/schemas/RejectionReason' + localInstrument: + $ref: '#/components/schemas/EnumLocalInstrument' + cnpjInitiator: + type: string + pattern: '^\d{14}$' + maxLength: 14 + example: '50685362000135' + description: CNPJ do Iniciador de Pagamento devidamente habilitado para a prestação de Serviço de Iniciação no Pix. + payment: + $ref: '#/components/schemas/PaymentPix' + transactionIdentification: + type: string + pattern: '^[a-zA-Z0-9]{1,35}$' + maxLength: 35 + example: E00038166201907261559y6j6 + description: | + Trata-se de um identificador de transação que deve ser retransmitido intacto pelo PSP do pagador ao gerar a ordem de pagamento. + + [Restrição] A detentora deve obrigatoriamente retornar o campo com o mesmo valor recebido da iniciadora, caso ele tenha sido enviado na requisição da iniciação do pagamento. + remittanceInformation: + type: string + maxLength: 140 + pattern: '[\w\W\s]*' + example: Pagamento da nota RSTO035-002. + description: | + Deve ser preenchido sempre que o usuário pagador inserir alguma informação adicional em um pagamento, a ser enviada ao recebedor. + creditorAccount: + $ref: '#/components/schemas/PaymentsCreditorAccount' + cancellation: + $ref: '#/components/schemas/PixPaymentCancellation' + debtorAccount: + $ref: '#/components/schemas/PaymentsDebtorAccount' + authorisationFlow: + type: string + enum: + - HYBRID_FLOW + - CIBA_FLOW + example: HYBRID_FLOW + description: | + Campo condicional utilizado para identificar o fluxo de autorização em que o pagamento foi solicitado. + + [Restrição] Caso o campo não esteja presente no payload, subentende-se que o fluxo de autorização utilizado é o HYBRID_FLOW. + Schedule: + type: object + description: | + [Restrição] Mutuamente excludente com o campo date. + + Este campo é obrigatório no caso de agendamento. + + Neste caso, o campo date não deve ser informado. + required: + - single + properties: + single: + type: object + description: Define a política de agendamento único. + required: + - date + properties: + date: + type: string + format: date + maxLength: 10 + pattern: '^(\d{4})-(1[0-2]|0?[1-9])-(3[01]|[12][0-9]|0?[1-9])$' + example: '2021-01-01' + description: | + Define a data alvo da liquidação do pagamento. + + O fuso horário de Brasília deve ser utilizado para criação e racionalização sobre os dados deste campo. + + Observação: Esse campo deverá sempre ser no mínimo D+1 corrido, ou seja, a data imediatamente posterior em relação a data do consentimento considerando o fuso horário de Brasília e deverá ser no máximo D+365 corridos a partir da data do consentimento considerando o fuso horário de Brasília + XFapiInteractionId: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + parameters: + consentId: + name: consentId + in: path + description: | + O consentId é o identificador único do consentimento e deverá ser um URN - Uniform Resource Name. + Um URN, conforme definido na [RFC8141](https://tools.ietf.org/html/rfc8141) é um Uniform Resource + Identifier - URI - que é atribuído sob o URI scheme "urn" e um namespace URN específico, com a intenção de que o URN + seja um identificador de recurso persistente e independente da localização. + Considerando a string urn:bancoex:C1DD33123 como exemplo para consentId temos: + - o namespace(urn) + - o identificador associado ao namespace da instituição transnmissora (bancoex) + - o identificador específico dentro do namespace (C1DD33123). + Informações mais detalhadas sobre a construção de namespaces devem ser consultadas na [RFC8141](https://tools.ietf.org/html/rfc8141). + required: true + schema: + type: string + pattern: '^urn:[a-zA-Z0-9][a-zA-Z0-9\-]{0,31}:[a-zA-Z0-9()+,\-.:=@;$_!*''%\/?#]+$' + maxLength: 256 + paymentId: + name: paymentId + in: path + description: Identificador da operação de pagamento. + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + maxLength: 100 + Authorization: + name: Authorization + in: header + description: Cabeçalho HTTP padrão. Permite que as credenciais sejam fornecidas dependendo do tipo de recurso solicitado + required: true + schema: + type: string + pattern: '[\w\W\s]*' + maxLength: 2048 + xCustomerUserAgent: + name: x-customer-user-agent + in: header + description: Indica o user-agent que o usuário utiliza. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiAuthDate: + name: x-fapi-auth-date + in: header + description: 'Data em que o usuário logou pela última vez com o receptor. Representada de acordo com a [RFC7231](https://tools.ietf.org/html/rfc7231).Exemplo: Sun, 10 Sep 2017 19:43:31 UTC' + required: false + schema: + type: string + pattern: '^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$' + minLength: 29 + maxLength: 29 + xFapiCustomerIpAddress: + name: x-fapi-customer-ip-address + in: header + description: O endereço IP do usuário se estiver atualmente logado com o receptor. + required: false + schema: + type: string + pattern: '[\w\W\s]*' + minLength: 1 + maxLength: 100 + xFapiInteractionId: + name: x-fapi-interaction-id + in: header + description: 'Um UID [RFC4122](https://tools.ietf.org/html/rfc4122) usado como um ID de correlação. Se fornecido, o transmissor deve "reproduzir" esse valor no cabeçalho de resposta.' + required: true + schema: + type: string + pattern: '^[a-zA-Z0-9][a-zA-Z0-9\-]{0,99}$' + minLength: 1 + maxLength: 100 + XIdempotencyKey: + name: x-idempotency-key + in: header + description: Cabeçalho HTTP personalizado. Identificador de solicitação exclusivo para suportar a idempotência. + required: true + schema: + type: string + maxLength: 40 + pattern: ^(?!\s)(.*)(\S)$ + securitySchemes: + OpenId: + type: openIdConnect + openIdConnectUrl: 'https://auth.mockbank.poc.raidiam.io/.well-known/openid-configuration' + OAuth2ClientCredentials: + type: oauth2 + description: | + Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário. + Apenas pagamentos iniciados pela mesma iniciadora de pagamentos podem ser consultados ou cancelados através de modelo client credentials. + flows: + clientCredentials: + tokenUrl: 'https://authserver.example/token' + scopes: + payments: Escopo necessário para acesso à API Payment Initiation. + OAuth2AuthorizationCode: + type: oauth2 + description: Fluxo OAuth necessário para que a iniciadora possa iniciar pagamentos. Requer o processo de redirecionamento e autenticação do usuário. + flows: + authorizationCode: + authorizationUrl: 'https://authserver.example/token' + tokenUrl: 'https://authserver.example/token' + scopes: + payments: Escopo necessário para acesso à API Payment Initiation. + responses: + BadRequest: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + BadRequestPayments: + description: 'Seguir as orientações presentes na descrição da API, subitem 1.2.3' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + BadRequestPixPayments: + description: 'Seguir as orientações presentes na descrição da API, subitem 2.1.3.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + Forbidden: + description: O token tem escopo incorreto ou uma política de segurança foi violada + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + InternalServerError: + description: Ocorreu um erro no gateway da API ou no microsserviço + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + MethodNotAllowed: + description: O consumidor tentou acessar o recurso com um método não suportado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + NotAcceptable: + description: A solicitação continha um cabeçalho Accept diferente dos tipos de mídia permitidos ou um conjunto de caracteres diferente de UTF-8 + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + NotFound: + description: O recurso solicitado não existe ou não foi implementado + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + SiteIsOverloaded: + description: 'O site está sobrecarregado e a operação foi recusada, pois foi atingido o limite máximo de TPS global, neste momento.' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + TooManyRequests: + description: 'A operação foi recusada, pois muitas solicitações foram feitas dentro de um determinado período ou o limite global de requisições concorrentes foi atingido' + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + Retry-After: + description: | + Cabeçalho que indica o tempo (em segundos) que o cliente deverá aguardar para realizar uma nova tentativa de chamada. Este cabeçalho deverá estar presente quando o código HTTP de retorno for 429 Too many requests. + schema: + description: | + Cabeçalho que indica o tempo (em segundos) que o cliente deverá aguardar para realizar uma nova tentativa de chamada. Este cabeçalho deverá estar presente quando o código HTTP de retorno for 429 Too many requests. + type: integer + UnprocessableEntityPixPayment: + description: 'Seguir as orientações presentes na descrição da API, itens 2.2 e 2.3 e seus subitens.' + content: + application/jwt: + schema: + $ref: '#/components/schemas/422ResponseErrorCreatePixPayments' + examples: + Saldo insuficiente: + summary: Saldo insuficiente + value: + errors: + - code: SALDO_INSUFICIENTE + title: Saldo insuficiente. + detail: A conta selecionada não possui saldo suficiente para realizar o pagamento. + meta: + requestDateTime: '2021-05-21T08:30:00Z' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + UnprocessableEntityConsents: + description: 'Seguir as orientações presentes na descrição da API, item 1.3 e seus subitens.' + content: + application/jwt: + schema: + $ref: '#/components/schemas/422ResponseErrorCreateConsent' + examples: + Forma de pagamento inválida: + summary: Forma de pagamento inválida + value: + errors: + - code: FORMA_PAGAMENTO_INVALIDA + title: Forma de pagamento inválida. + detail: 'Forma de pagamento [Modalidade] não suportada.' + meta: + requestDateTime: '2021-05-21T08:30:00Z' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + UnprocessableEntityPixPayments: + description: 'A requisição foi malformada, omitindo atributos obrigatórios, seja no payload ou através de atributos na URL.' + content: + application/jwt: + schema: + $ref: '#/components/schemas/422ResponseErrorCreatePixPayment' + examples: + Saldo insuficiente: + summary: Saldo insuficiente + value: + errors: + - code: PAGAMENTO_NAO_PERMITE_CANCELAMENTO + title: Pagamento não permite cancelamento + detail: Pagamento não permite cancelamento + meta: + requestDateTime: '2021-05-21T08:30:00Z' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + Unauthorized: + description: Cabeçalho de autenticação ausente/inválido ou token inválido + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + UnsupportedMediaType: + description: O formato do payload não é um formato suportado. + content: + application/json; charset=utf-8: + schema: + $ref: '#/components/schemas/ResponseError' + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + 201PaymentsConsentsConsentCreated: + description: Consentimento de pagamento criado com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/jwt: + schema: + $ref: '#/components/schemas/ResponseCreatePaymentConsent' + 200PaymentsConsentsConsentIdRead: + description: Dados do consentimento de pagamento obtidos com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/jwt: + schema: + $ref: '#/components/schemas/ResponsePaymentConsent' + 201PaymentsInitiationPixPaymentCreated: + description: Iniciação de pagamento Pix criada com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/jwt: + schema: + $ref: '#/components/schemas/ResponseCreatePixPayment' + 200PaymentsInitiationPixPaymentIdRead: + description: Dados de iniciação de pagamento Pix obtidos com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/jwt: + schema: + $ref: '#/components/schemas/ResponsePixPayment' + 200PatchPixPayments: + description: Iniciação de pagamento Pix cancelada com sucesso. + headers: + x-fapi-interaction-id: + description: | + Um UUID RFC4122 usado como um ID de correlação. O transmissor deve usar o mesmo valor recebido na requisição para o cabeçalho de resposta recebido na requisição, caso não tenha sido fornecido, deve se usar um UUID RFC4122. + schema: + $ref: '#/components/schemas/XFapiInteractionId' + content: + application/jwt: + schema: + $ref: '#/components/schemas/ResponsePatchPixPayment' \ No newline at end of file diff --git a/swagger-apis/payments/index.html b/swagger-apis/payments/index.html index 42b4132b1..f3e681ce0 100644 --- a/swagger-apis/payments/index.html +++ b/swagger-apis/payments/index.html @@ -63,8 +63,9 @@ {"name": "1.1.0-rc1.0", "url": "./1.1.0-rc1.0.yml"}, {"name": "1.2.0", "url": "./1.2.0.yml"}, {"name": "2.0.0", "url": "./2.0.0.yml"}, - {"name": "3.0.0-beta.1", "url": "./3.0.0-beta.1.yml"}], - "urls.primaryName": "3.0.0-beta.1", // default spec + {"name": "3.0.0-beta.1", "url": "./3.0.0-beta.1.yml"}, + {"name": "3.0.0-beta.2", "url": "./3.0.0-beta.2.yml"}], + "urls.primaryName": "3.0.0-beta.2", // default spec dom_id: '#swagger-ui', deepLinking: true, supportedSubmitMethods:[],