O Pix Automático possui duas máquinas de estados independentes que operam em conjunto:
- Máquina de Estados do Consentimento Recorrente — controla o ciclo de vida da autorização recorrente
- Máquina de Estados do Pagamento Pix — controla o ciclo de vida de cada transação individual
O consentimento recorrente representa a autorização do usuário para a série completa de pagamentos futuros.
stateDiagram-v2
direction LR
[*] --> AWAITING_AUTHORISATION : POST /payment-initiation\n(criação do consentimento)
AWAITING_AUTHORISATION --> PARTIALLY_ACCEPTED : Aprovação parcial\n(alçada dupla)
AWAITING_AUTHORISATION --> AUTHORISED : Aprovação direta\n(único titular)
AWAITING_AUTHORISATION --> REJECTED : Expiração (>60 min)\nou recusa do usuário
PARTIALLY_ACCEPTED --> AUTHORISED : Todos os titulares\naprovaram
PARTIALLY_ACCEPTED --> REJECTED : Expiração do prazo\nou recusa de titular
AUTHORISED --> REVOKED : Revogação explícita\n(usuário, ITP ou detentora)
AUTHORISED --> CONSUMED : Expiração da vigência\nou limite total atingido
REJECTED --> [*]
REVOKED --> [*]
CONSUMED --> [*]
classDef terminal fill:#f5c6c6,stroke:#c0392b,color:#333
classDef active fill:#c6e2f5,stroke:#2980b9,color:#333
classDef partial fill:#e8d5f5,stroke:#8e44ad,color:#333
classDef initial fill:#d5f5d5,stroke:#27ae60,color:#333
class REJECTED,REVOKED,CONSUMED terminal
class AUTHORISED active
class PARTIALLY_ACCEPTED partial
class AWAITING_AUTHORISATION initial
| Status | Descrição | Terminal? |
|---|
AWAITING_AUTHORISATION | Estado inicial. Consentimento criado aguardando aprovação. Prazo: até 60 minutos | ❌ |
PARTIALLY_ACCEPTED | Aprovado por parte dos titulares em fluxo de alçada dupla. Aguarda demais aprovações | ❌ |
AUTHORISED | Totalmente autorizado. Pagamentos podem ser executados dentro da vigência | ❌ |
REJECTED | Rejeitado por expiração, recusa do usuário/recebedor ou regra da detentora | ✅ |
REVOKED | Revogado explicitamente após AUTHORISED por usuário, ITP ou detentora | ✅ |
CONSUMED | Encerrado naturalmente: vigência expirada ou limite total de valor atingido (Sweeping Accounts) | ✅ |
| De | Para | Gatilho |
|---|
AWAITING_AUTHORISATION | AUTHORISED | Aprovação em fluxo sem múltiplos titulares |
AWAITING_AUTHORISATION | PARTIALLY_ACCEPTED | Primeiro titular aprova em alçada dupla |
AWAITING_AUTHORISATION | REJECTED | Expiração (>60 min) ou recusa |
PARTIALLY_ACCEPTED | AUTHORISED | Todos os titulares aprovam dentro do prazo |
PARTIALLY_ACCEPTED | REJECTED | Expiração do prazo ou recusa de um titular |
AUTHORISED | REVOKED | Revogação via PATCH /payment-initiation/:id |
AUTHORISED | CONSUMED | expirationDateTime atingido ou totalAllowedAmount esgotado (Sweeping) |
| Condição | Prazo máximo |
|---|
expirationDateTime definido < 30 dias | Até a data de expiração |
expirationDateTime definido > 30 dias | Até 30 dias da criação |
Sem expirationDateTime | Até 30 dias da criação |
approvalDueDate definido pelo pagador | Até a data estipulada (máx. 30 dias) |
Cada transação Pix enviada dentro de um consentimento AUTHORISED tem seu próprio ciclo de vida no SPB.
stateDiagram-v2
direction LR
[*] --> RCVD : POST /payments\n(pagamento criado)
RCVD --> ACCP : Validações concluídas\npronto para SPI
RCVD --> PDNG : Retido temporariamente\npara análise
RCVD --> RJCT : Falha na validação\n(consentimento, dados)
RCVD --> CANC : Cancelado pelo\nusuário
ACCP --> ACPD : Submetido ao SPI
ACCP --> SCHD : Agendado para\ndata futura
ACCP --> RJCT : Falha pré-SPI
ACPD --> ACSC : Liquidação confirmada\npelo SPI ✅
ACPD --> RJCT : Falha na liquidação
SCHD --> ACPD : Data de liquidação\natingida
SCHD --> RJCT : Falha no agendamento
SCHD --> CANC : Cancelamento antes\nda liquidação
PDNG --> ACCP : Análise concluída\npositivamente
PDNG --> RJCT : Análise resulta\nem rejeição
ACSC --> [*]
RJCT --> [*]
CANC --> [*]
classDef terminal fill:#f5c6c6,stroke:#c0392b,color:#333
classDef success fill:#d5f5d5,stroke:#27ae60,color:#333
classDef inprogress fill:#fef9c3,stroke:#f39c12,color:#333
classDef initial fill:#c6e2f5,stroke:#2980b9,color:#333
class RJCT,CANC terminal
class ACSC success
class RCVD,ACCP,ACPD,SCHD,PDNG inprogress
| Status | Sigla | Descrição | Terminal? |
|---|
RCVD | Received | Requisição recebida pela detentora. Validações em andamento | ❌ |
ACCP | Accepted Customer Profile | Todas as verificações concluídas. Pronto para envio ao SPI | ❌ |
ACPD | Accepted Clearing Processed | Submetido ao SPI. Aguardando confirmação de liquidação | ❌ |
SCHD | Scheduled | Agendado na detentora para liquidação em data futura | ❌ |
PDNG | Pending | Retido temporariamente para análise antifraude. Não se aplica a Sweeping Accounts | ❌ |
ACSC | Accepted Settlement Completed | Liquidado com sucesso pela detentora ou pelo SPI | ✅ |
RJCT | Rejected | Rejeitado pela detentora ou pelo SPI. Ver campo rejectionReason | ✅ |
CANC | Cancelled | Cancelado pelo usuário antes da confirmação ou liquidação | ✅ |
| De | Para | Gatilho |
|---|
RCVD | ACCP | Validações concluídas com sucesso |
RCVD | PDNG | Retido para análise antifraude |
RCVD | RJCT | Falha de validação (consentimento inválido, dados incorretos) |
RCVD | CANC | Usuário cancela antes da validação |
ACCP | ACPD | Enviado ao SPI (Pix imediato) |
ACCP | SCHD | Agendado para data futura |
ACCP | RJCT | Falha antes da submissão ao SPI |
ACPD | ACSC | Liquidação confirmada pelo SPI |
ACPD | RJCT | Falha durante liquidação no SPI |
SCHD | ACPD | Data de liquidação atingida, submetido ao SPI |
SCHD | RJCT | Falha na data de liquidação (saldo, limite etc.) |
SCHD | CANC | Usuário cancela antes da liquidação |
PDNG | ACCP | Análise antifraude positiva |
PDNG | RJCT | Análise antifraude negativa |
flowchart TD
C["🔓 Consentimento Recorrente\n[AUTHORISED]\nIntervalo: SEMANAL"]
C --> P1["✅ Ciclo 1 — 22/05\nACSC"]
C --> P2["✅ Ciclo 2 — 29/05\nACSC"]
C --> P3["❌ Ciclo 3 — 05/06\nRJCT → retry → ACSC ✅"]
C --> P4["⏳ Ciclo 4 — 12/06\nRCVD"]
C --> PN["... ciclos futuros"]
P3 --> R3["🔄 Retentativa\n[ACSC]"]
C -->|"expirationDateTime\nou revogação"| ENC["🔒 REVOKED / CONSUMED"]
style C fill:#c6e2f5,stroke:#2980b9,color:#333
style ENC fill:#f5c6c6,stroke:#c0392b,color:#333
style P1 fill:#d5f5d5,stroke:#27ae60,color:#333
style P2 fill:#d5f5d5,stroke:#27ae60,color:#333
style P3 fill:#f5c6c6,stroke:#c0392b,color:#333
style R3 fill:#d5f5d5,stroke:#27ae60,color:#333
style P4 fill:#fef9c3,stroke:#f39c12,color:#333
style PN fill:#f0f0f0,stroke:#888,color:#333
⚠️
⚠️
⚠️
⚠️
⚠️