Pagamentos Automáticos
Pré requisitos para implementação:
Possuir uma chave api da Celcoin, para mais informações acessar esse link
O que é
O Pix Automático é uma modalidade de pagamento recorrente do Open Finance Brasil que permite ao usuário autorizar, com um único consentimento, múltiplas cobranças futuras iniciadas pelo recebedor (ex: assinaturas, mensalidades, contas de consumo). Diferente do Sweeping Accounts, o pagador e o recebedor são pessoas distintas.
A ITP (Instituição de Pagamento Transmissora) atua criando o consentimento recorrente e orquestrando cada ciclo de pagamento, enquanto a detentora de conta do pagador é responsável pela liquidação no SPI.
Características principais
- Consentimento único para múltiplos pagamentos futuros
- Configuração de intervalo:
DIARIO,SEMANAL,MENSAL,SEMESTRAL,ANUAL - Suporte a valor fixo (
fixedAmount) ou variável (minimumVariableAmount/maximumVariableAmount) - Mecanismo de retentativas intradia e extradia com controle de
endToEndId - Suporte a alçada dupla (
PARTIALLY_ACCEPTED) - Cancelamento por qualquer parte: pagador, recebedor ou ITP
Diferenças entre os produtos de pagamento recorrente
| Característica | Pix Automático | Sweeping Accounts |
|---|---|---|
| Relação pagador / recebedor | Pessoas distintas | Mesma pessoa (mesmo CPF) |
| Quem inicia a cobrança | Recebedor (via ITP) | O próprio titular |
| Caso de uso | Assinaturas, mensalidades, contas | Transferências entre contas próprias |
Modalidade localInstrument | AUTO | MANU, DICT etc. |
| Limites periódicos no consentimento | ❌ | ✅ |
| Retentativas intradia/extradia | ✅ | ❌ |
Fluxo Resumido
sequenceDiagram
participant ITP
participant Detentora as Detentora (ASPSP)
participant Usuário
ITP->>Detentora: POST /automatic-payments/payment-initiation
Detentora-->>ITP: { authorizationUrl, id }
ITP->>Usuário: Redireciona para authorizationUrl
Usuário->>Detentora: Login + Approve
Detentora->>Usuário: callback?code&state
Usuário->>ITP: Retorna com code, state, id_token
ITP->>Detentora: POST /payment-initiation/callback
Detentora-->>ITP: { consentId, status: AUTHORISED }
loop A cada ciclo de pagamento
ITP->>Detentora: POST /payment-initiation/:id/payments
Detentora-->>ITP: { recurringPaymentId, status: RCVD }
Detentora->>ITP: Webhook: status ACSC ou RJCT
end
Etapas da Jornada
| # | Etapa | Endpoint |
|---|---|---|
| 1 | Autenticação da aplicação | POST /v5/token |
| 2 | Buscar instituições disponíveis | GET /baas/v1/open/itp/participants/brands?type=PAYMENT |
| 3 | Criar consentimento recorrente | POST /baas/v1/open/itp/automatic-payments/payment-initiation |
| 4 | Redirecionar usuário para authorizationUrl | — |
| 5 | Login na detentora (sandbox) | POST /interactions/:id/login |
| 6 | Aprovação do consentimento (sandbox) | POST /interactions/:id/consent |
| 7 | Processar callback | POST /baas/v1/open/itp/payment-initiation/callback |
| 8 | Executar pagamento Pix recorrente | POST /baas/v1/open/itp/automatic-payments/payment-initiation/:id/payments |
| 9 | Retentativa de pagamento | POST /automatic-payments/v2/pix/recurring-payments/:id/retry |
| 10 | Consultar consentimento / pagamentos | GET /baas/v1/open/itp/automatic-payments/payment-initiation |
| 11 | Cancelar consentimento | PATCH /baas/v1/open/itp/automatic-payments/v2/payment-initiation/:id |
Pontos de Atenção
startDateTimeereferenceStartDateexigem D+2: A data de início do consentimento e a primeira data de referência de pagamento devem ser no mínimo 2 dias úteis após a criação. Datas inválidas retornam422.
fixedAmounté exclusivo: Quando informado, os camposminimumVariableAmountemaximumVariableAmountsão ignorados. Use um ou o outro, nunca ambos.
isRetryAccepted: Controla se a ITP aceita retentativas automáticas em caso de falha. Quandofalse, nenhuma retentativa intradia ou extradia será realizada pela detentora.
localInstrumentdeve serAUTO: Para Pix Automático, a modalidade de iniciação é sempreAUTO. Outros valores causam rejeição.
Consentimento ≠ Pagamento: O consentimento (AUTHORISED) autoriza a série de pagamentos futuros. Cada pagamento individual tem seu próprio ciclo de vida erecurringPaymentId.
Liquidação assíncrona: O pagamento é recebido comRCVDe a liquidação final (ACSCouRJCT) é notificada via webhook ou polling.