Docs/NFC-e

NFC-e — Nota Fiscal de Consumidor Eletrônica

Endpoints para emissão, consulta e cancelamento de cupom fiscal (modelo 65) ao consumidor final.

Ver requisitos de autenticação

NFC-e vs NF-e

A NFC-e (modelo 65) é o cupom fiscal eletrônico para venda presencial ou delivery ao consumidor final. Diferente da NF-e (modelo 55), o destinatário é opcional, a forma de pagamento é obrigatória e o documento gera um cupom com QR Code para consulta na SEFAZ.

NFC-eNF-e
Modelo6555
DestinatárioOpcional (consumidor final)Obrigatório
PagamentoObrigatório (paymentMethod)Opcional no endpoint dedicado
SaídaCupom + QR CodeDANFE
CSCObrigatório (cscId + csc)Não se aplica

Pré-requisitos

  • Recurso NFC-e liberado na conta pela Emitfy (solicite ao suporte ou vendas)
  • Certificado digital A1 válido na empresa
  • Módulo NFC-e ativo em settings.nfce.active (painel ou PUT /v1/company)
  • CSC Id (cscId / IdToken) e CSC fornecidos pela SEFAZ do estado
  • Série e próximo número configurados em settings.nfce

Configuração CSC na empresa

O Código de Segurança do Contribuinte é exigido pela SEFAZ para montar o QR Code da NFC-e. Envie em PUT /v1/company (ou pelo painel fiscal):

JSON
{
  "settings": {
    "nfce": {
      "active": true,
      "environment": "test",
      "series": 1,
      "number": 1,
      "cscId": "000001",
      "csc": "SEU_CSC_FORNECIDO_PELA_SEFAZ"
    }
  }
}

Emissão via venda

Além de POST /v1/nfce, você pode criar uma venda com productInvoiceType: "nfce" em POST /v1/sales. Sem esse campo, a Emitfy usa o default de produto da empresa (nfe ou nfce).

JSON
{
  "customer": {
    "name": "Consumidor final",
    "email": "[email protected]"
  },
  "paymentMethod": "pix",
  "productInvoiceType": "nfce",
  "saleDate": "2026-07-11T15:00:00.000Z",
  "products": [
    {
      "sku": "PROD-001",
      "price": 29.9,
      "quantity": 1
    }
  ]
}

Contingência offline

A Emitfy não detecta queda de rede nem imprime cupom. O PDV decide entrar em contingência, gera a NFC-e com tpEmis=9, imprime o DANFE e guarda o XML localmente. Depois, envia o documento à Emitfy para validação e transmissão à SEFAZ.

  • Use issueMode: "offlineContingency" em POST /v1/nfce
  • Informe accessKey, number, series, issuedAt e contingency (data/hora e motivo) exatamente como impressos
  • Opcional: signedXml se o PDV já assinou — a Emitfy transmite sem alterar a identidade fiscal
  • transmit: "now" (padrão) enfileira imediatamente; "later" só persiste — chame POST /v1/nfce/{id}/transmit depois
  • Idempotência: header Idempotency-Key, externalId ou a mesma accessKey devolve o mesmo documento
JSON
{
  "issueMode": "offlineContingency",
  "transmit": "later",
  "externalId": "pos-ticket-998877",
  "accessKey": "3526...chave44digitosComTpEmis9",
  "number": 12345,
  "series": 1,
  "issuedAt": "2026-07-12T18:40:00-03:00",
  "contingency": {
    "startedAt": "2026-07-12T18:39:55-03:00",
    "reason": "SEFAZ indisponivel ou sem conexao"
  },
  "paymentMethod": "pix",
  "items": [
    {
      "description": "Café espresso",
      "ncm": "09012100",
      "quantity": 2,
      "unitValue": 8.5,
      "unit": "UN"
    }
  ]
}

PDF e XML

Após autorização, o cupom (PDF) e o XML ficam disponíveis em rotas públicas de nota:

  • GET /v1/invoices/{id}.pdf — cupom fiscal
  • GET /v1/invoices/{id}.xml — XML autorizado

O {id} é o identificador da nota retornado em POST /v1/nfce (campo id).