NFC-e — modelo 65
A NFC-e (Nota Fiscal de Consumidor eletrônica) é o cupom fiscal eletrônico usado em vendas ao consumidor final (varejo, restaurante, delivery). É síncrona (autoriza na hora) e gera QR-code obrigatório pra leitura do consumidor.
O que você precisa antes de emitir
1. Issuer cadastrado
Um Issuer é o CNPJ emissor. Pelo dashboard ou via API:
curl -X POST https://api.zfiscoo.zek.app.br/v1/issuers \
-H "Authorization: Bearer fk_live_..." \
-d '{
"cnpj": "11222333000181",
"razao_social": "X Burger Comércio LTDA",
"ie": "111222333444",
"uf": "SP",
"ambiente": "homologacao",
"regime_tributario": "simples"
}'2. Certificado A1 (.pfx)
Upload do .pfx + senha. Guardado cifrado AES-256-GCM (envelope) no servidor.
curl -X POST https://api.zfiscoo.zek.app.br/v1/issuers/iss_.../certificate \
-H "Authorization: Bearer fk_live_..." \
-F "pfx=@cert.pfx" \
-F "password=senha-do-cert"3. CSC (Código de Segurança do Contribuinte)
Cada UF gera o CSC dela no portal SEFAZ. Necessário pro QR-code:
curl -X POST https://api.zfiscoo.zek.app.br/v1/issuers/iss_.../csc \
-H "Authorization: Bearer fk_live_..." \
-d '{ "id_csc": "000001", "csc": "ABCDEF1234567890..." }'Emitindo
curl -X POST https://api.zfiscoo.zek.app.br/v1/nfce \
-H "Authorization: Bearer fk_live_..." \
-H "Idempotency-Key: pedido-2026-001" \
-d '{
"issuer_id": "iss_xburger_sp",
"external_ref": "pedido-001",
"items": [
{
"description": "X-Burger Combo",
"quantity": 1,
"unit_price": 32.90,
"ncm": "21069090",
"cfop": "5102",
"unit": "UN",
"cst_icms": "00",
"vBC": 32.90,
"pICMS": 7.0
}
],
"payment": {
"method": "credito",
"amount": 32.90,
"card_brand": "visa"
},
"consumer": {
"cpf": "12345678909"
}
}'Resposta:
{
"id": "nfce_01HXYZ...",
"status": "processing"
}Em ~1-3s (síncrona com SEFAZ-SP), webhook ou polling devolve:
{
"id": "nfce_01HXYZ...",
"status": "authorized",
"access_key": "35260111222333000181650010000000011000000017",
"protocolo": "135260000000001",
"danfe_url": "https://api.zfiscoo.zek.app.br/v1/nfce/nfce_.../danfe.pdf",
"xml_url": "https://...",
"qrcode_url": "https://www.nfce.fazenda.sp.gov.br/qrcode?p=35260..."
}Cancelamento
Janela: 30 minutos após autorização (regra SEFAZ-SP, varia por UF).
curl -X POST https://api.zfiscoo.zek.app.br/v1/nfce/nfce_.../cancel \
-H "Authorization: Bearer fk_live_..." \
-d '{ "reason": "Cliente desistiu da compra" }'Mínimo 15 chars no reason (SEFAZ rejeita justificativa curta).
Inutilização de numeração
Quando o sistema gera um número mas a nota nunca é emitida (gap), você precisa inutilizar:
curl -X POST https://api.zfiscoo.zek.app.br/v1/issuers/iss_.../inutilization \
-H "Authorization: Bearer fk_live_..." \
-d '{
"serie": 1,
"numero_inicial": 1234,
"numero_final": 1234,
"justification": "Falha de sistema na emissão de pedido 0987"
}'UFs suportadas
| UF | Status | Observações |
|---|---|---|
| SP | supported | Cliente piloto ativo, alta cobertura de teste |
| MG, RJ, RS, PR, BA | configured | URLs + cUF prontos, aguardando smoke real com cert PJ daquela UF |
| Demais 21 UFs | configured | Idem; promovem-se a supported conforme cliente piloto entra |
Lista completa atualizada em GET /v1/ufs.
Gotchas SEFAZ que o gateway resolve por você:
cNF(8 dígitos aleatórios) ≠nNF— o gateway gera automaticamenteindSinc=1é sempre setado (NFC-e é síncrona, diferente de NF-e mod 55)tpNF=1(saída) sempre — devolução é evento separado- RSA-SHA1 + xml-exc-c14n no XMLDigSig (SEFAZ não aceita SHA256)