← Voltar ao Guia

📋 Passo 1: Obter CSC na SEFAZ

O CSC (Código de Segurança do Contribuinte) é obrigatório para NFC-e.

  1. Acesse o portal da SEFAZ do seu estado
  2. Vá em "Serviços" → "NFC-e" → "Gerenciar CSC"
  3. Gere um novo CSC ou use um existente
  4. Anote o CSC e o ID do CSC

⚠️ Importante

O CSC deve estar ATIVO no portal. CSC revogado gera erro 463.

🔑 Passo 2: Preparar JSON de Emissão

Use o template abaixo ou copie de exemplos_json/nfce_emissao_completa.json:

JSON Template
{
    "empresa": {
        "nome": "SUA EMPRESA LTDA",
        "nome_fantasia": "Sua Loja",
        "cnpj": "12345678000190",
        "inscricao_estadual": "123456789",
        "regime_tributario": 1,
        "estado": "PE",
        "cidade": "Recife",
        "endereco": "Rua Exemplo",
        "numero": "100",
        "bairro": "Centro",
        "cep": "50000000",
        "email": "contato@empresa.com.br",
        "telefone": "(81) 99999-9999",
        "senha_certificado": "SUA_SENHA_CERTIFICADO_A1"
    },
    "nfce": {
        "numero": "1",
        "serie": "001",
        "ambiente": 2,
        "csc": "SEU_CSC_AQUI",
        "csc_id": "000001"
    },
    "cliente": {
        "cpf": "05138670409",
        "nome": "João da Silva",
        "email": "joao@email.com",
        "telefone": "(81) 98888-7777"
    },
    "itens": [
        {
            "codigo": "PROD001",
            "descricao": "Produto Exemplo",
            "ncm": "49111090",
            "cfop": "5102",
            "unidade": "UN",
            "quantidade": 1,
            "valor_unitario": 10.00,
            "valor_total": 10.00
        }
    ],
    "pagamentos": [
        {
            "forma_pagamento": "01",
            "valor": 10.00
        }
    ],
    "desconto": 0,
    "informacoes_complementares": "Venda realizada no PDV",
    "responsavel_tecnico": {
        "cnpj": "12345678000190",
        "contato": "TI",
        "email": "ti@empresa.com.br",
        "telefone": "11999999999"
    }
}

✅ Dica

Cliente opcional: Para vendas sem identificação do consumidor, remova todo o bloco "cliente"

📤 Passo 3: Enviar Requisição

Faça uma requisição POST para o endpoint:

Endpoint
POST http://localhost/pontti_nfe/api/nfce/emitir.php
Content-Type: application/json

Exemplo com cURL:

cURL
curl -X POST http://localhost/pontti_nfe/api/nfce/emitir.php \
  -H "Content-Type: application/json" \
  -d '{
    "empresa": {...},
    "nfce": {...},
    "itens": [...],
    "pagamentos": [...]
  }'

Exemplo com JavaScript/Fetch:

JavaScript
fetch('http://localhost/pontti_nfe/api/nfce/emitir.php', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({
        empresa: {...},
        nfce: {...},
        itens: [...],
        pagamentos: [...]
    })
})
.then(response => response.json())
.then(data => console.log(data));

📥 Passo 4: Processar Resposta

✅ Sucesso (cStat = 100):

Response
{
    "success": true,
    "numero": "1",
    "serie": "001",
    "chave_acesso": "26251021497109000156650010000000011182804582",
    "protocolo": "226250936821623",
    "cStat": "100",
    "xml_path": "/pontti_nfe/arquivos/.../nfce/xml/...",
    "pdf_path": "/pontti_nfe/arquivos/.../nfce/pdf/...",
    "data_emissao": "2025-10-21 16:09:31",
    "valor_total": 10.00,
    "message": "NFC-e emitida com sucesso"
}

✅ NFC-e Autorizada!

Guarde a chave_acesso e o protocolo para futuras operações (cancelamento, consulta).

O pdf_path contém o DANFCE com QR Code para impressão.

❌ Erro (cStat ≠ 100):

Response
{
    "success": false,
    "numero": "1",
    "serie": "001",
    "cStat": "463",
    "error": "NFe rejeitada [463]: Rejeição: Codigo identificador do CSC no QR-Code foi revogado"
}

❌ NFC-e Rejeitada

Verifique o código de erro (cStat) e a mensagem (error).

Consulte a seção de erros comuns abaixo.

⚠️ Erros Comuns e Soluções

Código Erro Solução
463 CSC revogado Gere um novo CSC no portal da SEFAZ e atualize no JSON
704 Data/hora atrasada Sistema corrige automaticamente - não informe data_emissao
778 NCM inexistente Use um NCM válido (ex: 49111090)
972 Falta responsável técnico Inclua o bloco "responsavel_tecnico" no JSON

❌ Cancelamento de NFC-e

Para cancelar uma NFC-e autorizada, use o endpoint abaixo dentro do prazo de 24 horas após a emissão.

📝 Endpoint de Cancelamento

Endpoint
POST http://localhost/pontti_nfe/api/nfce/cancelar.php
Content-Type: application/json

🔑 JSON de Cancelamento

Use o template abaixo ou copie de exemplos_json/nfce_cancelamento.json:

JSON Template
{
    "chave_acesso": "26251021497109000156650010000000011182804582",
    "protocolo": "226250936821623",
    "cnpj": "21497109000156",
    "senha_certificado": "SUA_SENHA_CERTIFICADO_A1",
    "justificativa": "Erro no valor - cancelamento solicitado pelo cliente"
}

⚠️ Atenção

  • A justificativa deve ter mínimo 15 caracteres
  • O cancelamento só pode ser feito em até 24 horas após a autorização
  • Use a chave_acesso e o protocolo retornados na emissão

📥 Resposta de Cancelamento

✅ Cancelamento Autorizado:

Response
{
    "success": true,
    "chave_acesso": "26251021497109000156650010000000011182804582",
    "protocolo": "226250936821625",
    "cStat": "135",
    "message": "Cancelamento homologado"
}

❌ Erro no Cancelamento:

Response
{
    "success": false,
    "chave_acesso": "26251021497109000156650010000000011182804582",
    "cStat": "573",
    "error": "Rejeição: Duplicidade de Evento"
}

💳 Formas de Pagamento

Código Forma de Pagamento
01 Dinheiro
02 Cheque
03 Cartão de Crédito
04 Cartão de Débito
05 Crédito Loja
10 Vale Alimentação
11 Vale Refeição
12 Vale Presente
13 Vale Combustível
15 Boleto Bancário
16 Depósito Bancário
17 PIX
90 Sem Pagamento
99 Outros

📝 Exemplos Práticos

Exemplo 1: Venda com CPF do Cliente

Arquivo: nfce_emissao_completa.json
{
    "empresa": {...},
    "nfce": {
        "numero": "1",
        "serie": "001",
        "ambiente": 2,
        "csc": "1A8F6141-B4E9-4F46-BE82-1AA462EDA8B5",
        "csc_id": "000002"
    },
    "cliente": {
        "cpf": "05138670409",
        "nome": "João da Silva"
    },
    "itens": [...],
    "pagamentos": [...]
}

Exemplo 2: Venda SEM Identificação

Arquivo: nfce_emissao_sem_cliente.json
{
    "empresa": {...},
    "nfce": {
        "numero": "2",
        "serie": "001",
        "ambiente": 2,
        "csc": "1A8F6141-B4E9-4F46-BE82-1AA462EDA8B5",
        "csc_id": "000002"
    },
    "itens": [...],
    "pagamentos": [...]
}

Nota: Sem o bloco "cliente", a NFC-e será emitida para "Consumidor Não Identificado"

Exemplo 3: Múltiplas Formas de Pagamento

Arquivo: nfce_emissao_multiplas_formas_pagamento.json
{
    "empresa": {...},
    "nfce": {...},
    "itens": [...],
    "pagamentos": [
        {
            "forma_pagamento": "01",
            "valor": 50.00
        },
        {
            "forma_pagamento": "03",
            "valor": 50.00
        }
    ]
}

Total da venda: R$ 100,00 (R$ 50 em dinheiro + R$ 50 no cartão de crédito)

❌ Cancelar NFC-e

Para cancelar uma NFC-e autorizada (prazo: até 24 horas):

POST /api/nfce/cancelar.php
{
    "chave_acesso": "26251021497109000156650010000000011182804582",
    "protocolo": "226250936821623",
    "justificativa": "Erro no preenchimento dos dados da NFC-e"
}

⚠️ Atenção

• Justificativa mínima: 15 caracteres

• Prazo: até 24 horas após autorização

• Após cancelamento, não pode ser revertido

💡 Dicas e Boas Práticas

🔢

Numeração

Controle rigoroso da numeração sequencial por série

Data/Hora

Não informe data_emissao, o sistema usa a data/hora atual automaticamente

💰

Valores

Use valores com 2 casas decimais (10.00 e não 10)

🔐

CSC Ativo

Verifique periodicamente se o CSC está ativo no portal SEFAZ

📱

QR Code

Sempre impresso automaticamente no DANFCE para consulta

🧪

Homologação

Teste sempre em homologação (ambiente: 2) antes de produção