Emissão por tipo de nota

Referência dos campos de cada emissão. NF-e e NFC-e partem de um pedido de venda; a NFS-e tem payload próprio. Tipos completos no OpenAPI.

Cadastros (produtos & clientes)

O cadastro de produtos e clientes é feito no painel do CertFiscal (menus Produtos e Clientes, dentro da sua conta — o mesmo lugar onde você cria as chaves de API). A API referencia esses cadastros por id:

CadastroOnde cadastrarComo usar na API
ProdutoPainel → Produtos (individual ou importação em massa por CSV)productId ou sku no item do pedido — resolve descrição, NCM, CFOP, CSOSN e preço automaticamente
ClientePainel → ClientescustomerId no pedido de venda
Precisa cadastrar antes de emitir? Depende da nota:
  • NFC-e (cupom): cliente não é necessário — a nota sai para consumidor final. Se o consumidor pedir CPF/CNPJ na nota, envie o campo cpf no POST /v1/nfce. Produto também é dispensável: o item pode ir inline no pedido (description, unit, quantity, unitPriceCents + ncm/cfop).
  • NF-e (modelo 55): o destinatário é obrigatório — cadastre o cliente no painel e envie customerId no pedido.
  • NFS-e: não usa cadastro — os dados do tomador vão no próprio payload (tomadorType, tomadorDoc, tomadorName).

Para catálogo fixo, recomendamos cadastrar os produtos no painel com os dados fiscais completos (NCM, CFOP, CSOSN): a emissão fica mais simples (só sku + quantidade no pedido) e evita rejeições da SEFAZ por dado fiscal ausente.

Valores & unidades

Atenção às unidades: nos itens (pedido e NFS-e) o valor é em centavos (unitPriceCents, discountCents). Nos pagamentos da NFC-e o valor é em reais (valor). Ex.: R$ 19,90 → 1990 (centavos) no item, 19.90 (reais) no pagamento.

Pedido de venda POST /v1/sales-orders

Base de NF-e e NFC-e. Campos:

CampoDescrição
companyIdobrigatórioEmpresa emitente
customerIdopcionalCliente (destinatário). Obrigatório para NF-e 55
items[]obrigatórioItens — ver abaixo
priceListIdopcionalTabela de preço; senão usa a do cliente/empresa
paymentTermsopcionalCondição de pagamento (texto)
duplicatas[]opcionalParcelas (grupo <cobr>): numero, vencimento (YYYY-MM-DD), valorCents
referencedAccessKeyopcionalChave (44 díg.) de NF-e referenciada (<NFref>)

Item (items[])

CampoDescrição
descriptionobrigatórioDescrição do produto
unitobrigatórioUnidade comercial (ex.: UN, KG)
quantityobrigatórioQuantidade
productId / skuopcionalVincula a um produto cadastrado (resolve NCM/preço)
unitPriceCentsopcionalPreço unitário em centavos. Omitido → resolve da tabela/produto
discountCentsopcionalDesconto do item em centavos
ncm / cfopopcionalSobrescrevem o do produto
curl -X POST https://api.certfiscal.com.br/v1/sales-orders \
  -H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
  -d '{
    "companyId": "comp_...",
    "items": [
      { "description": "Camiseta P", "unit": "UN", "quantity": 2, "unitPriceCents": 4990 }
    ]
  }'

NFC-e (modelo 65) POST /v1/nfce

Cupom fiscal eletrônico, emissão síncrona. Escopo nfce:write + header Idempotency-Key.

CampoDescrição
salesOrderIdobrigatórioPedido de venda
payments[]obrigatórioFormas de pagamento (não vazio)
trocoopcionalTroco em reais (default 0)

Pagamento (payments[])

CampoDescrição
tipoobrigatóriotPag: 01 dinheiro, 03 crédito, 04 débito, 17 PIX…
valorobrigatórioValor pago nesta forma, em reais
curl -X POST https://api.certfiscal.com.br/v1/nfce \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{
    "salesOrderId": "so_...",
    "payments": [{ "tipo": "17", "valor": 99.80 }]
  }'

NF-e (modelo 55) POST /v1/nfe

Prepara a NF-e do pedido e autoriza na SEFAZ. Escopo nfe:write + Idempotency-Key. O destinatário (customerId no pedido) é obrigatório.

CampoDescrição
salesOrderIdobrigatórioPedido de venda
companyIdopcionalEmpresa (se diferente da do pedido)
curl -X POST https://api.certfiscal.com.br/v1/nfe \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{ "salesOrderId": "so_..." }'

NFS-e POST /v1/nfse

Nota de serviço, com payload próprio (não usa pedido de venda). Escopo nfse:write + Idempotency-Key.

CampoDescrição
companyIdobrigatórioEmpresa prestadora
tomadorTypeobrigatórioPJ | PF | exterior
items[]obrigatórioServiços — ver abaixo
tomadorDoc / tomadorName / tomadorEmailopcionalDados do tomador
tomadorCityIbgeopcionalMunicípio do tomador (código IBGE)
competenciaopcionalCompetência (data)
deductionsCentsopcionalDeduções em centavos

Serviço (items[])

CampoDescrição
descriptionobrigatórioDescrição do serviço
unitPriceCentsobrigatórioValor unitário em centavos
quantityopcionalQuantidade (default 1)
issRateopcionalAlíquota de ISS
cTribNacopcionalCódigo de tributação nacional (NBS)
curl -X POST https://api.certfiscal.com.br/v1/nfse \
  -H "Authorization: Bearer SUA_CHAVE" \
  -H "Idempotency-Key: $(uuidgen)" -H "Content-Type: application/json" \
  -d '{
    "companyId": "comp_...",
    "tomadorType": "PJ",
    "tomadorDoc": "12345678000190",
    "tomadorName": "Cliente Ltda",
    "items": [{ "description": "Consultoria em TI - 10h", "unitPriceCents": 500000, "issRate": 2.0 }]
  }'
Cobertura NFS-e: 2.419 cidades pelo Emissor Nacional + conectores próprios. Consulte a cobertura em GET /v1/coverage.

Cancelamento POST /v1/nfe/{id}/cancelamento

Cancela NF-e/NFC-e autorizada. Escopo nfe:write.

CampoDescrição
justificationobrigatórioMotivo, entre 15 e 255 caracteres (regra SEFAZ)
curl -X POST https://api.certfiscal.com.br/v1/nfe/inv_.../cancelamento \
  -H "Authorization: Bearer SUA_CHAVE" -H "Content-Type: application/json" \
  -d '{ "justification": "Cancelamento por desistencia do cliente" }'

Empresas & consulta

Descubra o companyId das suas empresas e consulte o estado atual de qualquer documento (status, chave de acesso, número, protocolo, mensagem da SEFAZ e quais arquivos já existem). Útil para reconciliação e para acompanhar uma NFC-e emitida em contingência.

EndpointRetornaEscopo
GET /v1/companiesEmpresas da organização (id, CNPJ, razão social, UF, CRT, ambiente fiscal, status do cadastro)
GET /v1/companies/{id}Uma empresa
GET /v1/nfe/{id}NF-e ou NFC-e: status, accessKey, number/series, protocol, sefazCode/sefazMessage, contingency, documents[], danfeAvailablenfe:read
GET /v1/nfce/{id}Alias de /v1/nfe/{id} (NFC-e é o modelo 65)nfe:read
GET /v1/nfse/{id}NFS-e: status, accessKey50, nfseNumber, tomador, totais em centavos, documents[]nfse:read
curl https://api.certfiscal.com.br/v1/companies -H "Authorization: Bearer SUA_CHAVE"
curl https://api.certfiscal.com.br/v1/nfe/ID_DA_NOTA -H "Authorization: Bearer SUA_CHAVE"
O id da nota é o invoiceId devolvido no POST /v1/nfce / POST /v1/nfe — não é a sua Idempotency-Key. Um id que não existe ou pertence a outra organização responde 404.

XML & DANFE

EndpointRetorna
GET /v1/nfe/{id}/xmlXML autorizado da NF-e/NFC-e (base64)
GET /v1/nfe/{id}/danfeDANFE em PDF (base64, sob demanda)
GET /v1/nfse/{id}/xmlXML autorizado da NFS-e (base64)
GET /v1/invoices?companyId=…Lista/busca notas por empresa e período