Endpoints NF-e / NFC-e

Referência completa dos endpoints para emissão, cancelamento, consulta de status e download do DANFE. Todos os endpoints usam o prefixo https://platform.notaas.com.br/api/v1 e requerem x-api-key.

Emissão

POST/nfe/emitir🔑 x-api-key

Enfileira uma NF-e ou NFC-e para emissão assíncrona via SEFAZ. Retorna 202 com invoiceId para polling.

Body (JSON)

CampoTipoReq?Descrição
modelonumbernão55 para NF-e, 65 para NFC-e (padrão: 55)
naturezaOperacaostringsimDescrição da operação fiscal (ex: "Venda de mercadoria")
dataEmissaostringnãoData/hora de emissão (competência fiscal). Aceita "YYYY-MM-DD" ou ISO 8601 completo (ex: "2026-08-31T23:59:59-03:00"). Para "YYYY-MM-DD": data passada → fixada às 12:00:00 (horário de Brasília); data de hoje → usa o horário atual da transmissão em Brasília (nunca 12:00:00 se isso cair no futuro), garantindo que emissões no início do dia não sejam rejeitadas; data futura → também fixada às 12:00:00, sujeita à tolerância máxima de 5 minutos. Retroatividade de até 30 dias é permitida para NF-e mod. 55 (fechamento contábil); NFC-e mod. 65 tolera no máximo 5 min de atraso. Tolerância de 5 min no futuro para ambos os modelos. Alias técnico: dhEmi. Padrão: agora.
destobjectsimDados do destinatário (obrigatório para NF-e mod. 55)
dest.cnpj / dest.cpfstringnãoCNPJ (14 dígitos) ou CPF (11 dígitos), apenas números. Obrigatório para destinatários no Brasil. Não deve ser enviado se destinatário for no exterior.
dest.idEstrangeirostringnãoNúmero do passaporte ou documento de identificação do comprador estrangeiro (1 a 20 caracteres alfanuméricos). Obrigatório para destinatário no exterior (idDest=3). Aliases aceitos: id_estrangeiro, passaporte, documentoEstrangeiro.
dest.nomestringsimRazão social / nome completo do destinatário (mínimo 2 caracteres, máx. 60)
dest.iestringnãoInscrição Estadual (se contribuinte; omitir se isento/não-contribuinte). Não deve ser enviado para destinatário no exterior.
dest.indicadorIEnumbernão1=Contribuinte, 2=Isento, 9=Não contribuinte. Auto-inferido de dest.ie quando omitido. Para destinatário no exterior (idDest=3), deve ser obrigatoriamente 9.
dest.emailstringnãoE-mail do destinatário para envio do XML e DANFE
dest.endereco.logradourostringsimLogradouro do destinatário
dest.endereco.numerostringnãoNúmero (padrão: "SN")
dest.endereco.complementostringnãoComplemento
dest.endereco.bairrostringsimBairro
dest.endereco.codigoMunicipionumbernãoCódigo IBGE do município (7 dígitos, ex: 4106902). Obrigatório para endereços no Brasil; no exterior (UF="EX"), preenchido automaticamente como 9999999.
dest.endereco.cidadestringnãoNome do município (obrigatório no Brasil; no exterior fixado como "EXTERIOR").
dest.endereco.ufstringsimSigla do estado (ex: "PR", "SP") ou "EX" para destinatário no exterior.
dest.endereco.cepstringnãoCEP (apenas dígitos no Brasil; opcional no exterior).
dest.endereco.paisobject | string | numbernãoDados do país do destinatário no exterior (obrigatório quando UF="EX" ou idDest=3). Pode ser enviado como objeto estruturado contendo codigo e nome, ou diretamente como atalho (código numérico BACEN ou nome do país).
dest.endereco.pais.codigonumbernãoCódigo numérico do país na tabela oficial do BACEN (ex: 2496 para EUA, 1600 para Reino Unido). Obrigatório no exterior (UF="EX"). Aliases aceitos na raiz de endereco: codigoPais, cPais, paisCodigo.
dest.endereco.pais.nomestringnãoNome por extenso do país (ex: "ESTADOS UNIDOS", de 2 a 60 caracteres). Obrigatório no exterior (UF="EX"). Aliases aceitos na raiz de endereco: nomePais, xPais, paisNome.
items[]arraysimArray de itens/produtos da nota (mínimo 1)
items[].descricaostringsimDescrição do produto (alias: items[].xProd)
items[].codigostringnãoCódigo interno do produto (padrão: "PRD001", alias: items[].cProd)
items[].ncmstringsimNCM — 8 dígitos (ex: "61091000")
items[].cfopstringsimCFOP — 4 dígitos (ex: "5102")
items[].quantidadenumbernãoQuantidade comercial (padrão: 1, alias: items[].qCom)
items[].valorUnitarionumbernãoValor unitário em reais (padrão: valorTotal, alias: items[].vUnCom)
items[].valorTotalnumbersimValor total bruto do item em reais (deve ser > 0, alias: items[].vProd)
items[].unidadestringnãoUnidade comercial (padrão: "UN", alias: items[].uCom)
items[].eanstringnãoEAN/GTIN do produto (omitir para "SEM GTIN", alias: items[].cEAN)
items[].cststringnãoCST do ICMS para CRT 2 ou 3 (ex: "00", "40", "41", "60"). Contrato: omitir ou enviar vazio ("") usa o padrão do regime ("00"); valor informado deve ter até 2 dígitos numéricos — valor não numérico (ex: "abc") ou com dígitos além do tamanho retorna HTTP 400 e NÃO recebe default.
items[].csosnstringnãoCSOSN do ICMS para CRT 1 ou 4 / Simples Nacional e MEI (NF-e: "102", "300", "400", "900" | NFC-e: "102", "300"). Exclusivo com cst. Contrato: omitir ou enviar vazio ("") usa o padrão do regime ("400" no SN, "102" no MEI); valor informado deve ter até 3 dígitos numéricos — valor não numérico ou com dígitos além do tamanho retorna HTTP 400 e NÃO recebe default.
items[].aliquotaIcmsnumbernãoAlíquota ICMS em % — obrigatório para CST 00, 10, 20 (alias: items[].pICMS)
items[].percentualReducaoBcnumbernãoPercentual de redução da base de cálculo do ICMS (%). Obrigatório para CST 20 (> 0 e < 100); opcional para CST 70 (> 0 e < 100 quando informado; omitir para 0). Rejeitado para outros CSTs ou CSOSN do Simples Nacional. Aliases: items[].pRedBC, items[].predbc, items[].percentual_reducao_bc.
items[].aliquotaIcmsUfDestnumbernãoOverride setorial da alíquota interna do ICMS na UF de destino (%, DIFAL). >= 0 e < 100. Quando omitido, a API usa a alíquota modal padrão da UF. Aliases: items[].pICMSUFDest, items[].aliqInternaDestino, items[].aliquotaInternaDestino.
items[].percentualFcpUfDestnumbernãoOverride do percentual de FCP da UF de destino (%, DIFAL). >= 0 e <= 100. Quando omitido, a API usa o FCP padrão da UF. Aliases: items[].pFCPUFDest, items[].fcpDestino, items[].percentualFcpDestino.
items[].aliquotaInterestadualnumbernãoOverride da alíquota interestadual (%, DIFAL) — ex: 4 (importados), 7 ou 12. >= 0 e < 100. Quando omitido, a API resolve automaticamente pela regra NA09-30 (origem × destino). Aliases: items[].pICMSInter, items[].aliqInterestadual.
items[].gerarDifalbooleannãoOverride UNIDIRECIONAL do grupo ICMSUFDest (DIFAL) no item: false suprime o grupo em item tributado (decisão do emitente — risco de rejeição 694); true é aceito apenas como no-op em item tributado e é REJEITADO (HTTP 400) em item isento/imune/não tributado/suspenso (NA01-20, Exceção 10). Ausente = a matriz por CST/CSOSN decide. Aceita strings "true"/"false". Aliases: items[].gerarIcmsUfDest, items[].difal (aliases com valores divergentes são rejeitados).
items[].codigoBeneficioFiscalstringnãoCódigo de Benefício Fiscal na UF (ex: "SP070130", "PR800000"). Exigido para UFs/CSTs com benefício fiscal (ex: CST 41 em SP). Aceita também alias SEFAZ items[].cBenef.
items[].ceststringnãoCEST — Código Especificador da Substituição Tributária (7 dígitos, ex: "0300700"; aceita máscara "03.007.00", sanitizada automaticamente). Opcional no contrato da API — a validação local é apenas de formato. A SEFAZ o exige em operações com ICMS-ST / Substituição Tributária conforme a regra fiscal aplicável (ex: CFOP 5405, CST 10/30/60/70/90, CSOSN 201/202/203/500/900 — em CST/CSOSN 90, quando vICMSST for diferente de zero); a ausência nesses casos causa Rejeição 806. Aceita também alias items[].CEST.
items[].valorFretenumbernãoValor do frete específico deste item em reais (alias: items[].vFrete ou items[].frete)
items[].valorSeguronumbernãoValor do seguro específico deste item em reais (alias: items[].vSeg ou items[].seguro)
items[].descontonumbernãoDesconto do item em reais (alias: items[].vDesc)
items[].outrasDespesasnumbernãoOutras despesas acessórias do item em reais (alias: items[].vOutro)
items[].cstPisstringnãoCST do PIS (2 dígitos). Valores aceitos: "01", "02" (PISAliq), "04", "05", "06", "07", "08", "09" (PISNT), "49", "99" (PISOutr). Se omitido: assume "01" para CRT 3 (Regime Normal) e "07" para CRT 1/2/4 (Simples Nacional / MEI). Aliases aceitos: items[].cst_pis, items[].cstPIS.
items[].cstCofinsstringnãoCST da COFINS (2 dígitos). Valores aceitos: "01", "02" (COFINSAliq), "04", "05", "06", "07", "08", "09" (COFINSNT), "49", "99" (COFINSOutr). Se omitido: assume "01" para CRT 3 (Regime Normal) e "07" para CRT 1/2/4 (Simples Nacional / MEI). Aliases aceitos: items[].cst_cofins, items[].cstCOFINS.
items[].aliquotaPisnumbernãoAlíquota PIS do item (%)
items[].aliquotaCofinsnumbernãoAlíquota COFINS do item (%)
items[].ibscbsobjectnãoGrupo IBS/CBS da NT 2025.002-RTC. Quando informado, a API calcula base e valores dos tributos; não envie valores monetários calculados.
items[].ibscbs.cststringsimCST IBS/CBS com 3 dígitos. Alias: cstIbsCbs.
items[].ibscbs.cClassTribstringsimClassificação tributária oficial com 6 dígitos, compatível com o CST e com o modelo. Não possui valor padrão. Alias: classificacaoTributaria.
items[].ibscbs.aliquotaIbsEstadualnumbernãoAlíquota nominal do IBS estadual (%). Obrigatória para classificações tributadas. Alias: pIBSUF.
items[].ibscbs.aliquotaIbsMunicipalnumbernãoAlíquota nominal do IBS municipal (%). Obrigatória para classificações tributadas. Alias: pIBSMun.
items[].ibscbs.aliquotaCbsnumbernãoAlíquota nominal da CBS (%). Obrigatória para classificações tributadas. Alias: pCBS.
items[].ibscbs.diferimentoIbsEstadualnumbernãoPercentual de diferimento do IBS estadual, quando exigido pela classificação. Alias: pDifIBSUF.
items[].ibscbs.diferimentoIbsMunicipalnumbernãoPercentual de diferimento do IBS municipal, quando exigido pela classificação. Alias: pDifIBSMun.
items[].ibscbs.diferimentoCbsnumbernãoPercentual de diferimento da CBS, quando exigido pela classificação. Alias: pDifCBS.
items[].baseCalculoIcms (ou vBC)numbernãoBase de cálculo explícita do ICMS do item. Opcional; para CSOSN 900, quando ausente, a plataforma calcula automaticamente como (valorTotal - desconto). Para outros CSTs, segue a base própria de cada grupo.
items[].devolucaoTributos (ou impostoDevol)objectnãoGrupo Imposto Devolvido (Grupo UA — MOC 7.0, tags UA01 a UA04). Exclusivo de NF-e de devolução (finalidade: 4, modelo 55). Proibido em NFC-e (rejeição 390) e em notas com outra finalidade (rejeição 354). Aliases aceitos: items[].impostoDevol, items[].impostoDevolvido.
items[].devolucaoTributos.percentualDevolvidonumbersimPercentual da mercadoria devolvida — 0 a 100.00. Deve ser informado junto com valorIpiDevolvido. Alias: pDevol.
items[].devolucaoTributos.valorIpiDevolvidonumbersimValor do IPI devolvido ao fornecedor, em reais (>= 0). Somado automaticamente ao total da nota (vNF), conforme a Regra W16-10 da SEFAZ. Aliases: vIPIDevol, ipiDevolvido.
items[].nfeReferenciadaobjectnãoDocumento fiscal original referenciado neste item. Alias de conveniência: a chave informada aqui é promovida ao grupo NFref do cabeçalho <ide> (única forma de referenciamento suportada pelo leiaute NF-e 4.00 — não há grupo de referência por item). Em devoluções (finalidade: 4) é obrigatório informar a chave da NF-e original — neste campo, ou em refNFe/nfesReferenciadas na raiz — exceto quando todos os itens têm CFOP 1201, 1202, 1410, 1411, 5921 ou 6921. Aliases aceitos: items[].dfeReferenciado, items[].refNFe e items[].chaveReferenciada.
items[].nfeReferenciada.chaveAcessostringsimChave de acesso de 44 dígitos da NF-e original que deu origem à mercadoria devolvida.
items[].nfeReferenciada.nItemnumbernãoNúmero do item na NF-e original. Aceito por compatibilidade retroativa, mas deliberadamente ignorado: o leiaute NF-e 4.00 não suporta correlação item↔documento (a NT 2025.002, que a definiria, foi prorrogada pela SEFAZ para 05/10/2026). O valor nunca é serializado no XML.
items[].combustivelobjectnãoGrupo de combustíveis ANP (Grupo LA — MOC 7.0). Obrigatório em itens com CFOP de combustível (ex: 5656, 5661, 6656, 6661). A ausência gera cStat 660. Na NFC-e (modelo 65) a regra LA01-20 é facultativa no MOC (a critério da UF), mas a plataforma a aplica sempre como política restritiva. Aceita alias: items[].comb.
items[].combustivel.codigoAnpstringsimCódigo ANP do produto — exatamente 9 dígitos sem pontuação. Ex: "210203001" (GLP), "320102001" (Gasolina C Comum), "820101033" (Diesel B S10 Aditivado). Valores com pontos (ex: "320.102.001") ou espaços nas extremidades são rejeitados. Alias: cProdANP.
items[].combustivel.descricaoAnpstringsimDescrição oficial do produto na tabela ANP (2 a 95 caracteres). Ex: "GLP", "GASOLINA C COMUM". Alias: descANP.
items[].combustivel.ufConsumostringsimSigla da UF de consumo do combustível — obrigatório. Ex: "PR", "SP". Alias: UFCons.
items[].combustivel.percentualGlpnumbernãoPercentual de GLP derivado de petróleo (0 a 100). Obrigatório somente para cProdANP = "210203001". A soma de percentualGlp + percentualGnn + percentualGni deve ser 100. Alias: pGLP.
items[].combustivel.percentualGnnnumbernãoPercentual de gás natural nacional — GNn (0 a 100). Alias: pGNn.
items[].combustivel.percentualGninumbernãoPercentual de gás natural importado — GNi (0 a 100). Alias: pGNi.
items[].combustivel.valorPartidanumbernãoValor de partida por kg (GLP). Opcional — a regra LA03d-10 (cStat 856) foi revogada na NT 2023.001 v1.20. Alias: vPart.
items[].combustivel.percentualBiodieselnumbernãoPercentual de biodiesel misturado (> 0 e <= 100 quando informado). A API confronta o codigoAnp com a Tabela de Combustíveis Monofásicos (IT 2023.003): proibido quando a coluna pBio=0 ou o produto está fora da tabela (cStat 907); obrigatório quando pBio=1 (cStat 908, apenas NF-e mod.55, exceto consumidor final, devolução/complementar e CFOP 5922/6922). Alias: pBio.
items[].combustivel.codifstringnãoCódigo de Autorização e Registro — CODIF (máx. 21 dígitos). Alias: CODIF.
items[].combustivel.quantidadeTemperaturanumbernãoQuantidade à temperatura ambiente. Alias: qTemp.
items[].combustivel.cideobjectnãoGrupo CIDE — Contribuição de Intervenção no Domínio Econômico (LA11a). Opcional; quando informado, todos os campos são obrigatórios.
items[].combustivel.cide.qBCProdnumbersimQuantidade de base de cálculo (litros). Alias: quantidadeBase.
items[].combustivel.cide.vAliqProdnumbersimAlíquota da CIDE por unidade (R$ por litro). Alias: aliquota.
items[].combustivel.cide.vCIDEnumbersimValor da CIDE calculado. Alias: valorCide.
items[].combustivel.encerranteobjectnãoDados do encerrante da bomba de combustível (uso em postos).
items[].combustivel.encerrante.numeroBiconumbersimNúmero do bico da bomba (1-999). Alias: nBico.
items[].combustivel.encerrante.numeroBombanumbernãoNúmero da bomba (1-999, opcional). Alias: nBomba.
items[].combustivel.encerrante.numeroTanquenumbersimNúmero do tanque (1-999). Alias: nTanque.
items[].combustivel.encerrante.valorInicialnumbersimLeitura do encerrante no início do abastecimento. Alias: vEncIni.
items[].combustivel.encerrante.valorFinalnumbersimLeitura do encerrante no final do abastecimento (deve ser > valorInicial — cStat 380). Alias: vEncFin.
items[].combustivel.origemCombustivelarraynãoGrupo de origem do combustível (LA18 — NT 2023.001 v1.60, máx. 30 entradas). Obrigatório em NF-e mod.55 quando a Tabela de Combustíveis Monofásicos indica origComb=1 para o codigoAnp (cStat 909) ou quando percentualGnn/percentualGni > 0 (LA18-20); dispensado para consumidor final (indFinal=1), NFC-e, devolução (finalidade=4), complementar (finalidade=2) e CFOP 5922/6922. Proibido para produtos fora da tabela (cStat 747). Somatório de pOrig = 100 (±0.1%): por indImport para GLP (210203001/03/04/05), total geral para demais (cStat 958). Alias: origComb.
items[].combustivel.origemCombustivel[].indImportnumbersim0 = Nacional, 1 = Importado.
items[].combustivel.origemCombustivel[].cUFOrignumbersimCódigo IBGE da UF de origem (ex: 41 = PR, 35 = SP). Alias: ufOrigem.
items[].combustivel.origemCombustivel[].pOrignumbersimPercentual originário desta UF (> 0 e <= 100). Alias: percentualOrigem.
items[].veiculoNovoobjectnãoGrupo Detalhamento de Veículos Novos (Grupo JA — MOC 7.0). Exclusivo de NF-e (modelo 55); proibido em NFC-e (modelo 65, Regra J01-10 / Rejeição 736). Mutuamente exclusivo com o grupo combustivel no mesmo item. Todos os 24 subcampos são obrigatórios quando o grupo é informado. Aliases: items[].veicProd, items[].dadosVeiculo.
items[].veiculoNovo.tipoOperacaonumbersimTipo da operação: 1=Venda concessionária, 2=Faturamento direto para consumidor final, 3=Venda direta para grandes consumidores (frotista/governo), 0=Outros. Alias: tpOp.
items[].veiculoNovo.chassistringsimChassi do veículo (VIN) — exatamente 17 caracteres alfanuméricos maiúsculos, sem espaços. Alias: chassiVeiculo.
items[].veiculoNovo.codigoCorstringsimCódigo da cor conforme tabela do fabricante (1-4 caracteres). Alias: cCor.
items[].veiculoNovo.descricaoCorstringsimDescrição da cor (1-40 caracteres). Aliases: xCor, corVeiculo.
items[].veiculoNovo.potenciastringsimPotência do motor em CV (1-4 caracteres). Alias: pot.
items[].veiculoNovo.cilindradastringsimCapacidade volumétrica (cilindradas) do motor em cm³ (1-4 caracteres). Alias: cilin.
items[].veiculoNovo.pesoLiquidonumbersimPeso líquido em toneladas. Entre 0.0001 e 9999.9999 (limites inclusivos), em notação decimal padrão com no máximo 4 casas decimais (máx. 9 caracteres no XML — limite do XSD oficial, TString maxLength="9"). Não aceita notação científica (ex: "1e-5"), sinal explícito (ex: "+1") ou vírgula como separador decimal (ex: "1,5") — apenas dígitos e, opcionalmente, um ponto seguido de 1 a 4 dígitos. Valores fora do formato ou da faixa são rejeitados (HTTP 400), nunca arredondados ou truncados silenciosamente. Alias: pesoL.
items[].veiculoNovo.pesoBrutonumbersimPeso bruto em toneladas. Entre 0.0001 e 9999.9999 (limites inclusivos), em notação decimal padrão com no máximo 4 casas decimais (máx. 9 caracteres no XML — limite do XSD oficial, TString maxLength="9"). Não aceita notação científica (ex: "1e-5"), sinal explícito (ex: "+1") ou vírgula como separador decimal (ex: "1,5") — apenas dígitos e, opcionalmente, um ponto seguido de 1 a 4 dígitos. Valores fora do formato ou da faixa são rejeitados (HTTP 400), nunca arredondados ou truncados silenciosamente. Alias: pesoB.
items[].veiculoNovo.numeroSeriestringsimSerial / número de série do veículo (1-9 caracteres). Alias: nSerie.
items[].veiculoNovo.tipoCombustivelVeiculostringsimTipo de combustível conforme tabela RENAVAM (1-2 caracteres, ex: "01"=Álcool, "02"=Gasolina, "03"=Diesel, "16"=Álcool/Gasolina). Distinto do grupo combustivel/ANP. Aliases: tpComb, tipoCombustivelRenavam.
items[].veiculoNovo.numeroMotorstringsimNúmero do motor (1-21 caracteres). Alias: nMotor.
items[].veiculoNovo.capacidadeMaximaTracaonumbersimCapacidade Máxima de Tração (CMT) em toneladas. Entre 0.0001 e 9999.9999 (limites inclusivos), em notação decimal padrão com no máximo 4 casas decimais (máx. 9 caracteres no XML — limite do XSD oficial, TString maxLength="9"). Não aceita notação científica (ex: "1e-5"), sinal explícito (ex: "+1") ou vírgula como separador decimal (ex: "1,5") — apenas dígitos e, opcionalmente, um ponto seguido de 1 a 4 dígitos. Valores fora do formato ou da faixa são rejeitados (HTTP 400), nunca arredondados ou truncados silenciosamente. Aliases: CMT, cmt.
items[].veiculoNovo.distanciaEixosstringsimDistância entre eixos em metros (1-4 caracteres). Alias: dist.
items[].veiculoNovo.anoModelostringsimAno modelo de fabricação — exatamente 4 dígitos numéricos, entre 1900 e 2099. Alias: anoMod.
items[].veiculoNovo.anoFabricacaostringsimAno de fabricação — exatamente 4 dígitos numéricos, entre 1900 e 2099. Alias: anoFab.
items[].veiculoNovo.tipoPinturastringsimTipo de pintura do veículo (1 caractere, ex: "S"=Sólida, "M"=Metálica, "P"=Perolizada). Alias: tpPint.
items[].veiculoNovo.tipoVeiculostringsimTipo de veículo conforme tabela RENAVAM (1-2 dígitos numéricos, ex: "06"=Automóvel, "14"=Caminhão). Alias: tpVeic.
items[].veiculoNovo.especieVeiculostringsimEspécie de veículo conforme tabela RENAVAM (1 dígito numérico, entre 1 e 6: 1=Passageiro, 2=Carga, 3=Misto, 4=Corrida, 5=Tração, 6=Especial). Alias: espVeic.
items[].veiculoNovo.situacaoChassistringsimCondição do VIN: "N"=Normal, "R"=Remarcado. Aliases: VIN, chassiRemarcado.
items[].veiculoNovo.condicaoVeiculonumbersimCondição do veículo: 1=Acabado, 2=Inacabado, 3=Semiacabado. Alias: condVeic.
items[].veiculoNovo.codigoMarcaModelostringsimCódigo Marca Modelo conforme tabela RENAVAM (1-6 dígitos numéricos). Aliases: cMod, codigoModeloRenavam.
items[].veiculoNovo.codigoCorDenatranstringsimCódigo da cor conforme tabela DENATRAN (1-2 dígitos numéricos, entre 1 e 16). Alias: cCorDENATRAN.
items[].veiculoNovo.lotacaostringsimCapacidade máxima de lotação/passageiros (1-3 dígitos numéricos, entre 1 e 999). Alias: lota.
items[].veiculoNovo.tipoRestricaonumbersimRestrição do veículo: 0=Não há, 1=Alienação Fiduciária, 2=Arrendamento Mercantil, 3=Reserva de Domínio, 4=Penhor de Veículos, 9=Outras. Alias: tpRest.
pagamentos[]arraysimFormas de pagamento (mínimo 1)
pagamentos[].tipoPagamentostringsimCódigo SEFAZ: 01=Dinheiro, 03=Cartão de Crédito, 04=Cartão de Débito, 17=PIX, 99=Outros (alias: tPag)
pagamentos[].valornumbersimValor pago nesta forma em reais (alias: vPag)
pagamentos[].descricaoPagamentostringnãoDescrição do meio de pagamento. Obrigatório quando tipoPagamento for "99" (Outros). Aceita também aliases: pagamentos[].descricao, pagamentos[].xPag.
pagamentos[].tipoIntegracaonumbernão1=Integrado (TEF), 2=Não integrado (POS)
pagamentos[].bandeirastringnãoBandeira do cartão (2 dígitos)
pagamentos[].autorizacaostringnãoCódigo de autorização da transação
pagamentos[].cnpjPagamentostringnãoCNPJ da credenciadora de pagamento
valorFretenumbernãoValor total do frete da nota em reais. Se informado na raiz da nota, é distribuído proporcionalmente entre os itens. Alias amigável para frete.
valorSeguronumbernãoValor total do seguro da nota em reais. Se informado na raiz da nota, é distribuído proporcionalmente entre os itens. Alias amigável para seguro.
transporte.modalidadeFretenumbernãoModalidade do frete: 0=Emitente, 1=Destinatário, 2=Terceiros, 9=Sem frete (padrão: 9, alias: modFrete)
presencaCompradornumbernãoIndicador de presença do comprador (padrão: 1)
indicadorIntermediadornumbernão0=Sem intermediador, 1=Via marketplace. Obrigatório quando presencaComprador for 2, 3, 4 ou 9.
tipoOperacaonumbernão0=Entrada, 1=Saída (padrão: 1)
finalidadenumbernão1=Normal, 2=Complementar, 3=Ajuste, 4=Devolução (padrão: 1)
consumidorFinalnumbernão0=Normal, 1=Consumidor final
tipoEmissaonumbernão1=Normal, 3=Contingência SVC-AN, 5=Contingência SVC-RS (padrão: 1)
destinoOperacao (ou idDest)numbernão1=Operação interna (mesma UF), 2=Interestadual, 3=Exterior. Auto-inferido a partir de dest.endereco.uf ("EX" → 3), cPais (≠ 1058 → 3) ou dest.idEstrangeiro.
exportacaoobjectnãoGrupo ZA da SEFAZ. Obrigatório em saídas para o exterior (idDest: 3 e tipoOperacao: 1 / CFOP 7xxx).
exportacao.ufSaidaPaisstringsimSigla da UF onde a mercadoria sairá do território nacional (ex: "SP", "AM"). Deve ser uma UF brasileira válida, nunca "EX".
exportacao.localEmbarquestringsimNome do porto, aeroporto ou ponto de fronteira onde ocorrerá o embarque (1 a 60 caracteres, ex: "Porto de Santos").
exportacao.localDespachostringnãoLocal onde ocorreu o despacho aduaneiro (1 a 60 caracteres, opcional).
nfesReferenciadas (ou refNFe)string | string[]nãoChave(s) de 44 dígitos das NF-es referenciadas no cabeçalho da nota (grupo NFref do elemento ide). É o mecanismo recomendado para devoluções (finalidade: 4). As três fontes de cabeçalho (refNFe, nfesReferenciadas, nfeReferenciada na raiz) e items[].nfeReferenciada são unidas e deduplicadas — nenhuma chave válida é descartada por outra fonte também estar presente. Máximo de 999 chaves distintas (maxOccurs do schema oficial).
infCplstringnãoInformações complementares da nota (texto livre)

↩️ Notas de Devolução (finalidade: 4), Referenciamento & Imposto Devolvido

Em notas de devolução de mercadoria (finalidade: 4), a NF-e original deve ser referenciada no cabeçalho da nota — via refNFe/nfesReferenciadas na raiz ou items[].nfeReferenciada (todas alimentam o mesmo grupo <NFref> do elemento <ide>), evitando a rejeição 321. Caso haja devolução de tributos (ex: IPI para fornecedor por não-contribuinte ou Simples Nacional), utilize o grupo devolucaoTributos (ou impostoDevol).

Exemplo completo de payload para Devolução (modelo 55):

{
  "modelo": 55,
  "finalidade": 4,
  "naturezaOperacao": "Devolução de Mercadoria",
  "tipoOperacao": 1,
  "refNFe": "35260736848840000156550090000000111223152566",
  "destinatario": {
    "cpfCnpj": "12345678000195",
    "razaoSocial": "Fornecedor Exemplo S.A.",
    "inscricaoEstadual": "123456789",
    "indicadorIe": 1,
    "endereco": {
      "logradouro": "Av. Industrial",
      "numero": "500",
      "bairro": "Distrito Industrial",
      "codigoMunicipio": "3550308",
      "municipio": "São Paulo",
      "uf": "SP",
      "cep": "01001000"
    }
  },
  "items": [
    {
      "codigo": "PRD001",
      "descricao": "Produto em Devolução",
      "ncm": "84713012",
      "cfop": "5202",
      "unidade": "UN",
      "quantidade": 1,
      "valorUnitario": 100.00,
      "valorTotal": 100.00,
      "csosn": "900",
      "aliquotaIcms": 18,
      "devolucaoTributos": {
        "percentualDevolvido": 100.00,
        "valorIpiDevolvido": 12.50
      }
    }
  ],
  "pagamentos": [
    { "tipoPagamento": "90", "valor": 0 }
  ]
}

Soma de IPI Devolvido (vIPIDevol): O valor informado em valorIpiDevolvido é automaticamente destacado em <ICMSTot><vIPIDevol> e somado ao total da nota (vNF), atendendo à Regra W16-10 da SEFAZ.

Destaque em Simples Nacional / MEI (CSOSN 900): A base de cálculo e o ICMS informados no item são totalizados em <ICMSTot><vBC> e <vICMS>, eliminando a rejeição cStat 531.

Referenciamento no Cabeçalho (NFref): A chave de 44 dígitos da NF-e original vai no grupo <NFref> do elemento <ide> — informe refNFe na raiz (recomendado) ou items[].nfeReferenciada (alias compatível; o campo nItem é aceito, mas ignorado, pois o leiaute NF-e 4.00 não amarra referência por item).

🌍 Exportação e Venda para Destinatário no Exterior (idDest: 3)

Para emissão de NF-e (modelo 55) com destino internacional (ex: exportação direta com CFOP 7102), a API Notaas simplifica e valida automaticamente as exigências estruturais da SEFAZ MOC 7.0:

  • Identificação do Destinatário: utilize dest.idEstrangeiro (passaporte ou ID fiscal no exterior, de 1 a 20 caracteres alfanuméricos). Não informe CPF nem CNPJ.
  • Inscrição Estadual e Indicador: dest.indicadorIE deve ser 9 (Não Contribuinte). Não informe dest.ie (qualquer IE é rejeitado pela SEFAZ, Rejeição 925).
  • Endereço Internacional: informe uf: "EX". A API preenche automaticamente codigoMunicipio: 9999999 e cidade: "EXTERIOR". O CEP torna-se opcional sem exigência de máscara brasileira.
  • País amigável: informe o código BACEN do país via codigoPais (ex: 2496 para EUA, 1600 para Reino Unido) ou envie o objeto amigável pais: { "codigo": 2496, "nome": "ESTADOS UNIDOS" }.
  • Grupo de Exportação (exportacao): obrigatório para saídas internacionais (tpNF: 1 / CFOPs 7xxx). Exige ufSaidaPais (UF brasileira de fronteira/porto, ex: "SP" ou "AM" — nunca "EX") e localEmbarque. O campo localDespacho é opcional.
  • Modelo Exclusivo: a emissão com exterior é suportada apenas em NF-e modelo 55 (NFC-e modelo 65 rejeita exterior com cStat 707).

Exemplo completo de payload para Venda/Exportação ao Exterior (modelo 55):

{
  "modelo": 55,
  "naturezaOperacao": "EXPORTACAO DIRETA",
  "tipoOperacao": 1,
  "destinoOperacao": 3,
  "dest": {
    "idEstrangeiro": "US987654321",
    "nome": "GLOBAL TRADE SOLUTIONS INC",
    "indicadorIE": 9,
    "email": "[email protected]",
    "endereco": {
      "logradouro": "5th Avenue",
      "numero": "742",
      "complemento": "Suite 100",
      "bairro": "Manhattan",
      "uf": "EX",
      "pais": {
        "codigo": 2496,
        "nome": "ESTADOS UNIDOS"
      }
    }
  },
  "items": [
    {
      "codigo": "EXP-001",
      "descricao": "Castanha do Brasil beneficiada a granel",
      "ncm": "08012100",
      "cfop": "7102",
      "unidade": "KG",
      "quantidade": 1000,
      "valorUnitario": 45.00,
      "valorTotal": 45000.00,
      "cst": "41"
    }
  ],
  "exportacao": {
    "ufSaidaPais": "SP",
    "localEmbarque": "Porto de Santos",
    "localDespacho": "Alfândega do Porto de Santos"
  },
  "pagamentos": [
    { "tipoPagamento": "01", "valor": 45000.00 }
  ]
}

🧭 DIFAL Interestadual — Alíquotas Setoriais por Item

Em operações interestaduais para consumidor final não contribuinte (idDest=2, indFinal=1, indIEDest=9), a API gera automaticamente o grupo <ICMSUFDest> (DIFAL) em cada item — a ausência desse grupo causa a rejeição 694. Por padrão, a API usa a alíquota modal da UF de destino e o FCP padrão. Quando o produto tem alíquota setorial diferente da modal (ex: cosméticos, autopeças, eletrônicos), informe os overrides diretamente no item:

  • aliquotaIcmsUfDest — alíquota interna setorial da UF de destino (%);
  • percentualFcpUfDest — percentual de FCP da UF de destino (%);
  • aliquotaInterestadual — alíquota interestadual (%), quando diferente da regra automática (ex: 4% para importados).

Exemplo — cosméticos (NCM 3305) de SP para consumidor final na BA (alíquota setorial 25% + 2% FCP):

{
  "modelo": 55,
  "naturezaOperacao": "Venda de mercadoria",
  "dest": {
    "cpf": "12345678909",
    "nome": "Consumidor Final BA",
    "endereco": {
      "logradouro": "Av. Oceânica",
      "numero": "100",
      "bairro": "Barra",
      "codigoMunicipio": 2927408,
      "cidade": "Salvador",
      "uf": "BA",
      "cep": "40140000"
    }
  },
  "items": [
    {
      "codigo": "COSM-001",
      "descricao": "Shampoo hidratante 300ml",
      "ncm": "33051000",
      "cfop": "6102",
      "unidade": "UN",
      "quantidade": 2,
      "valorUnitario": 45.90,
      "valorTotal": 91.80,
      "csosn": "102",
      "aliquotaIcmsUfDest": 25,
      "percentualFcpUfDest": 2
    }
  ],
  "pagamentos": [
    { "tipoPagamento": "17", "valor": 91.80 }
  ]
}

Overrides independentes: informe apenas o campo que difere do padrão — os demais continuam sendo calculados pela tabela da UF.

Base dupla (CRT=3): no Regime Normal, a base do DIFAL (vBCUFDest) é calculada "por dentro" usando a alíquota informada no override.

Validação fail-fast: valores fora de faixa (negativos, >= 100) ou não numéricos são rejeitados com HTTP 400 antes do envio à SEFAZ.

Exceção 10 da regra NA01-20 — itens SEM incidência de ICMS não carregam o grupo:

NÃO geram <ICMSUFDest> (quando informados explicitamente no item): CST 40 (isenta), 41 (não tributada), 50 (suspensão) — e CSOSN 103 (isenção SN), 300 (imune), 400 (não tributada pelo SN). Nesses itens não há ICMS a partilhar e o grupo é suprimido automaticamente; os totais vICMSUFDest/vFCPUFDest do ICMSTot refletem apenas os itens tributados.

Geram normalmente: CST 00, 10, 20, 51, 60, 70, 90 e CSOSN 101, 102, 201, 500, 900.

CST/CSOSN omitido ou vazio usa o padrão do regime ("00" / "400" / MEI "102") e mantém o grupo — a supressão exige o código de desoneração explícito no item.

Override por item: gerarDifal: false suprime o grupo em item tributado (ex: CST 60 / CSOSN 500, a critério do emitente — risco de rejeição 694). gerarDifal: true em item desonerado é rejeitado com HTTP 400: a Exceção 10 não é facultativa.

📦 PIS e COFINS — Classificação Tributária (CST 49, 04-09, 01/02)

Por padrão, em emitentes de Regime Normal (CRT 3), itens sem CST de PIS/COFINS recebem CST 01 (<PISAliq> / <COFINSAliq>). Para operações desoneradas, monofásicas ou de outras saídas (ex: venda de ativo imobilizado com CFOP 5551/6551), envie os campos cstPis e cstCofins no item:

  • "49" ou "99": Gera o grupo <PISOutr> / <COFINSOutr>. Se aliquotaPis: 0 e aliquotaCofins: 0, a base de cálculo e o valor são emitidos como 0.00.
  • "04" a "09": Gera o grupo <PISNT> / <COFINSNT> (não tributado/isento/suspensão/alíquota zero).
  • "01" ou "02": Gera <PISAliq> / <COFINSAliq> (tributado por alíquota).

Exemplo — Venda de Imobilizado com CST 49 e alíquota zero:

{
  "codigo": "IMOB-01",
  "descricao": "Mesa de Escritorio Usada",
  "ncm": "94031000",
  "cfop": "5551",
  "quantidade": 1,
  "valorTotal": 800.00,
  "cst": "41",
  "cstPis": "49",
  "cstCofins": "49",
  "aliquotaPis": 0,
  "aliquotaCofins": 0
}

🏛️ Funcionamento dos Cálculos Automáticos de IBS/CBS (NT 2025.002-RTC)

Reforma Tributária

O integrador precisa enviar apenas as alíquotas nominais, o CST (3 dígitos) e o código de classificação tributária cClassTrib (6 dígitos). A plataforma Notaas gerencia e calcula automaticamente todo o grupo fiscal e o XML SEFAZ.

1. Base de Cálculo (vBC)

Calculada automaticamente conforme fórmula SEFAZ: vProd + vFrete + vSeg + vOutro - vDesc. Não envie vBC manual no payload.

2. Redução de Alíquota (cClassTrib)

Conforme a tabela oficial v1.60 (LC 214/2025), a API aplica o percentual de redução (100%, 60%, 40% ou tributação integral) diretamente sobre a alíquota nominal.

3. Diferimento (CST 510)

Para NF-e (modelo 55) com CST 510, se informados percentuais de diferimento (diferimentoIbsEstadual, etc.), a API calcula o valor diferido e abate o tributo devido.

4. Totais e Transição (2026 vs 2027+)

Em 2025/2026, os valores de IBS/CBS são destacados no XML (IBSCBSTot), mas não somam no valor total do item (vItem) nem no total da nota. A virada para somar ao total ocorre automaticamente em 2027.

Exemplo de Payload com IBS/CBS:
"ibscbs": {
  "cst": "000",
  "cClassTrib": "000001",
  "aliquotaIbsEstadual": 0.1,
  "aliquotaIbsMunicipal": 0,
  "aliquotaCbs": 0.9
}

🚗 Redução de Base de Cálculo ICMS & Grupo de Veículos Novos (MOC 7.0)

MOC 7.0 / SEFAZ
📉 Redução de Base de Cálculo (percentualReducaoBc)

Aplicável exclusivamente a CST 20 (obrigatório) e CST 70 (opcional). O percentual de redução deve ser maior que 0 e menor que 100. A base oficial é calculada automaticamente: (vProd - vDesc + vFrete + vSeg + vOutro) × (1 - pRedBC / 100). Se baseCalculoIcms explícito for informado, deve ser compatível com o valor oficial dentro de R$ 0,02 de tolerância.

🚘 Veículos Novos (veiculoNovo / veicProd)

Exclusivo para NF-e modelo 55 (Grupo JA do MOC 7.0). Em NFC-e (modelo 65), o grupo é terminantemente proibido pela Regra J01-10 (Rejeição SEFAZ 736). Mutuamente exclusivo com o grupo combustivel no mesmo item. Todos os 24 campos são obrigatórios quando o grupo é informado. Campos numéricos (pesoLiquido, pesoBruto, capacidadeMaximaTracao) exigem formato decimal estrito entre 0.0001 e 9999.9999 (máx. 4 casas decimais).

Exemplo de item com Veículo Novo e CST 20 (Redução de BC):
{
  "codigo": "VEIC-001",
  "descricao": "Automovel Sedan 1.0 Flex",
  "ncm": "87032210",
  "cfop": "5102",
  "unidade": "UN",
  "quantidade": 1,
  "valorUnitario": 95000.00,
  "valorTotal": 95000.00,
  "cst": "20",
  "percentualReducaoBc": 33.33,
  "aliquotaIcms": 12,
  "veiculoNovo": {
    "tipoOperacao": 1,
    "chassi": "9BWZZZ377VT004251",
    "codigoCor": "PR01",
    "descricaoCor": "Preto Ninja",
    "potencia": "116",
    "cilindrada": "999",
    "pesoLiquido": 1.1500,
    "pesoBruto": 1.5800,
    "numeroSerie": "SER123456",
    "tipoCombustivelVeiculo": "16",
    "numeroMotor": "MOT987654321",
    "capacidadeMaximaTracao": 2.1000,
    "distanciaEixos": "2560",
    "anoModelo": "2026",
    "anoFabricacao": "2026",
    "tipoPintura": "1",
    "tipoVeiculo": "06",
    "especieVeiculo": "1",
    "situacaoChassi": "N",
    "condicaoVeiculo": 1,
    "codigoMarcaModelo": "123456",
    "codigoCorDenatran": "01",
    "lotacao": "5",
    "tipoRestricao": 0
  }
}

Valores de presencaComprador

ValorSignificadoNF-eNFC-eExige indicadorIntermediador?
0Não se aplica (complementar/ajuste)
1Operação presencial (padrão)
2Não presencial, internet✅ Sim
3Não presencial, teleatendimento✅ Sim
4Entrega em domicílio (delivery)— (NFC-e)
5Presencial, fora do estabelecimento
9Não presencial, outros✅ Sim

🏪 Quando usar indicadorIntermediador

Para operações não-presenciais (presencaComprador: 2, 3 ou 9), a SEFAZ exige que você informe se a venda foi realizada diretamente ou via marketplace. Se omitido, a API assume 0 automaticamente (sem intermediador).

CenáriopresencaCompradorindicadorIntermediador
Venda por WhatsApp, e-mail ou telefone direto90
E-commerce no site próprio da empresa20
Teleatendimento / call center da empresa30
Venda pelo Mercado Livre, Shopee ou Amazon91
Pedido pelo iFood ou Rappi91
Venda presencial (balcão, loja física)1omitir

⚠️ Omitir indicadorIntermediador em operações não-presenciais causa rejeição cStat 434 pela SEFAZ.

Tipos de Pagamento (tipoPagamento)

CódigoTipoGrupo card
01Dinheiro
02Cheque
03Cartão de Crédito✅ Auto
04Cartão de Débito✅ Auto
05Crédito Loja
10Vale Alimentação✅ Auto
11Vale Refeição✅ Auto
15Boleto Bancário✅ Auto
17PIX✅ Auto
18Transferência✅ Auto
90Sem Pagamento
99Outros

✅ Auto = sistema gera automaticamente o grupo card com tipoIntegracao=2 (não integrado) quando omitido.

Bandeiras de Cartão (bandeira)

CódigoBandeira
01Visa
02Mastercard
03American Express
04Sorocred
05Diners Club
06Elo
07Hipercard
08Aura
09Cabal
99Outros

Transporte (opcional)

CampoTipoReq?Descrição
transporte.modalidadeFretenumbernão0=CIF (remetente), 1=FOB (destinatário), 2=Terceiros, 3=Próprio remetente, 4=Próprio destinatário, 9=Sem frete (padrão: 9)
transporte.transportadora.cnpjstringnãoCNPJ do transportador (14 dígitos)
transporte.transportadora.cpfstringnãoCPF do transportador (11 dígitos). Alternativo ao CNPJ.
transporte.transportadora.nomestringnãoNome ou razão social do transportador
transporte.transportadora.iestringnãoInscrição Estadual do transportador ou "ISENTO"
transporte.transportadora.enderecostringnãoEndereço completo do transportador
transporte.transportadora.cidadestringnãoMunicípio do transportador
transporte.transportadora.ufstringnãoUF do transportador (2 letras)
transporte.veiculo.placastringnãoPlaca do veículo (formato Mercosul ou antigo)
transporte.veiculo.ufstringnãoUF de registro do veículo
transporte.veiculo.rntcstringnãoRegistro Nacional de Transportadores Rodoviários de Carga (ANTT)
transporte.volumes[].quantidadenumbernãoQuantidade de volumes transportados
transporte.volumes[].especiestringnãoEspécie do volume (ex: "CAIXA", "FARDO")
transporte.volumes[].marcastringnãoMarca dos volumes
transporte.volumes[].numeracaostringnãoNumeração dos volumes
transporte.volumes[].pesoLiquidonumbernãoPeso líquido em kg (3 casas decimais)
transporte.volumes[].pesoBrutonumbernãoPeso bruto em kg (3 casas decimais)

Cobrança (opcional — apenas NF-e mod. 55)

CampoTipoReq?Descrição
cobranca.fatura.numerostringnãoNúmero da fatura
cobranca.fatura.valorOriginalnumbernãoValor original da fatura em reais
cobranca.fatura.descontonumbernãoDesconto da fatura em reais
cobranca.fatura.valorLiquidonumbernãoValor líquido da fatura em reais
cobranca.parcelas[].numerostringnãoNúmero da parcela (ex: "001")
cobranca.parcelas[].vencimentostringnãoData de vencimento (formato AAAA-MM-DD)
cobranca.parcelas[].valornumbersimValor da parcela em reais

Exemplos de Payload — Combustíveis (Grupo LA)

MOC 7.0

Payloads completos prontos para uso nos cenários mais comuns de emissão com combustíveis. Substitua os dados de dest (CPF/CNPJ, IE, endereço) pelos dados reais do destinatário.

Exemplo 1 — Venda de GLP (Botijão P13, CFOP 5656):
{
  "modelo": 55,
  "naturezaOperacao": "Venda de combustivel",
  "dest": {
    "cpf": "12345678909",
    "nome": "Joao Consumidor",
    "endereco": {
      "logradouro": "Rua das Flores",
      "numero": "100",
      "bairro": "Centro",
      "codigoMunicipio": 4104808,
      "cidade": "Cascavel",
      "uf": "PR",
      "cep": "85800000"
    }
  },
  "items": [{
    "codigo": "GLP-P13",
    "descricao": "Gas Liquefeito de Petroleo P13",
    "ncm": "27111910",
    "cfop": "5656",
    "unidade": "KG",
    "quantidade": 13,
    "valorUnitario": 8.46,
    "valorTotal": 110.00,
    "csosn": "500",
    "combustivel": {
      "codigoAnp": "210203001",
      "descricaoAnp": "GLP",
      "percentualGlp": 100.00,
      "percentualGnn": 0.00,
      "percentualGni": 0.00,
      "ufConsumo": "PR"
    }
  }],
  "pagamentos": [{ "tipoPagamento": "01", "valor": 110.00 }]
}
Exemplo 2 — Venda de Diesel S10 em posto (CFOP 5656, com pBio e encerrante):
{
  "modelo": 55,
  "naturezaOperacao": "Venda de combustivel",
  "dest": {
    "cpf": "12345678909",
    "nome": "Maria Motorista",
    "endereco": {
      "logradouro": "Av Brasil",
      "numero": "500",
      "bairro": "Centro",
      "codigoMunicipio": 4106902,
      "cidade": "Curitiba",
      "uf": "PR",
      "cep": "80010100"
    }
  },
  "items": [{
    "codigo": "DIESEL-S10",
    "descricao": "Diesel S10 Aditivado",
    "ncm": "27101921",
    "cfop": "5656",
    "unidade": "LT",
    "quantidade": 40,
    "valorUnitario": 6.29,
    "valorTotal": 251.60,
    "csosn": "500",
    "combustivel": {
      "codigoAnp": "820101033",
      "descricaoAnp": "OLEO DIESEL B S10 - ADITIVADO",
      "percentualBiodiesel": 14.00,
      "ufConsumo": "PR",
      "origemCombustivel": [
        { "indImport": 0, "cUFOrig": 41, "pOrig": 100.00 }
      ],
      "encerrante": {
        "numeroBico": 3,
        "numeroBomba": 1,
        "numeroTanque": 2,
        "valorInicial": 124560.000,
        "valorFinal": 124600.000
      }
    }
  }],
  "pagamentos": [{ "tipoPagamento": "04", "valor": 251.60 }]
}
Exemplo 3 — Devolução de GLP (CFOP 5661, finalidade 4):
{
  "modelo": 55,
  "naturezaOperacao": "Devolucao de compra de combustivel",
  "finalidade": 4,
  "dest": {
    "cnpj": "12345678000195",
    "nome": "Distribuidora de Gas Ltda",
    "ie": "ISENTO",
    "endereco": {
      "logradouro": "Rod BR-277",
      "numero": "1500",
      "bairro": "Distrito Industrial",
      "codigoMunicipio": 4104808,
      "cidade": "Cascavel",
      "uf": "PR",
      "cep": "85800000"
    }
  },
  "items": [{
    "codigo": "GLP-P13",
    "descricao": "Devolucao - Gas Liquefeito de Petroleo P13",
    "ncm": "27111910",
    "cfop": "5661",
    "unidade": "KG",
    "quantidade": 13,
    "valorUnitario": 8.46,
    "valorTotal": 110.00,
    "csosn": "500",
    "nfeReferenciada": {
      "chaveAcesso": "41260812345678000195550010000001231123456788",
      "nItem": 1
    },
    "combustivel": {
      "codigoAnp": "210203001",
      "descricaoAnp": "GLP",
      "percentualGlp": 100.00,
      "percentualGnn": 0.00,
      "percentualGni": 0.00,
      "ufConsumo": "PR"
    }
  }],
  "pagamentos": [{ "tipoPagamento": "90", "valor": 0.00 }]
}

⚠️ Substitua chaveAcesso pela chave de 44 dígitos da NF-e original autorizada. O valor acima é ilustrativo (DV módulo 11 válido).

Campos Obrigatórios Mínimos

Todo item com CFOP de combustível precisa de pelo menos: codigoAnp (9 dígitos), descricaoAnp e ufConsumo. Para GLP (210203001), adicione os percentuais percentualGlp + percentualGnn + percentualGni = 100.

Validação Automática

A API valida todos os campos antes do enfileiramento: código ANP (9 dígitos), somas de percentuais (GLP=100, origComb=100±0.1%), pBio conforme tabela monofásica (IT 2023.003), e origComb conforme regras LA17/LA18. Erros retornam HTTP 400 com mensagem detalhada.

{
  "modelo": 55,
  "naturezaOperacao": "Remessa para conserto",
  "tipoOperacao": 1,
  "finalidade": 1,
  "nfesReferenciadas": ["35250112345678000195550010000012341123456789"],
  "dest": {
    "cnpj": "98765432000199",
    "nome": "Laboratório Óptico Ltda",
    "ie": "123456789",
    "indicadorIE": 1,
    "endereco": {
      "logradouro": "Rua das Lentes",
      "numero": "200",
      "bairro": "Centro",
      "codigoMunicipio": 3550308,
      "cidade": "São Paulo",
      "uf": "SP",
      "cep": "01010100"
    }
  },
  "items": [
    {
      "descricao": "Lente multifocal para conserto",
      "ncm": "90015000",
      "cfop": "5915",
      "quantidade": 2,
      "valorUnitario": 150.00,
      "valorTotal": 300.00,
      "cst": "50",
      "aliquotaIcms": 0
    }
  ],
  "transporte": {
    "modalidadeFrete": 1
  },
  "pagamentos": [
    { "tipoPagamento": "90", "valor": 0 }
  ],
  "infCpl": "Remessa para conserto. ICMS suspenso conforme art. 327 do RICMS/SP. NF-e de venda original ref. na chave."
}

Cancelamento

POST/nfe/cancelar🔑 x-api-key

Solicita o cancelamento assíncrono de uma NF-e ou NFC-e autorizada. Prazo: 24h para NF-e, variável por UF para NFC-e.

Body (JSON)

CampoTipoReq?Descrição
invoiceIdstringsimID da nota a cancelar
motivostringsimMotivo do cancelamento (mínimo 15, máximo 255 caracteres — exigência SEFAZ)

Respostas

CampoTipoReq?Descrição
202AcceptednãoCancelamento aceito e enfileirado para processamento assíncrono
404Not FoundnãoInvoice não encontrada ou não pertence ao projeto
422UnprocessablenãoStatus ≠ issued, prazo expirado, ou chave de acesso ausente

Carta de Correção (CC-e)

POST/nfe/invoices/{id}/correcao🔑 x-api-key

Envia uma Carta de Correção Eletrônica (CC-e) síncrona para sanar erros em campos específicos de uma NF-e autorizada. Não altera impostos, dados de emitente/destinatário ou data de saída.

URL Parameters

CampoTipoReq?Descrição
idstringsimID da invoice autorizada na Notaas (formato UUID, ex: fbfa230b-9a08-45be-ae65-8c5f73152620). ATENÇÃO: Este é o Invoice ID interno da plataforma, não a chave de acesso de 44 dígitos da SEFAZ.

Body (JSON)

CampoTipoReq?Descrição
correcaostringsimTexto descrevendo as correções de forma detalhada (mínimo 15, máximo 1000 caracteres)

Respostas

CampoTipoReq?Descrição
200OKnãoCarta de Correção registrada e vinculada com sucesso na SEFAZ
404Not FoundnãoNota fiscal não encontrada ou não pertence ao projeto
422UnprocessablenãoTexto inválido, nota com status diferente de issued, ou rejeição da SEFAZ
curl -s -X POST \
  -H "x-api-key: SUA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"correcao": "Alteracao do campo GTIN (cEAN e cEANTrib) dos itens da nota: Item 1 para 7898976161169."}' \
  "https://platform.notaas.com.br/api/v1/nfe/invoices/SUA_INVOICE_ID/correcao"

Status & Polling

GET/nfe/invoices/{id}/status🔑 x-api-key

Retorna o status de uma NF-e/NFC-e. Use para polling após receber 202 do /nfe/emitir.

Resposta — Todos os status

CampoTipoReq?Descrição
invoiceIdstringnãoID da invoice
statusstringnãoqueued | processing | issued | error | cancelled | inutilized
modelonumbernão55 (NF-e) ou 65 (NFC-e)
tpAmbnumbernão1=Produção, 2=Homologação
createdAtstring (ISO 8601)nãoQuando a invoice foi criada
updatedAtstring (ISO 8601)nãoÚltima atualização

Campos adicionais — quando issued ou cancelled

CampoTipoReq?Descrição
numero / nNfnumbernãoNúmero sequencial da nota fiscal (nNf é mantido como alias compatível)
serienumbernãoSérie da nota
chaveAcessostringnãoChave de acesso de 44 dígitos
protocolo / nProtstringnãoNúmero de protocolo da autorização SEFAZ (nProt é mantido como alias)
codigoStatus / cStatnumbernãoCódigo de status SEFAZ da autorização (100=autorizada, cStat é mantido como alias)
motivo / xMotivostringnãoDescrição do status SEFAZ (xMotivo é mantido como alias)
dataRecebimento / dhRecbtostring (ISO 8601)nãoData/hora de autorização na SEFAZ (dhRecbto é mantido como alias)
valorTotal / vNfnumbernãoValor total da nota em reais (vNf é mantido como alias compatível)
valorProdutos / vProdnumbernãoValor total dos produtos em reais (vProd é mantido como alias)
valorTributos / vTribnumbernãoValor estimado de tributos em reais (IBPT / vTotTrib, vTrib é mantido como alias)
naturezaOperacao / natOpstringnãoNatureza da operação (natOp é mantido como alias)
destCpfCnpjstring | nullnãoCPF ou CNPJ do destinatário (null em NFC-e com consumidor não identificado)
destNomestring | nullnãoNome/Razão Social do destinatário (null em NFC-e com consumidor não identificado)
destUfstring | nullnãoUF do destinatário (null se não informado)
qrCodestring | nullnãoExclusivo modelo 65 (NFC-e): URL completa do QR Code com hash CSC para impressão térmica em PDV / leitores óticos. null em modelo 55 ou se ausente no XML.
urlChavestring | nullnãoExclusivo modelo 65 (NFC-e): URL base de consulta pública por chave da SEFAZ estadual. null em modelo 55 ou se ausente no XML.
pdfUrlstring (URL)nãoURL para download do DANFE em PDF. Em modelo 55 gera o DANFE tradicional A4; em modelo 65 gera o cupom fiscal térmico contínuo de 80mm. Requer header x-api-key. Quando cancelada, inclui marca d'água "NOTA CANCELADA".
xmlUrlstring (URL)nãoURL para download do XML de emissão autorizado (nfeProc). Requer header x-api-key.

Campos exclusivos — quando cancelled

CampoTipoReq?Descrição
cancelledAtstring (ISO 8601)nãoData/hora do registro do cancelamento na SEFAZ (dhRegEvento)
cancelProtstringnãoProtocolo de homologação do cancelamento na SEFAZ (cStat 135 ou 136)
cancelMotivostringnãoJustificativa do cancelamento ou mensagem de retorno do evento SEFAZ
cancelXmlUrlstring (URL)nãoURL direta para download do XML do evento de cancelamento (procEventoNFe). Requer header x-api-key.

Campos adicionais — quando error

CampoTipoReq?Descrição
codigoStatus / cStatnumbernãoCódigo de rejeição SEFAZ (ex: 225, 539, 694)
motivo / xMotivostringnãoDescrição da rejeição SEFAZ
numero / nNfnumber | nullnãoNúmero sequencial da nota reservado (se houver)
errorMessagestringnãoMensagem de erro interna para diagnóstico
retryCountnumbernãoNúmero de tentativas realizadas

ℹ️ Nomes amigáveis (friendly) e retrocompatibilidade

Para facilitar a integração e unificar o contrato com o restante da plataforma, o endpoint disponibiliza propriedades em português (ex: numero, protocolo, codigoStatus, valorTotal, valorProdutos, valorTributos) lado a lado com os nomes técnicos legados da SEFAZ (nNf, nProt, cStat, vNf, vProd, etc.).

ℹ️ pdfUrl, xmlUrl, cancelXmlUrl e QR Code NFC-e

Essas URLs apontam para os endpoints /nfe/invoices/{id}/danfe e /nfe/invoices/{id}/xml. Ambas requerem o header x-api-key — diferente da NFS-e, os documentos NF-e/NFC-e são gerados sob demanda e não estão em CDN público. Para NFC-e (modelo 65), pdfUrl gera o cupom fiscal térmico de 80mm e o payload expõe qrCode e urlChave diretamente.

{
  "invoiceId": "uuid-da-nfe",
  "status": "issued",
  "modelo": 55,
  "tpAmb": 1,
  "numero": 42,
  "protocolo": "141260000012345",
  "codigoStatus": 100,
  "motivo": "Autorizado o uso da NF-e",
  "dataRecebimento": "2026-05-11T12:00:02-03:00",
  "valorTotal": 99.80,
  "valorProdutos": 99.80,
  "valorTributos": 0,
  "naturezaOperacao": "Venda de mercadoria",
  "nNf": 42,
  "serie": 1,
  "chaveAcesso": "41260512345678000195550010000000421234567890",
  "nProt": "141260000012345",
  "cStat": 100,
  "xMotivo": "Autorizado o uso da NF-e",
  "dhRecbto": "2026-05-11T12:00:02-03:00",
  "vNf": 99.80,
  "vProd": 99.80,
  "vTrib": 0,
  "destCpfCnpj": "12345678000195",
  "destNome": "Empresa Compradora Ltda",
  "destUf": "PR",
  "natOp": "Venda de mercadoria",
  "pdfUrl": "https://platform.notaas.com.br/api/v1/nfe/invoices/uuid-da-nfe/danfe",
  "xmlUrl": "https://platform.notaas.com.br/api/v1/nfe/invoices/uuid-da-nfe/xml",
  "createdAt": "2026-05-11T12:00:00.000Z",
  "updatedAt": "2026-05-11T12:00:05.000Z"
}

Documentos

Após a emissão (status=issued), os endpoints abaixo permitem baixar o DANFE (PDF) e os XMLs fiscais (emissão e cancelamento). Os campos pdfUrl, xmlUrl e cancelXmlUrl na resposta do GET /status apontam diretamente para esses documentos.

GET/nfe/invoices/{id}/danfe🔑 x-api-key

Gera e retorna o DANFE (Documento Auxiliar da Nota Fiscal Eletrônica) em PDF. O formato varia conforme o modelo: NF-e (mod.55) gera A4, NFC-e (mod.65) gera cupom 80mm com QR Code.

⚠️ O que é o DANFE?

O DANFE é a representação gráfica simplificada da nota fiscal. Não é o documento fiscal (o documento fiscal é o XML). O DANFE serve para acompanhar a mercadoria em trânsito e facilitar a consulta da NF-e no portal da SEFAZ.

🎨 Modelos de DANFE (NF-e mod.55)

Projetos no plano Pro ou superior podem customizar o layout do DANFE A4 via Org API ou Dashboard:

  • Padrão: Layout MOC 7.0 clássico (sem logo).
  • Retrato com Logo: Layout vertical otimizado com logo do emitente no topo.
  • Paisagem com Logo: Layout horizontal com canhoto na lateral esquerda e logo.

Acesse a documentação da Org API para saber como configurar o logo e o modelo.

Comportamento por status

CampoTipoReq?Descrição
issued200 · PDFnãoDANFE normal. NF-e: A4 retrato. NFC-e: cupom térmico 80mm com QR Code.
cancelled200 · PDFnãoDANFE com marca d'água "NOTA CANCELADA" sobreposta.
inutilized200 · PDFnãoDANFE com marca d'água "NÚMERO INUTILIZADO".

Headers da resposta

CampoTipoReq?Descrição
Content-Typeapplication/pdfnãoSempre retorna PDF binário
Content-DispositioninlinenãoFilename no formato danfe-{nNF}-{serie}.pdf (ex: danfe-000000042-001.pdf)
Cache-Controlno-storenãoNão cacheado — o status pode mudar (issued → cancelled) e o watermark deve refletir em tempo real

Erros

CampoTipoReq?Descrição
422UnprocessablenãoNota ainda não emitida (status queued, processing ou error). Faça polling no /status até issued.
404Not FoundnãoNota não encontrada ou não pertence ao projeto (mesma API key)
429Too Many RequestsnãoRate limit excedido. Header Retry-After indica quando tentar novamente.
500Internal ErrornãoFalha na geração do PDF (raro). Tente novamente.
# Download do DANFE (PDF)
# O response é o binário PDF — salve com -o ou redirecione

curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "https://platform.notaas.com.br/api/v1/nfe/invoices/{invoiceId}/danfe" \
  -o danfe.pdf

# Ou use a pdfUrl retornada no GET /status:
curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "$(jq -r '.pdfUrl' status.json)" \
  -o danfe.pdf
GET/nfe/invoices/{id}/xml🔑 x-api-key

Retorna o XML fiscal oficial da NF-e/NFC-e. Suporta o download tanto do XML de autorização de emissão (nfeProc) quanto do XML de distribuição do evento de cancelamento (procEventoNFe).

Query Parameters

CampoTipoReq?Descrição
typestringnãoTipo do XML a baixar: "emission" (padrão) para o nfeProc autorizado, ou "cancel" para o procEventoNFe do cancelamento homologado.

Comportamento

CampoTipoReq?Descrição
type=emission (ou omitido)200 · application/xmlnãoRetorna o XML nfeProc completo (NFe assinada + protNFe de autorização). Filename: nfe-{chaveAcesso}.xml.
type=cancel200 · application/xmlnãoRetorna o XML procEventoNFe (v1.00) completo (evento assinado + retEvento homologado SEFAZ com cStat 135/136). Filename: nfe-cancelamento-{chaveAcesso}.xml.

Erros

CampoTipoReq?Descrição
400Bad RequestnãoParâmetro type inválido (valores permitidos: "emission" ou "cancel")
409ConflictnãoRequisição de type=cancel para uma nota fiscal que não se encontra no estado cancelled
422UnprocessablenãoNota ainda em processamento ou XML de emissão não disponível
404Not FoundnãoNota não encontrada, ou XML de cancelamento não disponível para esta nota
# Download do XML autorizado de emissão (padrão)
curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "https://platform.notaas.com.br/api/v1/nfe/invoices/{invoiceId}/xml" \
  -o nfe.xml

# Ou explicitando type=emission:
curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "https://platform.notaas.com.br/api/v1/nfe/invoices/{invoiceId}/xml?type=emission" \
  -o nfe.xml