---
title: "Fluxos de processamento: NF-e, NFC-e, Taxes e Taxes Payment Forms"
description: "Diagramas dos fluxos de processamento da emissão de NF-e e NFC-e, do cálculo de impostos (Taxes) e da geração de guias de recolhimento (Taxes Payment Forms): recepção, cálculo, numeração, assinatura, autorização, consulta, notificação, cancelamento, CC-e, inutilização e contingência."
source_url: https://nfe.io/docs/emissao-nfe-nfce-fluxos-de-processamento/
last_updated: 2026-09-25
---

# Fluxos de Processamento: NF-e, NFC-e, Taxes e Taxes Payment Forms

| | |
|---|---|
| **Produto** | Emissão de Nota Fiscal de Produto NFE.io (`dfetech-product-invoice-api`) |
| **Documento** | 2 de 4: Desenho dos fluxos de processamento |
| **Versão** | 1.0 (24/09/2026) |
| **Público** | Clientes, times de arquitetura, TI e área fiscal |
| **Documentos relacionados** | [1 de 4: Arquitetura](./01-arquitetura.md) · [3 de 4: Processamento, resiliência, idempotência e contingência](./03-processamento-resiliencia-e-contingencia.md) · [4 de 4: Mensageria e filas](./04-mensageria-e-filas.md) · [English version](./english/02-processing-flows.md) |

## 1. Como ler este documento

Este documento traz os diagramas dos fluxos de cada subproduto. As regras de tempo, os limites de tentativas, as garantias de idempotência e a parametrização da contingência estão explicadas por escrito no documento 3.

Nos diagramas, os nomes em inglês (por exemplo, `Issued` ou `issued_error`) são os valores que o cliente vê no campo `status` da nota e na ação do webhook.

### 1.1 Visão comum: a vida de uma nota

```mermaid
flowchart LR
    A["Cliente envia<br/>o pedido"] --> B["API valida<br/>e registra"]
    B --> C["Criação da nota<br/>e cálculo de impostos"]
    C --> D["Numeração<br/>série e número"]
    D --> E["Chave de acesso,<br/>assinatura e validação XSD"]
    E --> F["Autorização<br/>na SEFAZ"]
    F --> G["XML de distribuição<br/>nfeProc"]
    G --> H["Webhook<br/>ao cliente"]
    H --> I["Consulta, XML e<br/>DANFE pela API"]
    F -. "tempo esgotado<br/>ou duplicidade" .-> J["Consulta pela<br/>chave de acesso"]
    J -.-> G
```

### 1.2 Situações da nota (`status`)

```mermaid
stateDiagram-v2
    [*] --> Created: pedido aceito e nota criada
    Created --> Processing: numerada, assinada e enviada
    Processing --> Issued: autorizada (cStat 100/150)
    Processing --> IssuedContingency: emitida em contingência (EPEC ou offline)
    IssuedContingency --> Issued: autorizada na transmissão posterior
    IssuedContingency --> Error: rejeição ou tentativas esgotadas na transmissão posterior
    Created --> Error: recusa na criação (validação, cadastro, impostos)
    Processing --> Error: rejeição da SEFAZ ou tentativas esgotadas
    Processing --> IssueDenied: uso denegado
    Issued --> Cancelled: cancelamento homologado
    Error --> Disabled: numeração inutilizada
    Issued --> [*]
    Cancelled --> [*]
    Disabled --> [*]
    IssueDenied --> [*]
```

---

## 2. NF-e (modelo 55)

### 2.1 Recepção do pedido (API)

```mermaid
flowchart TD
    R["POST /v2 ou /v3/companies/{companyId}/productinvoices"] --> AU{"Chave de API válida<br/>e com perfil do produto?"}
    AU -- não --> E401["401 ou 403"]
    AU -- sim --> MAP{"Payload bem formado?"}
    MAP -- não --> E400["400 com a lista de erros"]
    MAP -- sim --> EMP["Busca a empresa e a<br/>inscrição estadual"]
    EMP --> VAL{"Regras de validação<br/>do payload e do cadastro"}
    VAL -- falha --> E400
    VAL -- ok --> ID["Gera o identificador<br/>da nota (id)"]
    ID --> BL["Guarda o pedido original<br/>no armazenamento de objetos"]
    BL --> Q["Publica a etapa<br/>de criação na fila"]
    Q -- "falha ao publicar" --> E503["503: nenhuma nota foi criada,<br/>o pedido pode ser reenviado"]
    Q -- ok --> OK["200 com o recurso<br/>e o id da nota"]
```

### 2.2 Criação da nota e cálculo de impostos

```mermaid
flowchart TD
    S["Worker recebe a etapa de criação"] --> LK["Obtém a trava da nota"]
    LK --> EX{"A nota já existe<br/>no event store?"}
    EX -- sim --> RES["Retoma a partir da<br/>etapa em que a nota está"]
    EX -- não --> CAD{"Empresa e inscrição<br/>estadual ativas e<br/>do tipo NF-e?"}
    CAD -- não --> REF["Recusa a nota<br/>(Error, issued_error)"]
    CAD -- sim --> PED["Lê o pedido original"]
    PED --> BY{"Nota de crédito ou débito<br/>com cálculo dispensado?"}
    BY -- sim --> FAC
    BY -- não --> TX{"Algum item pediu<br/>cálculo automático?"}
    TX -- não --> FAC
    TX -- sim --> CALC["Chama o Taxes<br/>ICMS, ST, FCP, DIFAL, IPI,<br/>PIS, COFINS, IBS e CBS"]
    CALC -- "sucesso" --> APL["Aplica os valores<br/>calculados aos itens"]
    APL --> FAC
    CALC -- "rejeição (4xx)" --> REF
    CALC -- "indisponível" --> RT["Nova tentativa<br/>com espera crescente"]
    RT -. "limite esgotado" .-> REF
    RT --> CALC
    FAC{"Contingência EPEC ativa<br/>para a inscrição estadual<br/>ou para a UF?"}
    FAC -- sim --> CEP["Marca a nota para<br/>emissão em EPEC"]
    FAC -- não --> CRE
    CEP --> CRE["Cria o agregado<br/>e grava os eventos (Created)"]
    CRE --> NX["Próxima etapa: numeração"]
```

### 2.3 Numeração, assinatura e autorização

```mermaid
flowchart TD
    N["Etapa de numeração"] --> SN{"O pedido trouxe<br/>série e número?"}
    SN -- sim --> BAT
    SN -- não --> SEQ["Obtém a série da inscrição<br/>estadual e o próximo número<br/>da sequência"]
    SEQ -- "falha definitiva" --> REF["Recusa a nota (issued_error)"]
    SEQ --> BAT["Grava série e número"]
    BAT --> SEND["Etapa de envio"]
    SEND --> EPC{"Nota marcada<br/>para EPEC?"}
    EPC -- sim --> EPEC["Fluxo EPEC (2.9)"]
    EPC -- não --> KEY["Gera a chave de acesso"]
    KEY --> CERT["Obtém o certificado A1"]
    CERT --> VCERT{"Certificado dentro<br/>da validade?"}
    VCERT -- não --> ERRC["Erro sem chamar a SEFAZ<br/>(issued_error)"]
    VCERT -- sim --> SIGN["Gera o XML versão 4.00,<br/>assina e valida no schema XSD"]
    SIGN --> UP["Guarda o XML assinado"]
    UP --> AUT["NFeAutorizacao4 com indSinc=1<br/>SEFAZ autorizadora da UF"]
    AUT --> RESP["Tratamento da resposta (2.4)"]
```

### 2.4 Tratamento da resposta da SEFAZ e consulta pela chave de acesso

```mermaid
flowchart TD
    R{"Resposta da SEFAZ"}
    R -- "autorizada: cStat 100 ou 150" --> M["Montagem do nfeProc (2.5)"]
    R -- "lote recebido sem<br/>resultado síncrono" --> C
    R -- "tempo esgotado ou<br/>resposta inconclusiva" --> C["Consulta pela chave de acesso<br/>NFeConsultaProtocolo4"]
    R -- "204 ou 539 com a chave<br/>desta mesma nota" --> C
    R -- "sem comunicação ou<br/>SEFAZ indisponível" --> RT["Nova tentativa do envio<br/>com espera crescente"]
    R -- "rejeição" --> REJ["Guarda o XML de rejeição<br/>(Error, issued_error com cStat e motivo)"]
    R -- "certificado recusado<br/>no TLS" --> REJ
    C --> CR{"Resultado da consulta"}
    CR -- "autorizada" --> M
    CR -- "denegada: 301, 302, 303" --> DEN["Uso denegado<br/>(IssueDenied, issued_error com o cStat)"]
    CR -- "217: nota não consta<br/>na base da SEFAZ" --> NF{"Consultas feitas<br/>abaixo do limite?"}
    NF -- sim --> CW["Aguarda e consulta<br/>novamente"]
    CW --> C
    NF -- não --> REJ
    CR -- "indisponível" --> CW
    RT -. "limite de tentativas" .-> FAIL["Tentativas esgotadas<br/>(Error, issued_failed)"]
```

### 2.5 XML de distribuição, notificação e DANFE

```mermaid
flowchart LR
    M["Junta o protocolo<br/>de autorização ao XML"] --> P["Guarda o nfeProc"]
    P --> ST["Nota Issued"]
    ST --> W{"Cliente tem webhook<br/>cadastrado?"}
    W -- sim --> WH["Envia product_invoice<br/>issued_successfully"]
    W -- não --> REG["Registra que não<br/>havia webhook"]
    WH --> FIN["Fim do fluxo"]
    REG --> FIN
    FIN -.-> RM["Índice de consulta<br/>atualizado"]
    FIN -.-> PDF["GET .../pdf gera o DANFE<br/>na primeira solicitação<br/>e guarda o arquivo"]
```

### 2.6 Cancelamento

```mermaid
flowchart TD
    D["DELETE .../productinvoices/{id}?reason="] --> V{"Nota Issued?<br/>Justificativa com 15 a 255<br/>caracteres ou vazia?"}
    V -- não --> E["400 ou 404"]
    V -- sim --> A["204: pedido aceito"]
    A --> W["Worker assina o evento<br/>110111 (Cancelamento)"]
    W --> S["Envia à SEFAZ autorizadora<br/>NFeRecepcaoEvento4"]
    S --> R{"Resposta"}
    R -- "135, 136 ou 155" --> MC["Guarda o XML do evento<br/>(Cancelled, cancelled_successfully)"]
    R -- "rejeição" --> ER["cancelled_error com o motivo"]
    R -- "indisponível" --> RT["Nova tentativa"]
    RT -. "limite" .-> FL["cancelled_failed"]
    RT --> S
```

### 2.7 Carta de Correção Eletrônica (CC-e)

```mermaid
flowchart TD
    P["PUT .../productinvoices/{id}/correctionletter"] --> V{"Nota Issued?<br/>Texto com 15 a 1.000 caracteres?"}
    V -- não --> E["400 ou 404"]
    V -- sim --> A["204: pedido aceito"]
    A --> W["Worker assina o evento 110110<br/>com o número sequencial seguinte"]
    W --> S["Envia à SEFAZ autorizadora"]
    S --> R{"Resposta"}
    R -- "135, 136 ou 155" --> OK["Guarda o XML do evento; XML e PDF<br/>da CC-e ficam disponíveis<br/>(cce_successfully)"]
    R -- "rejeição" --> ER["cce_error com o motivo"]
    R -- "indisponível" --> RT["Nova tentativa"]
    RT -. "limite" .-> FL["cce_failed"]
    RT --> S
```

### 2.8 Inutilização de numeração

```mermaid
flowchart TD
    subgraph U1["Por nota recusada (assíncrona)"]
        A1["POST .../{id}/disablement"] --> B1{"Nota em Error<br/>e com número?"}
        B1 -- não --> X1["400"]
        B1 -- sim --> C1["204: pedido aceito"]
        C1 --> D1["Worker assina e envia<br/>NFeInutilizacao4"]
        D1 --> E1{"cStat 102?"}
        E1 -- sim --> F1["Disabled<br/>disabled_successfully"]
        E1 -- não --> G1["disabled_error<br/>ou nova tentativa"]
    end
    subgraph U2["Por faixa (síncrona)"]
        A2["POST .../productinvoices/disablement<br/>UF, série, número inicial e final"] --> B2["Trava a faixa"]
        B2 --> C2["Assina e envia<br/>NFeInutilizacao4"]
        C2 --> D2{"Resposta"}
        D2 -- "102, 206 ou 563<br/>(faixa já inutilizada)" --> E2["204"]
        D2 -- "rejeição de dados" --> F2["400"]
        D2 -- "outra rejeição" --> G2["422"]
        D2 -- "indisponível" --> H2["503"]
    end
```

### 2.9 Contingência EPEC

```mermaid
flowchart TD
    subgraph ATIV["Ativação"]
        M1["Estratégia Manual:<br/>cliente chama switch-authorizer<br/>com authorizer = EPEC"]
        M2["Estratégia StateTaxAuthorityStatusUnavailable:<br/>a operação da NFE.io ativa<br/>a contingência da UF"]
    end
    M1 & M2 --> NEW["Notas criadas a partir desse momento<br/>são marcadas para EPEC"]
    NEW --> G["Gera a NF-e com tpEmis=4,<br/>dhCont e xJust"]
    G --> EV["Assina o evento EPEC (110140)<br/>e envia ao Ambiente Nacional"]
    EV --> R{"Evento registrado?"}
    R -- sim --> IC["Nota IssuedContingency,<br/>XML do EPEC disponível<br/>e DANFE com a marca de contingência"]
    IC --> WH["Webhook issued_successfully<br/>com status IssuedContingency"]
    R -- "rejeição" --> ER["issued_error"]
    WH --> WAIT["Aguarda o fim da contingência"]
    WAIT --> BACK{"Contingência encerrada<br/>(authorizer = Normal ou<br/>UF normalizada)?"}
    BACK -- não --> WAIT
    BACK -- sim --> TR["Regularização conduzida pela<br/>operação da NFE.io: transmissão<br/>da mesma NF-e à SEFAZ de origem<br/>(prazo legal: 168 horas)"]
    TR --> AUT["Autorizada: nota Issued"]
```

---

## 3. NFC-e (modelo 65)

### 3.1 Emissão assíncrona

```mermaid
flowchart TD
    R["POST /v2 ou /v3/companies/{companyId}/consumerinvoices"] --> V{"Payload e empresa<br/>válidos?"}
    V -- não --> E400["400"]
    V -- sim --> OK["200 com o id da nota"]
    OK --> W["Worker: confere a IE (ativa, tipo NFC-e,<br/>estratégia Manual), cria a nota<br/>e calcula os impostos"]
    W -- "IE inválida ou estratégia<br/>diferente de Manual" --> ERW["Recusa (issued_error)"]
    W --> N["Numeração"]
    N --> BR{"Disjuntor de contingência<br/>da UF aberto e IE<br/>habilitada para offline?"}
    BR -- sim --> OFF["Emite direto em<br/>contingência offline (3.3)"]
    BR -- não --> S["Chave, assinatura,<br/>QR Code com CSC"]
    S --> A["NFeAutorizacao4<br/>indSinc=1"]
    A --> RS{"Resposta"}
    RS -- "autorizada" --> M["nfeProc, Issued<br/>issued_successfully"]
    RS -- "tempo esgotado ou<br/>SEFAZ indisponível<br/>e IE habilitada" --> OFF
    RS -- "tempo esgotado ou duplicidade<br/>(IE não habilitada)" --> C["Consulta pela chave"]
    RS -- "SEFAZ indisponível<br/>(IE não habilitada)" --> RTN["Nova tentativa<br/>com espera crescente"]
    RTN --> A
    RS -- "rejeição" --> ER["Error, issued_error"]
    C --> M
```

### 3.2 Emissão síncrona

```mermaid
sequenceDiagram
    autonumber
    participant CL as Sistema do cliente (PDV)
    participant API as API NFC-e
    participant TX as Taxes
    participant WK as Worker NFC-e
    participant SF as SEFAZ autorizadora

    CL->>API: POST .../consumerinvoices/sync
    API->>API: Valida payload, empresa e IE
    API->>TX: Cálculo de impostos (quando pedido)
    TX-->>API: Tributos por item
    API->>API: Cria a nota (Created)
    API->>WK: Autorização síncrona (chamada interna)
    WK->>WK: Trava, numera, assina, QR Code
    WK->>SF: NFeAutorizacao4 indSinc=1 com prazo máximo
    alt Autorizada dentro do prazo
        SF-->>WK: cStat 100
        WK-->>API: concluída
        API-->>CL: 200 com status Issued
    else Tempo esgotado ou SEFAZ indisponível, IE habilitada para offline
        WK->>WK: Regenera a nota com tpEmis=9 (offline)
        WK-->>API: concluída em contingência
        API-->>CL: 200 com status IssuedContingency
        WK->>SF: Transmissão posterior (3.4)
    else Tempo esgotado ou duplicidade, IE não habilitada para offline
        WK-->>API: segue em processamento
        API-->>CL: 503 (a nota continua sendo tratada)
        WK->>SF: Consulta pela chave de acesso
    else SEFAZ indisponível, IE não habilitada para offline
        WK->>WK: Recusa a nota
        API-->>CL: 200 com status Error
    else Rejeição
        SF-->>WK: cStat de rejeição
        API-->>CL: 200 com status Error e o motivo
    end
```

### 3.3 Contingência offline (tpEmis=9)

```mermaid
flowchart TD
    subgraph REA["Modo reativo"]
        T1["Autorização normal termina em<br/>tempo esgotado ou indisponibilidade"] --> C1["Conta mais uma falha<br/>no disjuntor da UF"]
        C1 --> H1{"IE habilitada<br/>para offline?"}
        H1 -- não --> Q1["Segue o fluxo normal:<br/>consulta pela chave (tempo esgotado)<br/>ou nova tentativa (indisponibilidade)"]
        H1 -- sim --> G1["Guarda a chave abandonada (tpEmis=1)<br/>e regera a nota com tpEmis=9,<br/>dhCont = agora"]
    end
    subgraph PRO["Modo proativo"]
        B1{"5 falhas seguidas (tempo esgotado<br/>ou indisponibilidade) na mesma UF?"} -- sim --> OP["Disjuntor da UF aberto"]
        OP --> H2{"IE habilitada<br/>para offline?"}
        H2 -- sim --> G2["Emite direto com tpEmis=9,<br/>dhCont = abertura do disjuntor"]
        H2 -- não --> N2["Tentativa normal"]
    end
    G1 & G2 --> X["Nova chave, assinatura,<br/>QR Code offline com CSC"]
    X --> IC["Nota IssuedContingency<br/>DANFE NFC-e em contingência"]
    IC --> WH["issued_contingency (assíncrona)<br/>ou 200 IssuedContingency (síncrona)"]
    WH --> TR["Transmissão posterior (3.4)"]
    OK1["Qualquer autorização normal<br/>ou retransmissão autorizada na UF"] --> CL["Disjuntor fechado"]
```

### 3.4 Transmissão posterior das notas em contingência

```mermaid
flowchart TD
    S["Primeira tentativa imediata,<br/>depois a cada 10 minutos"] --> A["Envia o XML offline já assinado"]
    A --> R{"Resposta"}
    R -- "autorizada" --> M["nfeProc, Issued<br/>issued_successfully<br/>fecha o disjuntor da UF"]
    R -- "duplicidade: a nota tpEmis=1<br/>abandonada foi autorizada" --> RC["Reconcilia com a nota original:<br/>prevalece a chave tpEmis=1"]
    RC --> Q["Consulta pela chave<br/>e monta o nfeProc"]
    R -- "tempo esgotado ou<br/>indisponível" --> S
    R -- "rejeição" --> ER["Error, issued_error:<br/>regularização pelo contribuinte"]
    S -. "limite de tentativas" .-> FL["Error, issued_failed"]
```

### 3.5 Cancelamento e inutilização

Os fluxos seguem os mesmos passos da NF-e (seções 2.6 e 2.8), com o tipo de evento `consumer_invoice`. O cancelamento exige a nota autorizada (`Issued`): uma nota em `IssuedContingency` ainda não transmitida só pode ser cancelada depois de autorizada. A NFC-e não tem Carta de Correção.

---

## 4. Taxes: cálculo de impostos

### 4.1 Cálculo por item

```mermaid
flowchart TD
    R["POST /tax-rules/{tenantId}/engine/calculate<br/>ou chamada interna da NF-e/NFC-e"] --> AU{"Conta da rota =<br/>conta da chave de API?"}
    AU -- não --> E403["403"]
    AU -- sim --> P["Para cada item: busca o produto<br/>cadastrado (SKU e origem)"]
    P --> PV{"Produto inativo, ou<br/>produto não cadastrado<br/>e sem NCM?"}
    PV -- sim --> E400["400"]
    PV -- não --> CH{"Cálculo recente armazenado<br/>e elegível para reuso?"}
    CH -- "sim e dentro<br/>da validade" --> RB["Recalcula bases e valores<br/>com os dados da requisição"]
    CH -- não --> ENG["Consulta o motor de<br/>regras tributárias"]
    ENG -- sucesso --> SV["Armazena o resultado<br/>para reuso"]
    ENG -- "falha do motor" --> FB{"Há resultado armazenado<br/>(mesmo vencido) ou regra<br/>CST 40 cadastrada no produto<br/>que cubra todos os itens?"}
    FB -- sim --> RB
    FB -- não --> E5["422, 500 ou 503<br/>conforme a causa:<br/>nada é presumido"]
    SV --> CT
    RB --> CT["Aplica a tributação<br/>personalizada do produto<br/>(customTax), quando houver"]
    CT --> CB{"CST 40/41 personalizado,<br/>motor indica cBenef e o produto<br/>não informa o seu?"}
    CB -- sim --> E422["422 antes da emissão,<br/>evitando a rejeição na SEFAZ"]
    CB -- não --> OUT["200 com CFOP, CST/CSOSN,<br/>bases, alíquotas e valores<br/>de ICMS, ST, FCP, DIFAL,<br/>IPI, PIS e COFINS por item"]
```

O IBS e a CBS são calculados em uma chamada separada, feita pela NF-e e pela NFC-e para os itens que pedem o cálculo oficial (seção 6).

### 4.2 Cadastro de produto

```mermaid
flowchart LR
    C["POST /{tenantId}/products"] --> CR["Produto Created"]
    CR --> V["Validação assíncrona"]
    V --> T{"Tem tributação<br/>personalizada (customTax)?"}
    T -- não --> AC["Active"]
    T -- sim --> PE["CustomTaxPending:<br/>registro e validação<br/>das regras no motor"]
    PE --> CK{"Regras conferidas?"}
    CK -- sim --> AC
    CK -- "ainda não" --> PE
    CK -- "falha" --> ER["Error"]
    PE & AC & ER --> WH["Webhook product_tax"]
```

---

## 5. Taxes Payment Forms: guias de recolhimento do DIFAL

```mermaid
flowchart TD
    R["POST /v1/tax-payment-forms/{accountId}/{companyId}/gnre<br/>com o id da NF-e"] --> L["Lê a NF-e autorizada<br/>e o XML"]
    L --> V{"Operação interestadual<br/>com vICMSUFDest maior que zero?"}
    V -- não --> NN0["400"]
    V -- sim --> UF{"UF de destino"}
    UF -- "ES" --> DUA["DUA na SEFAZ-ES"]
    UF -- "SP" --> NS["Não suportado (400)"]
    UF -- "demais UFs" --> GN["Lote GNRE no Portal GNRE"]
    DUA & GN --> ST["Created → Prepared →<br/>Transmitted → Generated"]
    ST --> OUT["PDF da guia"]
    ST -- "valor abaixo do mínimo<br/>ou total zero" --> NN["ErrorNotNeeded:<br/>guia desnecessária"]
    ST -- "falha no processamento" --> RT["Nova tentativa a cada 10 s,<br/>até 100 vezes"]
    RT --> ST
    OUT & NN --> WH["Webhook tax_payment_form"]
```

---

## 6. Relação entre NF-e, NFC-e e Taxes

```mermaid
sequenceDiagram
    autonumber
    participant CL as Cliente
    participant INV as NF-e ou NFC-e
    participant TX as Taxes
    participant ENG as Motor de regras
    participant IBS as Cálculo IBS/CBS
    participant SF as SEFAZ

    CL->>INV: Pedido de emissão com taxDetermination<br/>nos itens e/ou ibscbs.calculationMode = OfficialService
    INV->>INV: Validação e registro
    Note over INV: NF-e: no worker, na etapa de criação<br/>NFC-e síncrona: na própria API<br/>NFC-e assíncrona: no worker
    INV->>TX: Cálculo por item (ICMS, ST, FCP, DIFAL, IPI, PIS, COFINS)
    TX->>ENG: Regras do cenário (quando não há reuso)
    ENG-->>TX: CST, alíquotas, bases
    TX-->>INV: Tributos calculados
    INV->>TX: Cálculo de IBS e CBS (itens com cálculo oficial)
    TX->>IBS: Regime geral
    IBS-->>TX: Bases e valores
    TX-->>INV: IBS e CBS
    INV->>INV: Aplica os valores e cria a nota
    INV->>SF: Autorização
    SF-->>INV: Protocolo
    INV-->>CL: Webhook
```

- A NF-e e a NFC-e chamam o Taxes **somente** quando o cliente pede o cálculo automático nos itens. Sem o pedido, os valores informados no payload são usados como vieram.
- As notas de crédito e as de débito dos tipos 01, 02, 03, 05 e 08 dispensam o cálculo.
- O Taxes não se comunica com a SEFAZ. O Payment Forms não é chamado pela emissão: ele lê a NF-e já autorizada quando o cliente pede a guia.
