Pular para conteúdo

SmartNFCe

O adaptador SmartNFCe leva para a nuvem o contrato do Motor Emissor que hoje roda ao lado do PDV. São os mesmos caminhos, os mesmos corpos e os mesmos códigos. O PDV troca o endereço local pelo nosso, e o certificado passa a ficar sob custódia do Veraciti.

Diferente dos outros dois dialetos, estas páginas descrevem a superfície inteira. O motor local não tem documentação pública para a qual remeter, então tudo o que você precisa saber está aqui. Estas páginas são mais longas que as dos outros dialetos por causa disso, não porque este dialeto seja mais complicado.

  • Guia de migração — para onde apontar, por que a autenticação já está resolvida e as convenções de fio que diferenciam este dialeto dos outros dois.
  • Compatibilidade — o que o adaptador aceita, o que ele recusa e onde ele diverge do motor local, item a item.

Adaptador em desenvolvimento

O contrato descrito aqui já está fechado. Nada nestas páginas é suposição.

Superfície atendida

Rota O que faz
POST /api/v1/nfce/xml/{uuid} Emite, a partir do XML que você montou
GET /api/v1/nfce/authorization/status/{uuid} Consulta pelo uuid que você escolheu
GET /api/v1/nfce/{nNFouChave} Consulta por número ou por chave
POST /api/v1/nfce/cancelar Cancela, por número ou por chave
POST /api/v1/nfce/{chNFe}/cancel Cancela pela chave, com justificativa obrigatória
POST /api/v1/nfce/{chNFe}/cancellationBySubstitution Cancela por substituição
POST /api/v1/nfce/discard Inutiliza uma faixa de numeração
GET /api/v1/nfce/inutilizacoes Lista as inutilizações
POST /api/v1/nfce/danfepdf DANFE em PDF, por número ou por chave
GET /api/v1/nfce/contingencia/enable Liga a contingência forçada. A emissão passa a sair em tpEmis 9, sem chamar a SEFAZ
GET /api/v1/nfce/contingencia/disable Desliga a contingência forçada
GET /api/v1/nfce/contingencia/pendentes Quantos documentos esperam transmissão
GET /api/v1/nfce/contingencia/resultado/{nNF} Desfecho de um número em contingência
GET /api/v1/nfce/processamentocontigencia Relatório de processamento (o caminho tem o erro de digitação do motor, de propósito)
GET /api/v1/nfce/status_sefaz Status do serviço na SEFAZ
POST /api/v1/webhook/config Grava a configuração de webhook (uma por empresa e ambiente)
GET /api/v1/webhook/config Lê a configuração (o segredo volta mascarado)
GET /status Sinal de vida do adaptador

Quando o documento não tem modo offline, contingencia/enable recusa em banda, com contingência offline não suportada para este documento. Ele não liga sem efeito.

Os verbos que só fazem sentido numa máquina local ficam de fora. São eles: impressão ESC/POS, configuração de DANFE local, cadastro local, restauração de fábrica, atualização automática e leitura de log local. O motivo de cada um está na página de compatibilidade.

Diferenças que mais afetam código existente

  1. A autenticação já está resolvida. Este é o único dialeto que não tem provisionamento de credencial: ele aceita o token OAuth2 que o seu equipamento já carrega. Ver Autenticação.
  2. A entrada continua em XML. Diferente dos outros dialetos, aqui você envia o documento já montado no layout SEFAZ. Quem decide o tpEmis continua sendo você.
  3. Tudo responde 200. O motor não tem semântica de erro em HTTP, e nós reproduzimos isso: o desfecho vem no corpo, inclusive os sentinelas negativos.
  4. Dois vocabulários de status convivem e nunca se encontram. É a coisa mais confusa desta superfície e tem uma seção própria.
  5. IBS/CBS obrigatório. Todo item precisa do grupo imposto.IBSCBS. Sem ele a SEFAZ rejeita. Ver Validação.

Endereços

Ambiente Endereço base
Produção https://smartnfce.api.veraciti.com.br
Homologação https://smartnfce-sandbox.api.veraciti.com.br

Como nos demais dialetos, o endereço base é a única coisa que muda entre homologação e produção: caminhos, corpos e autenticação são idênticos nos dois.