Após o usuário aprovar o consentimento na detentora, ele é redirecionado de volta à redirectUrl da ITP com code, id_token e state. A ITP envia esses parâmetros ao endpoint de callback para finalizar a autorização e ativar o consentimento.
O endpoint de callback é compartilhado com o Pix Instantâneo — o state e o paymentInitiationApi identificam o produto correto internamente.
POST /baas/v1/open/itp/payment-initiation/callback
Autenticação: Bearer Token (application_token)
Request
POST {{base_url}}/baas/v1/open/itp/payment-initiation/callback
Authorization: Bearer {{application_token}}
Content-Type: application/json
ID da payment initiation — usar como itp_payment_id nos pagamentos
ofConsent.status
string
AUTHORISED — consentimento ativo para receber pagamentos
ofConsent.debtorAccount
object
Conta devedora selecionada pelo usuário na detentora
Códigos de Retorno
HTTP
Descrição
200 OK
Callback processado e consentimento autorizado
400 Bad Request
Parâmetros inválidos ou ausentes
401 Unauthorized
Token de aplicação inválido
422 Unprocessable Entity
code expirado, state não encontrado ou consentimento rejeitado
Parte 2 — Executar Pagamento Pix Recorrente
Visão Geral
Com o consentimento em status AUTHORISED, a ITP envia cada cobrança individualmente ao endpoint de pagamentos. Cada chamada representa um ciclo da recorrência (ex: a cobrança do mês de julho). O pagamento é recebido com RCVD e processado de forma assíncrona pela detentora.
POST /baas/v1/open/itp/automatic-payments/payment-initiation/:paymentInitiationId/payments
Autenticação: Bearer Token (application_token)
Path Parameters
Parâmetro
Tipo
Obrigatório
Descrição
paymentInitiationId
string
✅
ID da payment initiation (itp_payment_id)
Request
POST {{base_url}}/baas/v1/open/itp/automatic-payments/payment-initiation/{{itp_payment_id}}/payments
Authorization: Bearer {{application_token}}
Content-Type: application/json
ID único do pagamento recorrente. Usar em retentativas e cancelamentos
data.status
string
Status inicial: RCVD (requisição recebida pela detentora)
Códigos de Retorno
HTTP
Descrição
201 Created
Pagamento recebido para processamento
401 Unauthorized
Token inválido ou expirado
404 Not Found
paymentInitiationId não encontrado
422 Unprocessable Entity
Consentimento não AUTHORISED, valor fora dos limites, data inválida
Pontos de Atenção
⚠️
localInstrument deve ser AUTO: Outros valores causam rejeição imediata. Este campo identifica que o pagamento é do tipo automático recorrente.
⚠️
amount deve respeitar os limites do consentimento: Para valor variável, deve estar entre minimumVariableAmount e maximumVariableAmount. Para valor fixo, deve ser exatamente fixedAmount. Divergências retornam RJCT com reason PAGAMENTO_DIVERGENTE_CONSENTIMENTO.
⚠️
endToEndId único por pagamento: Cada ciclo de pagamento exige um endToEndId diferente. Reutilizar o mesmo ID causa erro de duplicidade no SPI.
⚠️
riskSignals obrigatório: Os campos lastLoginDateTime e pixKeyRegistrationDateTime são sinais anti-fraude obrigatórios para pagamentos automáticos. Use sempre valores reais — não utilize datas estáticas em produção.
⚠️
RCVD ≠ liquidado: O status inicial indica que a detentora recebeu o pedido. A liquidação efetiva (ACSC) ou rejeição (RJCT) é assíncrona. Monitore via webhook.
⚠️
code expira rapidamente: Chame o endpoint de callback imediatamente após receber o redirect. Atrasos causam erros invalid_request_uri.