PIX
PIX V4 API
Visão Geral
A API de PIX V4 permite a criação de pagamentos PIX usando um payment initiation previamente autorizado. Este endpoint é utilizado para realizar transferências PIX após a autorização do consentimento e autenticação FIDO.
Características Principais
- Pagamentos PIX: Permite criar pagamentos PIX associados a um payment initiation autorizado
- Validação de Consentimento: Verifica se o consentimento está autorizado antes de criar o pagamento
Endpoint
POST /open-keys/itp/api/v2/payments/v4/payment-initiation/{paymentInitiationId}/pix
Onde {paymentInitiationId} é o identificador único do payment initiation retornado na criação da iniciação de pagamento (PAYMENTS_V4).
Autenticação
A API requer autenticação OAuth2 com a seguinte permissão:
app: Para integrações diretas via API
O token de acesso deve ser enviado no header:
Authorization: Bearer {access_token}
Estrutura da Requisição
Payload Completo
{
"data": [
{
"localInstrument": "DICT",
"payment": {
"amount": "1.00",
"currency": "BRL"
},
"creditorAccount": {
"accountType": "{account_type}",
"ispb": "{ispb}",
"issuer": "{issuer}",
"number": "{account_number}"
},
"cnpjInitiator": "{cnpjInitiator}",
"proxy": "{payment_proxy}",
"endToEndId": "{endToEndId}",
"authorisationFlow": "FIDO_FLOW"
}
]
}Campos da Requisição
Nível Raiz
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
data | Array | Sim | Lista de pagamentos PIX a serem criados |
Objeto data[]
data[]| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
localInstrument | String | Sim | Instrumento local do PIX (ex: "DICT", "INIC") |
payment | Object | Sim | Informações do pagamento |
creditorAccount | Object | Sim | Dados da conta do recebedor |
cnpjInitiator | String | Sim | CNPJ do iniciador do pagamento |
proxy | String | Condicional | Chave PIX do recebedor (obrigatório para DICT/INIC) |
endToEndId | String | Sim | Identificador end-to-end único do pagamento |
authorisationFlow | String | Sim | Tipo de fluxo de autorização ("FIDO_FLOW") |
Objeto payment
payment| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
amount | String | Sim | Valor da transação com 2 casas decimais (formato: "XXXXX.XX") |
currency | String | Sim | Código da moeda segundo ISO-4217 (valor fixo: "BRL") |
Objeto creditorAccount
creditorAccount| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
accountType | Enum | Sim | Tipo de conta: CACC (Corrente), SVGS (Poupança), TRAN (Pagamento pré-paga) |
ispb | String | Sim | ISPB do participante do SPI (8 dígitos) |
issuer | String | Condicional | Código da agência sem dígito (obrigatório para CACC e SVGS) |
number | String | Sim | Número da conta com dígito verificador (máximo 20 caracteres) |
Formato de Valores Monetários
Todos os valores monetários devem seguir o formato:
- Padrão:
^((\d{1,16}.\d{2}))$ - Exemplo:
"150.00","100000.12","25.50" - Mínimo: 4 caracteres (ex:
"0.01") - Máximo: 19 caracteres
Validações Importantes
- Payment Initiation ID: O
paymentInitiationIdinformado na URL deve existir e pertencer à aplicação autenticada - Status do Consentimento: O consentimento associado deve estar no status
AUTHORISED - Fluxo de Autorização: Deve ser "FIDO_FLOW" para pagamentos com FIDO
- Campos Obrigatórios: Todos os campos marcados como obrigatórios devem ser fornecidos
Implementação
Fluxo de Criação de Pagamento PIX
- O sistema valida o
paymentInitiationIde verifica se pertence à aplicação autenticada - Busca o payment initiation e o consentimento associado
- Valida que o consentimento está no status
AUTHORISED - Valida que o fluxo de autorização é compatível
- Gera ou valida o
endToEndIdúnico para o pagamento - Cria o registro do pagamento na base de dados
- Envia a requisição para a detentora de conta criar o pagamento PIX
- Atualiza o registro do pagamento com a resposta da detentora
- Atualiza o consentimento na detentora de conta
- Dispara webhook para a aplicação
- Retorna o payment initiation atualizado com o pagamento criado
Exemplo de Requisição (cURL)
curl -X POST \
https://api.exemplo.com/open-keys/itp/api/v2/payments/v4/payment-initiation/{paymentInitiationId}/pix \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"data": [
{
"localInstrument": "DICT",
"payment": {
"amount": "1.00",
"currency": "BRL"
},
"creditorAccount": {
"accountType": "CACC",
"ispb": "12345678",
"issuer": "1774",
"number": "12345678"
},
"cnpjInitiator": "12345678000123",
"proxy": "[email protected]",
"endToEndId": "E12345678202501011234567890123456",
"authorisationFlow": "FIDO_FLOW"
}
]
}'Resposta da API
Sucesso (200 OK)
A API retorna um objeto contendo o payment initiation atualizado com o pagamento criado:
{
"id": "{paymentInitiationId}",
"paymentInitiationApi": "PAYMENTS_V4",
"ofPayments": [
{
"id": "{payment_id}",
"status": "ACSC",
"endToEndId": "E12345678202501011234567890123456",
"localInstrument": "DICT",
"payment": {
"amount": "1.00",
"currency": "BRL"
},
"creditorAccount": {
"accountType": "CACC",
"ispb": "12345678",
"issuer": "1774",
"number": "12345678"
},
"proxy": "[email protected]",
"authorisationFlow": "FIDO_FLOW"
}
],
"ofConsent": {
"status": "AUTHORISED"
},
"updatedAt": 1234567890
}Campos Importantes da Resposta
| Campo | Tipo | Descrição |
|---|---|---|
id | String | Identificador único do payment initiation |
ofConsent | Object | Objeto contendo o estado atual do consentimento |
ofConsent.status | String | Status do consentimento (geralmente AUTHORISED) |
ofPayments | Array | Lista de pagamentos associados ao consentimento |
ofPayments[].id | String | ID único do pagamento |
ofPayments[].status | String | Status atual do pagamento |
ofPayments[].endToEndId | String | Identificador end-to-end do pagamento PIX |
Erros Comuns
400 Bad Request
{
"error": "Validation Error",
"message": "Campo 'amount' é obrigatório"
}Causas comuns:
- Campos obrigatórios ausentes
- Formato de dados inválido (datas, valores monetários, endToEndId)
- Validação de schema falhou
401 Unauthorized
{
"error": "Unauthorized",
"message": "Token inválido ou expirado"
}Solução: Verifique se o token de acesso é válido e possui a permissão app.
403 Forbidden
{
"error": "Forbidden",
"message": "Payment initiation não autorizado"
}Solução: O consentimento deve estar autorizado (AUTHORISED) antes de criar pagamentos PIX.
404 Not Found
{
"error": "Not Found",
"message": "Payment initiation não encontrado"
}Solução: Verifique se o paymentInitiationId informado na URL existe e pertence à aplicação autenticada.
422 Unprocessable Entity
{
"error": "Unprocessable Entity",
"message": "End-to-End ID já existe"
}Solução: O endToEndId deve ser único. Gere um novo identificador.
Boas Práticas
- Validação de Consentimento: Sempre verifique se o consentimento está autorizado antes de criar pagamentos
- Geração de End-to-End ID: Garanta que o
endToEndIdseja único e siga o formato do SPI - Tratamento de Erros: Implemente tratamento adequado para todos os códigos de erro possíveis
- Idempotência: Use o
endToEndIdcomo chave para evitar duplicação de pagamentos
Updated about 2 hours ago