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")
destobjectsimDados do destinatário (obrigatório para NF-e mod. 55)
dest.cnpj / dest.cpfstringsimCNPJ (14 dígitos) ou CPF (11 dígitos), apenas números
dest.nomestringsimRazão social / nome completo do destinatário (mínimo 2 caracteres)
dest.iestringnãoInscrição Estadual (se contribuinte; omitir se isento/não-contribuinte)
dest.indicadorIEnumbernão1=Contribuinte, 2=Isento, 9=Não contribuinte. Auto-inferido de dest.ie quando omitido.
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.codigoMunicipionumbersimCódigo IBGE do município (7 dígitos, ex: 4106902)
dest.endereco.cidadestringsimNome do município
dest.endereco.ufstringsimSigla do estado (ex: "PR", "SP")
dest.endereco.cepstringsimCEP (apenas dígitos)
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")
items[].csosnstringnãoCSOSN do ICMS para CRT 1 / Simples Nacional (ex: "102", "500"). Exclusivo com cst.
items[].aliquotaIcmsnumbernãoAlíquota ICMS em % — obrigatório para CST 00, 10, 20 (alias: items[].pICMS)
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[].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[].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[].nfeReferenciadaobjectnãoDocumento fiscal original referenciado neste item. Obrigatório em devoluções (finalidade: 4), exceto para os CFOPs 1201, 1202, 1410, 1411, 5921 e 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.nItemnumbersimNúmero do item na NF-e original (inteiro entre 1 e 999). Consulte o atributo nItem do elemento det no XML original; a plataforma não infere esse valor.
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)
nfesReferenciadas (ou refNFe)string | string[]nãoReferências no nível da nota para operações que permitem NFref. Não use em devoluções (finalidade: 4) nem em conjunto com items[].nfeReferenciada; essa combinação causa rejeição 1010.
infCplstringnãoInformações complementares da nota (texto livre)

🏛️ 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
}

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.

↩️ Notas de Devolução (finalidade: 4) & Referenciamento de NF

Nas notas de devolução de mercadoria, informe o documento fiscal original em cada item para evitar as rejeições 321 e 1102. A regra entra em produção na SEFAZ em 01/09/2026.

Formato obrigatório no item:

"nfeReferenciada": {
  "chaveAcesso": "35260736848840000156550090000000111223152566",
  "nItem": 7
}

// Aliases aceitos no item: nfeReferenciada, dfeReferenciado, refNFe, chaveReferenciada

O nItem identifica o item no XML da NF-e original, não a posição na devolução atual. Em uma devolução parcial, por exemplo, o primeiro item do novo documento pode referenciar o item 7 da nota original.

⚠️ Não envie refNFe, nfesReferenciadas ou nfeReferenciada na raiz de uma devolução. O grupo <NFref> no cabeçalho não pode coexistir com <DFeReferenciado> nos itens.

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
{
  "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
nNfnumbernãoNúmero sequencial da nota
serienumbernãoSérie da nota
chaveAcessostringnãoChave de acesso 44 dígitos
nProtstringnãoNúmero de protocolo SEFAZ
cStatnumbernãoCódigo de status SEFAZ (100=autorizada)
xMotivostringnãoDescrição do status SEFAZ
vNfnumbernãoValor total da NF em reais (quando issued)
pdfUrlstring (URL)nãoURL para download do DANFE em PDF. Requer header x-api-key. A4 para NF-e, cupom 80mm para NFC-e.
xmlUrlstring (URL)nãoURL para download do XML autorizado. Requer header x-api-key.

Campos adicionais — quando error

CampoTipoReq?Descrição
cStatnumbernãoCódigo de rejeição SEFAZ (ex: 225, 539, 694)
xMotivostringnãoDescrição da rejeição SEFAZ
errorMessagestringnãoMensagem de erro interna para diagnóstico
retryCountnumbernãoNúmero de tentativas realizadas

ℹ️ pdfUrl e xmlUrl

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 são gerados sob demanda e não estão em CDN público.

{
  "invoiceId": "uuid-da-nfe",
  "status": "issued",
  "modelo": 55,
  "tpAmb": 1,
  "nNf": 42,
  "serie": 1,
  "chaveAcesso": "41260512345678000195550010000000421234567890",
  "nProt": "141260000012345",
  "cStat": 100,
  "xMotivo": "Autorizado o uso da NF-e",
  "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 o XML autorizado. O campo pdfUrl na resposta do GET /status já aponta para o endpoint de DANFE.

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 autorizado da NF-e/NFC-e (nfeProc completo com protocolo de autorização SEFAZ).

Comportamento

CampoTipoReq?Descrição
200application/xmlnãoXML nfeProc completo (NFe + protocolo de autorização)
Content-DispositionattachmentnãoFilename no formato nfe-{chaveAcesso}.xml

Erros

CampoTipoReq?Descrição
422UnprocessablenãoNota ainda não emitida ou XML não disponível
404Not FoundnãoNota não encontrada ou não pertence ao projeto
# Download do XML autorizado
curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "https://platform.notaas.com.br/api/v1/nfe/invoices/{invoiceId}/xml" \
  -o nfe.xml

# Ou use a xmlUrl retornada no GET /status:
curl -s \
  -H "x-api-key: SUA_API_KEY" \
  "$(jq -r '.xmlUrl' status.json)" \
  -o nfe.xml