> ## Documentation Index
> Fetch the complete documentation index at: https://docs.engineapi.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Enfileirar notas para emissão em lote

> Cada item de `notas[]` segue EXATAMENTE o mesmo contrato de `POST /v1/nfe` (mesmo schema, mesmas recusas). Máximo de 50 notas por chamada. A resposta 201 confirma só o ENFILEIRAMENTO. O desfecho fiscal de cada nota é consultado em `GET /v1/nfe/queue`.



## OpenAPI

````yaml /openapi.json post /v1/nfe/batch
openapi: 3.1.0
info:
  title: EngineAPI - Motor Fiscal SaaS
  description: >-

    ## API de Emissão Fiscal B2B2B


    EngineAPI é uma plataforma SaaS para emissão de documentos fiscais
    eletrônicos brasileiros.


    ### Documentos Suportados

    - **NF-e** (Modelo 55) - Nota Fiscal Eletrônica

    - **NFC-e** (Modelo 65) - Nota Fiscal de Consumidor Eletrônica

    - **NFS-e** - Nota Fiscal de Serviços Eletrônica


    > CTe (57) e MDFe (58): roadmap sem data, fora da superfície pública.


    ### Autenticação

    Todas as rotas protegidas requerem:

    ```

    Authorization: Bearer <seu_token>    # JWT (painel web)

    x-api-key: ek_live_<sua_key>         # API Key (server-to-server)

    ```


    ### Rate Limits

    - **Por plano** (janela de 1 segundo): Dev 5 · Starter 20 · Growth 60 ·
    Scale 200 req/s

    - Headers `X-RateLimit-Limit`/`Remaining`/`Reset` em toda resposta;
    `Retry-After` no 429


    ### Idempotency

    POSTs aceitam header `Idempotency-Key` para prevenir duplicatas:

    ```

    Idempotency-Key: <uuid-único-por-operação>

    ```


    ### Ambientes

    - **Homologação**: Para testes (SEFAZ sandbox)

    - **Produção**: Emissões reais


    ### Suporte

    - Email: suporte@engineapi.com.br

    - Docs: https://docs.engineapi.com.br
        
  version: 2.1.0
  contact:
    name: engineAPI
    url: https://engineapi.com.br
    email: suporte@engineapi.com.br
  license:
    name: Proprietário
    url: https://engineapi.com.br/legal/termos
servers:
  - url: https://api.engineapi.com.br
    description: Produção
security: []
tags:
  - name: Cérebro Fiscal
    description: >-
      Classificação fiscal assistida + tributação IBS/CBS (tier 80%, apoio à
      decisão)
  - name: Autenticação
    description: Login, registro de conta e API Keys
  - name: Empresas
    description: Gestão de empresas emitentes (Issuers)
  - name: NFe
    description: Nota Fiscal Eletrônica (Modelo 55)
  - name: NFCe
    description: Nota Fiscal de Consumidor (Modelo 65)
  - name: NFSe
    description: Nota Fiscal de Serviços Eletrônica
  - name: Consultas
    description: Consulta de CNPJ e CPF
  - name: Webhooks
    description: Configuração, entregas e reenvio de eventos assíncronos
  - name: Status
    description: Status público por serviço e canário de deploy
  - name: Saúde
    description: Liveness/readiness do processo e sanidade de autenticação
paths:
  /v1/nfe/batch:
    post:
      tags:
        - NFe
      summary: Enfileirar notas para emissão em lote
      description: >-
        Cada item de `notas[]` segue EXATAMENTE o mesmo contrato de `POST
        /v1/nfe` (mesmo schema, mesmas recusas). Máximo de 50 notas por chamada.
        A resposta 201 confirma só o ENFILEIRAMENTO. O desfecho fiscal de cada
        nota é consultado em `GET /v1/nfe/queue`.
      operationId: createBatch
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateNfeBatchDto'
      responses:
        '201':
          description: Notas enfileiradas com sucesso
          content:
            application/json:
              schema:
                example:
                  queued: 3
                  ids:
                    - uuid-1
                    - uuid-2
                    - uuid-3
        '400':
          description: >-
            Payload inválido (mesmo envelope VALIDATION_ERROR do singular), com
            `errors[].field` apontando a nota pelo índice (ex.:
            `notas.2.items.0.ncm`)
        '422':
          description: >-
            LOTE_ACIMA_DO_LIMITE (mais de 50 notas) ou
            ISSUER_DIVERGENTE_NO_LOTE. Nada é enfileirado e nenhum número fiscal
            é consumido.
      security:
        - bearer: []
components:
  schemas:
    CreateNfeBatchDto:
      type: object
      properties:
        issuerId:
          description: >-
            UUID do emissor de TODAS as notas do lote. Opcional com 1 emissor
            cadastrado; obrigatório com 2+
          type: string
          format: uuid
          pattern: >-
            ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
        notas:
          minItems: 1
          type: array
          items:
            type: object
            properties:
              issuerId:
                description: >-
                  UUID do emissor (retornado por POST /v1/companies). Opcional
                  com 1 emissor cadastrado; obrigatório com 2+
                type: string
                format: uuid
                pattern: >-
                  ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
              naturezaOperacao:
                description: 'Natureza da operação, texto livre (ex.: "VENDA DE MERCADORIA")'
                type: string
              serie:
                description: Série da NF-e. Ausente = série padrão do emissor
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              numero:
                description: >-
                  Número da NF-e (passthrough). Ausente = alocado
                  automaticamente pela engineAPI
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              tpNF:
                description: 'Tipo de operação: 0=entrada, 1=saída. Padrão: saída'
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              idDest:
                description: >-
                  Identificador de local de destino: 1=interna (mesma UF),
                  2=interestadual, 3=exterior
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              indFinal:
                description: 'Indica operação com consumidor final: 0=não, 1=sim'
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              indPres:
                description: >-
                  Indicador de presença do comprador: 0=não se aplica,
                  1=presencial, 2=internet, 3=teleatendimento, etc.
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              finNFe:
                description: >-
                  Finalidade da emissão: 1=normal, 2=complementar, 3=ajuste,
                  4=devolução
                type: integer
                minimum: -9007199254740991
                maximum: 9007199254740991
              destinatario:
                type: object
                properties:
                  cnpjCpf:
                    type: string
                    minLength: 11
                    maxLength: 14
                    description: >-
                      CNPJ (14 dígitos) ou CPF (11 dígitos) do destinatário, só
                      números
                  nome:
                    type: string
                    minLength: 1
                    description: Razão social ou nome completo do destinatário
                  ie:
                    description: >-
                      Inscrição Estadual do destinatário. Obrigatória (validada
                      pela SEFAZ contra o CNPJ) quando indicadorIE = 1
                    type: string
                  indicadorIE:
                    description: >-
                      Indicador de IE do destinatário: 1 = contribuinte (exige
                      ie); 2 = isento; 9 = não contribuinte
                    type: integer
                    minimum: -9007199254740991
                    maximum: 9007199254740991
                  email:
                    description: E-mail do destinatário (informativo, não usado para envio)
                    type: string
                  endereco:
                    type: object
                    properties:
                      logradouro:
                        type: string
                        minLength: 1
                        description: Nome da rua/avenida do destinatário
                      numero:
                        type: string
                        minLength: 1
                        description: Número do endereço (aceita "S/N")
                      complemento:
                        description: Complemento do endereço (apto, sala, bloco)
                        type: string
                      bairro:
                        type: string
                        minLength: 1
                        description: Bairro do destinatário
                      codigoMunicipio:
                        type: string
                        minLength: 1
                        description: >-
                          Código IBGE do município (7 dígitos, ex.: "5208707"
                          para Goiânia)
                      municipio:
                        type: string
                        minLength: 1
                        description: Nome do município
                      uf:
                        type: string
                        minLength: 2
                        maxLength: 2
                        description: 'Sigla da UF, 2 letras maiúsculas (ex.: "GO", "SP")'
                      cep:
                        type: string
                        minLength: 1
                        description: CEP do destinatário, só dígitos ou com hífen
                    required:
                      - logradouro
                      - numero
                      - bairro
                      - codigoMunicipio
                      - municipio
                      - uf
                      - cep
                    additionalProperties: false
                required:
                  - cnpjCpf
                  - nome
                  - endereco
                additionalProperties: false
              items:
                minItems: 1
                type: array
                items:
                  type: object
                  properties:
                    codigo:
                      type: string
                      minLength: 1
                      description: Código interno do produto (seu SKU)
                    ean:
                      description: >-
                        Código de barras EAN/GTIN do produto. Ausente = "SEM
                        GTIN"
                      type: string
                    descricao:
                      type: string
                      minLength: 1
                      description: Descrição do produto
                    ncm:
                      type: string
                      minLength: 8
                      maxLength: 8
                      description: Nomenclatura Comum do Mercosul, 8 dígitos exatos
                    cest:
                      description: >-
                        Código Especificador da Substituição Tributária, 7
                        dígitos sem pontuação (ex.: "0100100"). Transmitido no
                        produto do documento; formato inválido devolve 422
                        CEST_INVALIDO
                      type: string
                    cBenef:
                      type: string
                      description: >-
                        Código do benefício fiscal (cBenef) concedido pela UF,
                        exigido por algumas UFs quando o CST/CSOSN indica
                        benefício (ex.: GO exige cBenef no CST 61 monofásico).
                        Passthrough: o código vem da tabela de benefícios da
                        própria UF, o motor não calcula nem confere
                    cfop:
                      type: string
                      minLength: 1
                      description: >-
                        Código Fiscal de Operações e Prestações (ex.: "5102"
                        venda estadual, "6102" interestadual)
                    unidade:
                      type: string
                      minLength: 1
                      description: 'Unidade comercial: "UN", "KG", "MT", "CX", etc.'
                    quantidade:
                      type: number
                      minimum: 0.0001
                      description: Quantidade vendida (mínimo 0.0001)
                    valorUnitario:
                      type: number
                      minimum: 0.01
                      description: Valor unitário do produto em R$ (mínimo 0.01)
                    valorTotal:
                      description: >-
                        Redundante: sempre recalculado como quantidade ×
                        valorUnitario. Se enviado e divergente, 400
                      type: number
                    desconto:
                      description: >-
                        Desconto INCONDICIONAL do item em R$ (vDesc do leiaute).
                        Reduz a base do ICMS e do IBS/CBS. NÃO informe desconto
                        condicional (sob condição/evento posterior): por lei ele
                        integra a base e não tem campo no item
                      type: number
                      minimum: 0
                    valorFrete:
                      description: >-
                        Frete do item em R$ (vFrete do leiaute), cobrado pelo
                        próprio emitente e destacado no documento. Soma no vNF e
                        integra a base do ICMS e do IBS/CBS
                      type: number
                      minimum: 0
                    valorSeguro:
                      description: >-
                        Seguro do item em R$ (vSeg do leiaute). Soma no vNF e
                        integra a base do ICMS e do IBS/CBS
                      type: number
                      minimum: 0
                    outrasDespesas:
                      description: >-
                        Outras despesas acessórias do item em R$ (vOutro do
                        leiaute). Soma no vNF e integra a base do ICMS e do
                        IBS/CBS
                      type: number
                      minimum: 0
                    indTot:
                      description: >-
                        Indica se o vProd do item compõe o vProd/vNF do total da
                        nota (indTot do leiaute): 1 = compõe (ausente = 1,
                        default do leiaute); 0 = não compõe. Não afeta a
                        tributação do próprio item, só a composição do total
                      anyOf:
                        - type: number
                          const: 0
                        - type: number
                          const: 1
                    icms:
                      description: >-
                        Tributação de ICMS do item (obrigatório de fato só sem
                        resolverTributacao)
                      type: object
                      properties:
                        origem:
                          description: >-
                            Origem da mercadoria: 0=nacional, 1=estrangeira
                            (importação direta), 2=estrangeira (mercado
                            interno), 3/4/5=nacional com % de conteúdo
                            importado. Ausente = 0
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        cst:
                          description: >-
                            Código de Situação Tributária do ICMS (Lucro
                            Real/Presumido), ex.: "00" tributada integralmente,
                            "40" isenta. "02" e "61" são a tributação monofásica
                            de combustíveis e valem nos dois regimes, inclusive
                            Simples Nacional (exigem o grupo combustivel e os
                            campos qBCMono/adRemICMS/vICMSMono ou
                            qBCMonoRet/adRemICMSRet/vICMSMonoRet)
                          type: string
                          pattern: ^\d{1,3}$
                        csosn:
                          description: >-
                            Código de Situação da Operação do Simples Nacional,
                            ex.: "102" tributada pelo Simples sem crédito, "400"
                            não tributada
                          type: string
                          pattern: ^\d{1,3}$
                        aliquota:
                          description: Alíquota do ICMS em % (só com cst, regime CST)
                          type: number
                        baseCalculo:
                          description: >-
                            Base de cálculo do ICMS em R$ (só com cst, regime
                            CST)
                          type: number
                        valor:
                          description: Valor do ICMS em R$ (só com cst, regime CST)
                          type: number
                        baseCalculoST:
                          description: >-
                            Base de cálculo do ICMS-ST em R$. AINDA NÃO
                            SUPORTADO: informar ST devolve 422
                            ICMS_ST_NAO_SUPORTADO (o motor não emite documento
                            sem a ST que você informou)
                          type: number
                        aliquotaST:
                          description: >-
                            Alíquota do ICMS-ST em %. AINDA NÃO SUPORTADO: ver
                            baseCalculoST (422 ICMS_ST_NAO_SUPORTADO)
                          type: number
                        valorST:
                          description: >-
                            Valor do ICMS-ST em R$. AINDA NÃO SUPORTADO: ver
                            baseCalculoST (422 ICMS_ST_NAO_SUPORTADO)
                          type: number
                        qBCMono:
                          description: >-
                            CST 02: quantidade tributada do ICMS monofásico
                            próprio, na unidade de medida do produto (não em
                            R$). Obrigatória com cst "02" (a SEFAZ rejeita com
                            767)
                          type: number
                        adRemICMS:
                          description: >-
                            CST 02: alíquota AD REM do ICMS monofásico, em R$
                            por unidade (não é percentual). Definida na
                            legislação para o produto ANP
                          type: number
                        vICMSMono:
                          description: >-
                            CST 02: valor do ICMS monofásico próprio em R$.
                            Precisa bater com qBCMono × adRemICMS (tolerância de
                            R$ 0,01); divergente devolve 422
                            ICMS_MONOFASICO_INVALIDO antes de emitir
                          type: number
                        qBCMonoRet:
                          description: >-
                            CST 61: quantidade tributada do ICMS monofásico
                            retido anteriormente, na unidade do produto (não em
                            R$). Obrigatória com cst "61" (a SEFAZ rejeita com
                            769)
                          type: number
                        adRemICMSRet:
                          description: >-
                            CST 61: alíquota AD REM do ICMS retido
                            anteriormente, em R$ por unidade (não é percentual)
                          type: number
                        vICMSMonoRet:
                          description: >-
                            CST 61: valor do ICMS monofásico retido
                            anteriormente em R$. Precisa bater com qBCMonoRet ×
                            adRemICMSRet (tolerância de R$ 0,01)
                          type: number
                      additionalProperties: false
                    pis:
                      description: >-
                        Tributação de PIS do item (passthrough: vai como
                        informado para o documento)
                      type: object
                      properties:
                        cst:
                          description: >-
                            Código de Situação Tributária do PIS. Tributado por
                            alíquota: "01"/"02" (exige baseCalculo, aliquota e
                            valor). Não tributado: "04"-"09" (só o CST vai no
                            documento). Outras operações: "49"-"56", "60"-"67",
                            "70"-"75", "98" e "99". Ausente = "99" com valores
                            zerados
                          type: string
                          pattern: ^\d{1,3}$
                        baseCalculo:
                          description: Base de cálculo do PIS em R$ (transmitida como vBC)
                          type: number
                        aliquota:
                          description: Alíquota do PIS em % (transmitida como pPIS)
                          type: number
                        valor:
                          description: >-
                            Valor do PIS em R$ (transmitido como vPIS e somado
                            no total da nota)
                          type: number
                      additionalProperties: false
                    cofins:
                      description: >-
                        Tributação de COFINS do item (passthrough: vai como
                        informado para o documento)
                      type: object
                      properties:
                        cst:
                          description: >-
                            Código de Situação Tributária da COFINS. Mesmas
                            faixas do PIS: "01"/"02" por alíquota (exige
                            baseCalculo, aliquota e valor), "04"-"09" não
                            tributado, outras operações: "49"-"56", "60"-"67",
                            "70"-"75", "98" e "99". Ausente = "99" com valores
                            zerados
                          type: string
                          pattern: ^\d{1,3}$
                        baseCalculo:
                          description: >-
                            Base de cálculo da COFINS em R$ (transmitida como
                            vBC)
                          type: number
                        aliquota:
                          description: Alíquota da COFINS em % (transmitida como pCOFINS)
                          type: number
                        valor:
                          description: >-
                            Valor da COFINS em R$ (transmitido como vCOFINS e
                            somado no total da nota)
                          type: number
                      additionalProperties: false
                    ipi:
                      description: >-
                        Tributação de IPI do item (indústria/importação). Só na
                        NF-e: a NFC-e não tem IPI no leiaute. O valor informado
                        compõe o total da nota
                      type: object
                      properties:
                        cst:
                          description: >-
                            Código de Situação Tributária do IPI (obrigatório
                            quando o grupo ipi é enviado). Tributados: "00",
                            "49", "50", "99" (exigem baseCalculo, aliquota e
                            valor). Não tributados: "01".."05" e "51".."55" (só
                            o CST vai no documento)
                          type: string
                          pattern: ^\d{1,3}$
                        baseCalculo:
                          description: Base de cálculo do IPI em R$ (transmitida como vBC)
                          type: number
                        aliquota:
                          description: Alíquota do IPI em % (transmitida como pIPI)
                          type: number
                        valor:
                          description: >-
                            Valor do IPI em R$ (transmitido como vIPI). Atenção:
                            o IPI COMPÕE o total da nota: vNF = produtos + IPI,
                            e os pagamentos precisam fechar com esse total
                          type: number
                        cEnq:
                          description: >-
                            Código de Enquadramento Legal do IPI, 1 a 3 dígitos
                            (tabela da Receita). Ausente = "999" (demais casos)
                          type: string
                      additionalProperties: false
                    ibsCbs:
                      description: >-
                        Grupo IBS/CBS da Reforma Tributária (opcional, NT
                        2025.002). Aceita o grupo completo (passthrough) ou só {
                        cClassTrib }; nesse caso o Cérebro Fiscal resolve os
                        percentuais oficiais da classe (requer
                        resolverTributacao: true)
                      anyOf:
                        - type: object
                          properties:
                            cst:
                              description: >-
                                Código de Situação Tributária do IBS/CBS
                                (Reforma Tributária). Ausente = "000"
                              type: string
                              pattern: ^\d{1,3}$
                            cClassTrib:
                              description: >-
                                Código de Classificação Tributária do IBS/CBS.
                                Ausente = "000001" (tributação integral)
                              type: string
                              pattern: ^\d{1,6}$
                            vBC:
                              description: >-
                                Base de cálculo do IBS/CBS em R$. Ausente =
                                vProd − desconto + valorFrete + valorSeguro +
                                outrasDespesas do item (LC 214/2025 art. 12 § 1º
                                III soma frete/seguro/outras despesas; art. 12 §
                                2º III: descontos incondicionais não integram a
                                base)
                              type: number
                              minimum: 0
                            ibsUf:
                              type: object
                              properties:
                                p:
                                  type: number
                                  minimum: 0
                                  description: >-
                                    Alíquota EFETIVA do componente, em % (ex.:
                                    0.04). É ela que gera o valor do tributo (v
                                    = p × vBC). Em item COM redução, vai no
                                    documento dentro de gRed/pAliqEfet
                                pNominal:
                                  description: >-
                                    Alíquota NOMINAL do componente, em % (ex.:
                                    0.1). É a alíquota cheia, antes da redução
                                    do cClassTrib, e a que o documento grava em
                                    pIBSUF/pIBSMun/pCBS. Obrigatória junto com
                                    pRedAliq; ausente = item sem redução
                                    (nominal = efetiva)
                                  type: number
                                  minimum: 0
                                pRedAliq:
                                  description: >-
                                    Percentual de redução de alíquota do
                                    cClassTrib, em % (ex.: 60 para o Anexo VII).
                                    Presente e maior que 0 faz o documento
                                    emitir o grupo gRed{pRedAliq, pAliqEfet}.
                                    Obrigatória junto com pNominal
                                  type: number
                                  minimum: 0
                                  maximum: 100
                                v:
                                  description: >-
                                    Valor do componente em R$. Ausente =
                                    calculado como p × vBC
                                  type: number
                                  minimum: 0
                              required:
                                - p
                              additionalProperties: false
                              description: >-
                                Componente estadual do IBS (Imposto sobre Bens e
                                Serviços)
                            ibsMun:
                              type: object
                              properties:
                                p:
                                  type: number
                                  minimum: 0
                                  description: >-
                                    Alíquota EFETIVA do componente, em % (ex.:
                                    0.04). É ela que gera o valor do tributo (v
                                    = p × vBC). Em item COM redução, vai no
                                    documento dentro de gRed/pAliqEfet
                                pNominal:
                                  description: >-
                                    Alíquota NOMINAL do componente, em % (ex.:
                                    0.1). É a alíquota cheia, antes da redução
                                    do cClassTrib, e a que o documento grava em
                                    pIBSUF/pIBSMun/pCBS. Obrigatória junto com
                                    pRedAliq; ausente = item sem redução
                                    (nominal = efetiva)
                                  type: number
                                  minimum: 0
                                pRedAliq:
                                  description: >-
                                    Percentual de redução de alíquota do
                                    cClassTrib, em % (ex.: 60 para o Anexo VII).
                                    Presente e maior que 0 faz o documento
                                    emitir o grupo gRed{pRedAliq, pAliqEfet}.
                                    Obrigatória junto com pNominal
                                  type: number
                                  minimum: 0
                                  maximum: 100
                                v:
                                  description: >-
                                    Valor do componente em R$. Ausente =
                                    calculado como p × vBC
                                  type: number
                                  minimum: 0
                              required:
                                - p
                              additionalProperties: false
                              description: Componente municipal do IBS
                            vIbs:
                              description: >-
                                Valor total do IBS em R$ (UF + Município).
                                Ausente = vIbsUf + vIbsMun
                              type: number
                              minimum: 0
                            cbs:
                              type: object
                              properties:
                                p:
                                  type: number
                                  minimum: 0
                                  description: >-
                                    Alíquota EFETIVA do componente, em % (ex.:
                                    0.04). É ela que gera o valor do tributo (v
                                    = p × vBC). Em item COM redução, vai no
                                    documento dentro de gRed/pAliqEfet
                                pNominal:
                                  description: >-
                                    Alíquota NOMINAL do componente, em % (ex.:
                                    0.1). É a alíquota cheia, antes da redução
                                    do cClassTrib, e a que o documento grava em
                                    pIBSUF/pIBSMun/pCBS. Obrigatória junto com
                                    pRedAliq; ausente = item sem redução
                                    (nominal = efetiva)
                                  type: number
                                  minimum: 0
                                pRedAliq:
                                  description: >-
                                    Percentual de redução de alíquota do
                                    cClassTrib, em % (ex.: 60 para o Anexo VII).
                                    Presente e maior que 0 faz o documento
                                    emitir o grupo gRed{pRedAliq, pAliqEfet}.
                                    Obrigatória junto com pNominal
                                  type: number
                                  minimum: 0
                                  maximum: 100
                                v:
                                  description: >-
                                    Valor do componente em R$. Ausente =
                                    calculado como p × vBC
                                  type: number
                                  minimum: 0
                              required:
                                - p
                              additionalProperties: false
                              description: >-
                                CBS (Contribuição sobre Bens e Serviços,
                                componente federal)
                          required:
                            - ibsUf
                            - ibsMun
                            - cbs
                          additionalProperties: false
                        - type: object
                          properties:
                            cClassTrib:
                              type: string
                              pattern: ^\d{1,6}$
                              description: >-
                                Classe de tributação IBS/CBS a estampar no item.
                                O motor busca os percentuais oficiais dela para
                                o NCM e recusa (422) se a classe não valer para
                                este NCM ou para o modelo do documento. Requer
                                resolverTributacao: true. Neste formato NENHUM
                                outro campo do grupo é aceito; inclusive vBC,
                                que hoje é sempre o vProd do item
                          required:
                            - cClassTrib
                          additionalProperties: false
                    combustivel:
                      description: >-
                        Grupo de combustíveis do leiaute (comb/LA). Obrigatório
                        quando o CFOP do item é de operação com combustível
                        (rejeição 660 da SEFAZ): sem ele a emissão é recusada
                        com 422 COMBUSTIVEL_GRUPO_OBRIGATORIO. Passthrough: o
                        motor não calcula nada aqui
                      type: object
                      properties:
                        cProdANP:
                          type: string
                          pattern: ^\d{9}$
                          description: >-
                            Código do produto na tabela SIMP da ANP, 9 dígitos
                            (ex.: "210203001" para GLP). Código inexistente na
                            tabela da ANP é rejeitado pela SEFAZ (cStat 761)
                        descANP:
                          type: string
                          minLength: 2
                          maxLength: 95
                          description: >-
                            Descrição do produto conforme a ANP (tabela SIMP), 2
                            a 95 caracteres (ex.: "GLP")
                        ufConsumo:
                          type: string
                          minLength: 2
                          maxLength: 2
                          description: >-
                            Sigla da UF de consumo do combustível (campo UFCons
                            do leiaute, obrigatório). Use "EX" para exterior
                        pGLP:
                          description: >-
                            Percentual do GLP derivado de petróleo no produto, 0
                            a 100. SÓ para cProdANP "210203001" (GLP); em outro
                            produto a emissão é recusada com 422
                            COMBUSTIVEL_INVALIDO (a SEFAZ rejeitaria com cStat
                            461)
                          type: number
                          minimum: 0
                          maximum: 100
                        pGNn:
                          description: >-
                            Percentual de gás natural NACIONAL (GLGNn) no
                            produto GLP, 0 a 100. Mesma restrição de pGLP
                          type: number
                          minimum: 0
                          maximum: 100
                        pGNi:
                          description: >-
                            Percentual de gás natural IMPORTADO (GLGNi) no
                            produto GLP, 0 a 100. Mesma restrição de pGLP. Regra
                            da SEFAZ: pGLP + pGNn + pGNi = 100 (cStat 855)
                          type: number
                          minimum: 0
                          maximum: 100
                        vPart:
                          description: >-
                            Valor de partida em R$ por quilograma, SEM ICMS.
                            Obrigatório para GLP (cStat 856) e aceito apenas
                            nele
                          type: number
                          minimum: 0
                      required:
                        - cProdANP
                        - descANP
                        - ufConsumo
                      additionalProperties: false
                  required:
                    - codigo
                    - descricao
                    - ncm
                    - cfop
                    - unidade
                    - quantidade
                    - valorUnitario
                  additionalProperties: false
                description: >-
                  Itens da nota (mínimo 1). Atenção: o campo é "items", não
                  "itens"
              transporte:
                description: Dados de transporte. Se enviado, modFrete é obrigatório
                type: object
                properties:
                  modFrete:
                    anyOf:
                      - type: number
                        const: 0
                      - type: number
                        const: 1
                      - type: number
                        const: 2
                      - type: number
                        const: 3
                      - type: number
                        const: 4
                      - type: number
                        const: 9
                    description: >-
                      Modalidade do frete: 0=por conta do remetente/emitente
                      (CIF), 1=por conta do destinatário (FOB), 2=por conta de
                      terceiros, 3=transporte próprio por conta do remetente,
                      4=transporte próprio por conta do destinatário, 9=sem
                      ocorrência de transporte
                  transportadora:
                    type: object
                    properties:
                      cnpjCpf:
                        description: CNPJ ou CPF da transportadora
                        type: string
                      nome:
                        description: Razão social ou nome da transportadora
                        type: string
                      ie:
                        description: Inscrição Estadual da transportadora
                        type: string
                      endereco:
                        description: Endereço da transportadora
                        type: string
                      municipio:
                        description: Município da transportadora
                        type: string
                      uf:
                        description: UF da transportadora
                        type: string
                    additionalProperties: false
                  volumes:
                    type: array
                    items:
                      type: object
                      properties:
                        quantidade:
                          description: Quantidade de volumes transportados
                          type: integer
                          minimum: -9007199254740991
                          maximum: 9007199254740991
                        especie:
                          description: 'Espécie dos volumes (ex.: "Caixa", "Pallet")'
                          type: string
                        pesoBruto:
                          description: Peso bruto total em kg
                          type: number
                        pesoLiquido:
                          description: Peso líquido total em kg
                          type: number
                      additionalProperties: false
                required:
                  - modFrete
                additionalProperties: false
              pagamentos:
                minItems: 1
                maxItems: 100
                type: array
                items:
                  type: object
                  properties:
                    forma:
                      type: string
                      enum:
                        - '10'
                        - '11'
                        - '12'
                        - '13'
                        - '14'
                        - '15'
                        - '16'
                        - '17'
                        - '18'
                        - '19'
                        - '20'
                        - '21'
                        - '22'
                        - '90'
                        - '98'
                        - '99'
                        - '01'
                        - '02'
                        - '03'
                        - '04'
                        - '05'
                      description: >-
                        Código da forma de pagamento SEFAZ (ex.: "01" dinheiro,
                        "03" cartão de crédito, "15" boleto)
                    valor:
                      type: number
                      minimum: 0
                      description: Valor pago nesta forma, em R$ (máximo 2 casas decimais)
                  required:
                    - forma
                    - valor
                  additionalProperties: false
                description: >-
                  Formas de pagamento (mínimo 1, máximo 100). Atenção: o campo é
                  "pagamentos" (array), não "pagamento"
              troco:
                description: >-
                  Valor do troco em R$, para venda com pagamento em dinheiro
                  (máximo 2 casas decimais)
                type: number
                minimum: 0
              cobranca:
                description: >-
                  Cobrança a prazo: fatura (numero, valorOriginal,
                  valorDesconto, valorLiquido) e/ou duplicatas[] (numero,
                  vencimento, valor). Informativo/financeiro: NÃO altera vNF nem
                  `pagamentos` (quem fecha o total transmitido continua sendo
                  `pagamentos`)
                type: object
                properties:
                  fatura:
                    description: >-
                      Dados da fatura (grupo fat). Se enviado, os 4 campos são
                      obrigatórios
                    type: object
                    properties:
                      numero:
                        type: string
                        minLength: 1
                        maxLength: 60
                        description: Número da fatura (nFat do leiaute), 1 a 60 caracteres
                      valorOriginal:
                        type: number
                        minimum: 0
                        description: Valor original da fatura em R$ (vOrig)
                      valorDesconto:
                        type: number
                        minimum: 0
                        description: >-
                          Valor do desconto da fatura em R$ (vDesc). Não pode
                          ser maior que valorOriginal
                      valorLiquido:
                        type: number
                        minimum: 0
                        description: >-
                          Valor líquido da fatura em R$ (vLiq). Precisa ser
                          igual a valorOriginal − valorDesconto, e igual à soma
                          de duplicatas[].valor quando houver duplicatas (regras
                          do grupo Y do leiaute, MOC Anexo I)
                    required:
                      - numero
                      - valorOriginal
                      - valorDesconto
                      - valorLiquido
                    additionalProperties: false
                  duplicatas:
                    description: >-
                      Duplicatas do parcelamento (grupo dup, até 120). Pode vir
                      sem `fatura`. numero é tudo-ou-nada: se UMA duplicata tem
                      numero, todas precisam ter
                    maxItems: 120
                    type: array
                    items:
                      type: object
                      properties:
                        numero:
                          description: >-
                            Número da duplicata (nDup do leiaute), 1 a 60
                            caracteres. Ausente = a engineAPI preenche
                            sequencial (001, 002...): o documento sempre leva um
                            nDup, nunca vazio
                          type: string
                          minLength: 1
                          maxLength: 60
                        vencimento:
                          type: string
                          pattern: ^\d{4}-\d{2}-\d{2}$
                          description: >-
                            Data de vencimento da duplicata, formato AAAA-MM-DD
                            (dVenc do leiaute). Precisa ser >= à data de emissão
                            e não-decrescente entre as parcelas (regras do grupo
                            Y do leiaute, MOC Anexo I)
                        valor:
                          type: number
                          minimum: 0.01
                          description: Valor da duplicata em R$ (vDup do leiaute)
                      required:
                        - vencimento
                        - valor
                      additionalProperties: false
                additionalProperties: false
              informacoesComplementares:
                description: >-
                  Informações complementares de interesse do contribuinte,
                  impressas no DANFE
                type: string
              informacoesFisco:
                description: Informações adicionais de interesse do fisco
                type: string
                maxLength: 2000
              resolverTributacao:
                description: >-
                  Ativa a emissão assistida (Cérebro Fiscal): resolve CSOSN e o
                  grupo IBS/CBS de itens sem tributação manual. Requer plano com
                  fiscalBrain + Issuer.fiscalBrainEnabled
                type: boolean
            required:
              - destinatario
              - items
              - pagamentos
            additionalProperties: false
          description: >-
            Notas a enfileirar. Cada item segue EXATAMENTE o mesmo contrato de
            POST /v1/nfe
      required:
        - notas

````