# Introdução

Neste artigo, fornecemos uma visão detalhada dos estados das entidades e suas transições dentro do produto de pagamentos da Belvo.

## Cobranças

Uma **Cobrança** representa o pagamento real que precisa ser feito na Rede Open Finance do Brasil. Abaixo, descrevemos os vários estados no processo de cobrança, detalhando as possíveis transições entre esses estados e descrevendo as condições sob as quais essas transições ocorrem. Consulte a tabela abaixo para obter uma visão abrangente de cada estado e do fluxo do processo.

```mermaid
stateDiagram-v2
    classDef pending fill:#ADD8E6,color:#000,stroke:none
    classDef success fill:#2E8B57,color:#fff,stroke:none
    classDef cancelled fill:#FFA500,color:#fff,stroke:none
    classDef failed fill:#CC3300,color:#fff,stroke:none

    [*] --> PENDING
    PENDING --> SCHEDULED
    PENDING --> SUCCEEDED
    PENDING --> CANCELED
    PENDING --> FAILED
    SCHEDULED --> SUCCEEDED
    SCHEDULED --> CANCELED
    SCHEDULED --> FAILED
    SUCCEEDED --> [*]
    CANCELED --> [*]
    FAILED --> [*]

    class PENDING,SCHEDULED pending
    class SUCCEEDED success
    class CANCELED cancelled
    class FAILED failed
```

| Estado  | Descrição | Transições Para  | Gatilho/Evento |
|  --- | --- | --- | --- |
| `CRIADO` | Estado inicial quando a cobrança é criada. | - `PENDENTE`

 | - Cobrança é iniciada, mas ainda não processada pela rede OF

 |
| `PENDENTE` | A cobrança está aguardando ação adicional ou agendamento. | - `AGENDADO`
- `SUCEDIDO`
- `CANCELADO`
- `FALHOU`

 | - Cobrança é agendada para processamento
- A cobrança foi processada com sucesso na rede OF
- Cobrança é cancelada pela rede OF enquanto pendente
- Cobrança falha na rede OF enquanto pendente.

 |
| `AGENDADO` | A cobrança está agendada para processamento em uma data futura. | - `SUCEDIDO`
- `CANCELADO`
- `FALHOU`

 | - Cobrança é processada com sucesso
- Cobrança é cancelada enquanto agendada
- Cobrança falha enquanto agendada.

 |
| `SUCEDIDO` | A cobrança foi processada com sucesso. | (Estado final - sem transições adicionais) | Nenhum |
| `CANCELADO` | A cobrança foi cancelada. | (Estado final - sem transições adicionais) | Nenhum |
| `FALHOU` | A cobrança falhou. | (Estado final - sem transições adicionais) | Nenhum |


## Inscrição

Uma **Inscrição** representa a autorização do dispositivo de um usuário na Rede Open Finance com sua instituição (necessária para Pagamentos Biométricos). Abaixo, descrevemos os vários estados no processo de Inscrição, detalhando as possíveis transições entre esses estados e descrevendo as condições sob as quais essas transições ocorrem. Consulte a tabela abaixo para obter uma visão abrangente de cada estado e do fluxo do processo.

```mermaid
stateDiagram-v2
    classDef pending fill:#ADD8E6,color:#000,stroke:none
    classDef success fill:#2E8B57,color:#fff,stroke:none
    classDef cancelled fill:#FFA500,color:#fff,stroke:none
    classDef failed fill:#CC3300,color:#fff,stroke:none

    [*] --> PENDING
    PENDING --> SUCCEEDED
    PENDING --> FAILED
    SUCCEEDED --> CANCELLED : User or institution cancels enrollment
    SUCCEEDED --> [*]
    CANCELLED --> [*]
    FAILED --> [*]

    class PENDING pending
    class SUCCEEDED success
    class CANCELLED cancelled
    class FAILED failed
```

| Estado  | Descrição | Transições Para  | Gatilho/Evento |
|  --- | --- | --- | --- |
| Inicial | Estado Inicial da Inscrição. | - `PENDING`

 | - O payload da Inscrição é aceito e está aguardando confirmação pelo usuário.

 |
| `PENDING` | A Inscrição foi criada e agora está aguardando Autorização do usuário. | - `SUCCEEDED`
- `FAILED`

 | - O usuário aceitou a Inscrição e ela foi registrada com sucesso na rede, bem como na instituição.
- A Inscrição falhou, seja por erro do usuário, de rede ou da instituição.

 |
| `SUCCEEDED` | Os processos de Inscrição foram concluídos com sucesso. | - `CANCELED`

 | - O usuário cancelou a Inscrição.

 |
| `FAILED` | O processo de Inscrição falhou. | (Estado final - sem transições adicionais) | Nenhum |
| `CANCELED` | O usuário cancelou a Inscrição. | (Estado final - sem transições adicionais) | Nenhum |


## Autorização de Pagamento

Uma **Autorização de Pagamento** é o consentimento que seu usuário dá para que você debite (retire dinheiro de) suas contas. Abaixo, descrevemos os vários estados no processo de Autorização de Pagamento, detalhando as possíveis transições entre esses estados e descrevendo as condições sob as quais essas transições ocorrem. Consulte a tabela abaixo para obter uma visão abrangente de cada estado e do fluxo do processo.

```mermaid
stateDiagram-v2
    classDef pending fill:#ADD8E6,color:#000,stroke:none
    classDef success fill:#2E8B57,color:#fff,stroke:none
    classDef cancelled fill:#FFA500,color:#fff,stroke:none
    classDef failed fill:#CC3300,color:#fff,stroke:none
    classDef consumed fill:#7B2D8B,color:#fff,stroke:none

    [*] --> AWAITING_AUTHORIZATION
    [*] --> FAILED
    AWAITING_AUTHORIZATION --> AUTHORIZED
    AWAITING_AUTHORIZATION --> PARTIALLY_ACCEPTED
    AWAITING_AUTHORIZATION --> FAILED
    AUTHORIZED --> CONSUMED
    AUTHORIZED --> REVOKED : Pix Automatico Only
    AUTHORIZED --> FAILED : Rejected Single or Scheduled Payment
    PARTIALLY_ACCEPTED --> AUTHORIZED
    PARTIALLY_ACCEPTED --> FAILED
    CONSUMED --> [*]
    REVOKED --> [*]
    FAILED --> [*]

    class AWAITING_AUTHORIZATION,PARTIALLY_ACCEPTED pending
    class AUTHORIZED success
    class REVOKED cancelled
    class FAILED failed
    class CONSUMED consumed
```

| Estado  | Descrição | Transições Para  | Gatilho/Evento |
|  --- | --- | --- | --- |
| *INICIAL* | Estado inicial quando a Autorização de Pagamento é criada. | - `AWAITING_AUTHORIZATION`
- `FAILED`

 | - A rede aceita o payload da Autorização de Pagamento.
- A rede rejeita (falha) o payload da Autorização de Pagamento.

 |
| `AWAITING_AUTHORIZATION` | A Autorização de Pagamento está aguardando confirmação pelo usuário na instituição. | - `AUTHORIZED`
- `PARTIALLY_ACCEPTED`
- `FAILED`

 | - O usuário confirmou a Autorização de Pagamento.
- O usuário confirmou a Autorização de Pagamento, no entanto, a conta bancária requer autorização de outra parte.
- A autorização falhou (o usuário pode não ter aceitado a autorização).

 |
| `PARTIALLY_ACCEPTED` | O usuário confirmou a Autorização de Pagamento, no entanto, a conta bancária requer autorização de outra parte. A Instituição notificará as partes relevantes para aprovar a autorização. | - `AUTHORIZED`
- `FAILED`

 | - Todos os usuários confirmaram a Autorização de Pagamento.
- A autorização falhou (o usuário pode não ter aceitado a autorização).

 |
| `AUTHORIZED` | O usuário (ou todos os usuários) confirmou a Autorização de Pagamento. | - `CONSUMED`
- `REVOKED`
- `FAILED`

 | - O período de autorização (ou número de transações) terminou.
- O usuário revogou a autorização.

 |
| `CONSUMED` | O período de autorização (ou número de transações) terminou. | (Estado final - sem transições adicionais) | Nenhum |
| `REVOKED` | O usuário revogou a autorização. | (Estado final - sem transições adicionais) | Nenhum |
| `FAILED` | A Autorização de Pagamento falhou. | (Estado final - sem transições adicionais) | Nenhum |


## Payment Intents

Um **Payment Intent** contém todas as informações necessárias para processar um pagamento na Rede Open Finance do Brasil. Abaixo, descrevemos os vários estados no processo de Payment Intent, detalhando as possíveis transições entre esses estados e descrevendo as condições sob as quais essas transições ocorrem. Consulte a tabela abaixo para obter uma visão abrangente de cada estado e do fluxo do processo.

```mermaid
stateDiagram-v2
    classDef pending fill:#ADD8E6,color:#000,stroke:none
    classDef success fill:#2E8B57,color:#fff,stroke:none
    classDef cancelled fill:#FFA500,color:#fff,stroke:none
    classDef failed fill:#CC3300,color:#fff,stroke:none

    [*] --> REQUIRES_ACTION
    REQUIRES_ACTION --> PROCESSING
    REQUIRES_ACTION --> FAILED
    PROCESSING --> SUCCEEDED
    PROCESSING --> SCHEDULED
    PROCESSING --> CANCELED
    PROCESSING --> FAILED
    SCHEDULED --> SCHEDULE_FINISHED
    SCHEDULED --> CANCELED
    SCHEDULE_FINISHED --> [*]
    SUCCEEDED --> [*]
    CANCELED --> [*]
    FAILED --> [*]

    class REQUIRES_ACTION,PROCESSING,SCHEDULED pending
    class SUCCEEDED,SCHEDULE_FINISHED success
    class CANCELED cancelled
    class FAILED failed
```

| Estado  | Descrição | Transições Para  | Disparo/Evento |
|  --- | --- | --- | --- |
| Criado & Confirmado | Estado inicial quando o Payment Intent é criado e confirmado pelo usuário no fluxo do cliente. | - `REQUIRES_ACTION`

 | - Payment intent é criado e confirmado.

 |
| `REQUIRES_ACTION` | O Payment Intent requer ação adicional. | - `PROCESSING`
- `FAILED`

 | - Payment intent contém todas as informações necessárias
- Payment intent falha (por exemplo, o usuário não concedeu seu consentimento no aplicativo bancário).

 |
| `PROCESSING` | O Payment Intent está sendo processado. | - `SCHEDULED`
- `SUCCEEDED`
- `CANCELED`
- `FAILED`

 | - Payment intent passa para o estado agendado
- Payment intent é processado com sucesso
- Payment intent é cancelado
- Payment intent falha.

 |
| `SCHEDULED` | O Payment Intent está agendado para processamento. | - `SCHEDULE_FINISHED`
- `CANCELED`

 | - Payment intent concluiu os pagamentos agendados
- Payment intent é cancelado.

 |
| `SCHEDULE_FINISHED` | O Payment Intent concluiu o processamento agendado. Usado apenas se não 100% de um agendamento foi bem-sucedido. Caso contrário, o status final é `SUCCEEDED`. | (Estado final - sem transições adicionais) | Nenhum |
| `SUCCEEDED` | O Payment Intent foi processado com sucesso. | (Estado final - sem transições adicionais) | Nenhum |
| `CANCELED` | O Payment Intent foi cancelado. | (Estado final - sem transições adicionais) | Nenhum |
| `FAILED` | O Payment Intent falhou. | (Estado final - sem transições adicionais) | Nenhum |