nfse, cancelar, webhook, 422) ou fale com a gente em Contato.Autenticacao
Envie sua API Key no cabecalho (metodo principal):
Authorization: Bearer SUA_API_KEY
Alternativa aceita:
X-API-Key: SUA_API_KEY
Formato: fiscal_live_<40 hex> (producao) ou fiscal_test_<40 hex> (sandbox: sempre homologacao). Crie e gerencie chaves em Minhas API Keys.
Formato das respostas
Toda resposta JSON inclui request_id (tambem no cabecalho X-Request-Id). Informe-o ao suporte.
{
"success": true,
"request_id": "req_a1b2...",
"...": "dados do recurso"
}{
"success": false,
"request_id": "req_a1b2...",
"error": {
"code": "VALIDATION_ERROR",
"message": "Requisicao invalida."
}
}Rate limit e ambientes
- Limite por minuto e por API Key. Ao exceder:
HTTP 429,RATE_LIMITEDe cabecalhoRetry-After(segundos). - Sandbox: chaves
fiscal_test_*emitem sempre em homologacao SEFAZ e so enxergam documentos de homologacao. - Producao: chaves
fiscal_live_*usam o ambiente configurado da empresa.
API Keys e escopos
Cada chave tem escopos por modulo; um escopo nunca da acesso a outro modulo (403 FORBIDDEN).
emitir,consultar,cancelar,cce,inutilizar,download,preview,configurar: NF-e/NFC-e, Motor (/fiscal/*), cadastros e webhooks.nfse:read|write,cte:read|write,cteos:read|write,mdfe:read|write,rural:read|write: leitura ou escrita por modulo.override: substituir valores calculados pelo Motor (auditado, com motivo) e aceitar revisao fiscal.
Multiempresa
Informe empresa_id (id) ou empresa (codigo); com uma unica empresa na conta o campo e opcional. Empresa inexistente, inativa ou de outra conta responde 403 EMPRESA_NAO_AUTORIZADA; documentos de outra empresa respondem 404. Cada empresa tem certificado, series, ambiente e modulos (MODULO_NAO_HABILITADO) proprios. Produtor rural PF usa CPF + IE e certificado e-CPF.
Motor Tributario Central
Um unico nucleo calcula e classifica NFS-e, CT-e, CT-e OS, MDF-e e NF-e rural; NF-e/NFC-e o consultam quando ha contexto rural. Fluxo: JSON simples → empresa → TaxContext → regras especializadas → TaxResult → documento → snapshot.
- Vigencia: a regra aplicada e a vigente na data da operacao; empate de regras e erro de ambiguidade.
- Resultado:
taxes,classifications,rules_used(fonte e versao),warnings,confidence_score(0 a 1) erequires_review. Comrequires_reviewa emissao automatica e bloqueada. - Explain:
?explain=truedetalha cada decisao (base, aliquota, valor, regra, fonte, versao, motivo). - Sem tributacao inventada: sem regra cadastrada o motor avisa ou recusa; nao ha aliquota padrao.
- Snapshot e override: cada emissao grava um snapshot imutavel (SHA-256); substituir um valor calculado exige permissao
overrideeoverride_motivo.
Idempotencia
Vale para NF-e, NFC-e, NFS-e, CT-e, CT-e OS e MDF-e. Chaves: header Idempotency-Key (opcional) e sempre empresa + modulo + pedido. Mesmo pedido e conteudo: replay (Idempotent-Replay: true), sem nova transmissao nem cobranca. Conteudo diferente: 422 IDEMPOTENCY_KEY_REUSED. Em processamento: 409 REQUEST_IN_PROGRESS. Resposta incerta: 202, consulte o documento (nunca reemita).
Preview e dry-run
POST /nfse/preview, /cte/preview, /cteos/preview, /mdfe/preview e /fiscal/preview validam sem transmitir, cobrar ou consumir numeracao. POST /fiscal/calcular e /fiscal/validate executam apenas o Motor (e a validacao do leiaute) para qualquer documento, sem SEFAZ nem Sistema Nacional. data_operacao simula a legislacao de outra data (so nesses modos). NFF: 501 NFF_NAO_DISPONIVEL.
Webhooks
Eventos nfe.*, nfce.*, nfse.*, cte.*, cteos.* e mdfe.* (processing, authorized, rejected, cancelled; mdfe.closed). Produtor rural usa nfe.* com context: PRODUTOR_RURAL.
X-Webhook-Signature = "sha256=" + HMAC_SHA256(segredo, X-Webhook-Timestamp + "." + corpo)
Retry com backoff (1 min, 5 min, 15 min, 1 h, 6 h), timeout de 8 s, URL https obrigatoria e bloqueio de enderecos privados (SSRF). Rejeite timestamps com mais de 5 minutos.
Fila assincrona, retentativas e consulta antes de reenviar
Receber ou enfileirar nao significa transmitir nem autorizar. POST /fiscal/solicitacoes (ou Prefer: respond-async em POST /nfe|/nfce|/nfse|/cte|/cteos|/mdfe) grava uma tarefa persistente e devolve solicitacao_id (202). O worker transmite quando possivel; em falha temporaria repete com intervalo progressivo; com resultado desconhecido consulta a situacao (nunca reenvia as cegas); so marca AUTORIZADA/REJEITADA com o resultado oficial.
- Status:
RECEBIDA,AGUARDANDO_TRANSMISSAO,TRANSMITINDO,AGUARDANDO_RETORNO,AUTORIZADA,REJEITADA,FALHA_TEMPORARIA,ACAO_NECESSARIA,CANCELADA(tarefa; nunca cancelamento fiscal). - Duplicidade: uma tarefa por empresa + documento + pedido; reenviar devolve a mesma solicitacao (
Idempotent-Replay); "nao recebido" (cStat 217 / DPS 404) so e confirmado por consulta, depois do prazo de tolerancia. - Creditos: saldo validado ao aceitar (402
SALDO_INSUFICIENTE); debito unico na emissao, estorno em falha; ilimitados respeitados. - Eventos de webhook:
fiscal.document.queued,pending,authorized(so apos o resultado oficial),rejected,action_required,cancelled. - Workers:
php database/worker_fiscal.php(cron/Agendador a cada minuto) ephp database/worker_notificacoes.php. Detalhes no guia (PDF) e emdocs/FILA_FISCAL.md.
Notificacoes por e-mail
Enviadas pelo PHPMailer 7.1.1 a partir de uma outbox persistente (separada da fila fiscal; a confirmacao fiscal nao depende do SMTP): autorizada (somente apos o resultado oficial), rejeitada com o motivo, acao necessaria e aviso opcional de pendencia. HTML responsivo + texto simples, sem XML, certificados ou credenciais (apenas link autenticado para o painel). Sem e-mail por tentativa, deduplicacao, retentativas progressivas e preferencias por usuario/empresa (GET|PUT /fiscal/notificacoes/preferencias). SMTP por variaveis de ambiente (MAIL_*); sem configuracao o envio fica desativado.
NF-e
emitir
Emitir NF-e (modelo 55)
Recebe o JSON minimo (pedido, cliente, itens e pagamento). A API obtem emitente, certificado, natureza, serie e numeracao da configuracao da empresa; o Motor Tributario resolve CFOP, CST/CSOSN, ICMS, PIS, COFINS e IBS/CBS; valida, assina e transmite a SEFAZ. Sem regra suficiente NAO emite: responde 422 FISCAL_CONFIGURATION_REQUIRED dizendo o que configurar.
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios.
pedidoclienteitens[].codigoitens[].quantidadepagamento
empresa (obrigatorio so se sua conta tem mais de uma)itens[].valor (padrao: preco do produto)itens[].descontonaturezaobservacoespresenca (presencial|internet|telefone|entrega|outros)intermediador {cnpj,id} (presenca diferente de presencial; padrao: sem intermediador)consumidor_finalfrete.modalidade
{
"pedido": "PED-12345",
"cliente": "CLI001",
"itens": [
{
"codigo": "PROD001",
"quantidade": 2
}
],
"pagamento": "pix"
}
JSON completo
{
"empresa": "EMPRESA_001",
"pedido": "PED-12345",
"cliente": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"itens": [
{
"codigo": "PROD001",
"quantidade": 2,
"valor": 100,
"desconto": 0
}
],
"pagamento": [
{
"forma": "pix",
"valor": 200
}
],
"natureza": "VENDA",
"observacoes": "Pedido online",
"presenca": "internet",
"frete": {
"modalidade": 9
}
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfe" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pedido":"PED-12345","cliente":"CLI001","itens":[{"codigo":"PROD001","quantidade":2}],"pagamento":"pix"}'
{
"success": true,
"status": "AUTORIZADA",
"id": "43",
"numero": 1,
"serie": 1,
"chave": "3524...",
"protocolo": "135240000000001",
"xml": "/api/v1/nfe/43/xml",
"danfe": "/api/v1/nfe/43/danfe",
"request_id": "req_a1b2c3d4e5f6a7b8c9d0"
}
422 SEFAZ_REJECTION— Documento rejeitado pela SEFAZ (sefaz_code e mensagem originais).422 FISCAL_CONFIGURATION_REQUIRED— Produto sem NCM, operacao sem regra tributaria, cliente sem endereco (NF-e)...202 SEFAZ_UNAVAILABLE— Situacao incerta por falha de comunicacao; consulte GET /nfe/{id}.
NFC-e
emitir
Emitir NFC-e (modelo 65)
Mesmo JSON da NF-e; o cliente e opcional e nao exige endereco.
Autenticacao: Bearer API Key
pedidoitens[].codigoitens[].quantidadepagamento
empresaclienteitens[].valornaturezaobservacoes
{
"pedido": "PED-9",
"itens": [
{
"codigo": "PROD001",
"quantidade": 1
}
],
"pagamento": "dinheiro"
}
JSON completo
{
"empresa": "EMPRESA_001",
"pedido": "PED-12345",
"cliente": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"itens": [
{
"codigo": "PROD001",
"quantidade": 2,
"valor": 100,
"desconto": 0
}
],
"pagamento": [
{
"forma": "pix",
"valor": 200
}
],
"natureza": "VENDA",
"observacoes": "Pedido online",
"presenca": "internet",
"frete": {
"modalidade": 9
}
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfce" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pedido":"PED-9","itens":[{"codigo":"PROD001","quantidade":1}],"pagamento":"dinheiro"}'
{
"success": true,
"status": "AUTORIZADA",
"id": "44",
"numero": 1,
"serie": 1,
"danfe": "/api/v1/nfce/44/danfce",
"request_id": "req_..."
}
422 SEFAZ_REJECTION— Documento rejeitado pela SEFAZ (sefaz_code e mensagem originais).422 FISCAL_CONFIGURATION_REQUIRED— Produto sem NCM, operacao sem regra tributaria, cliente sem endereco (NF-e)...202 SEFAZ_UNAVAILABLE— Situacao incerta por falha de comunicacao; consulte GET /nfe/{id}.
Fiscal
preview
Pre-visualizar calculo (nao emite)
Enriquece, aplica regras, valida e calcula tributos sem transmitir nada.
Autenticacao: Bearer API Key
itens[]pagamento
modelo (55|65, padrao 55)demais campos da emissao
{
"pedido": "PED-12345",
"cliente": "CLI001",
"itens": [
{
"codigo": "PROD001",
"quantidade": 2
}
],
"pagamento": "pix",
"modelo": 55
}
JSON completo
{
"empresa": "EMPRESA_001",
"pedido": "PED-12345",
"cliente": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"itens": [
{
"codigo": "PROD001",
"quantidade": 2,
"valor": 100,
"desconto": 0
}
],
"pagamento": [
{
"forma": "pix",
"valor": 200
}
],
"natureza": "VENDA",
"observacoes": "Pedido online",
"presenca": "internet",
"frete": {
"modalidade": 9
},
"modelo": 55
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/fiscal/preview" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"pedido":"PED-12345","cliente":"CLI001","itens":[{"codigo":"PROD001","quantidade":2}],"pagamento":"pix","modelo":55}'
{
"success": true,
"ready_to_issue": true,
"document": {
"modelo": 55,
"itens": [
{
"codigo": "PROD001",
"cfop": "5102",
"regra_tributaria_id": 12,
"regra_iva_id": null,
"decisao_tributaria": {
"data_operacao": "2026-09-29",
"regra_tributaria": {
"regra_id": 12,
"tipo_regra": "tributaria",
"prioridade": 100,
"criterios_correspondentes": [
"crt",
"operacao",
"ncm"
]
}
}
}
],
"totais": {
"vProd": 200,
"vNF": 200
}
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— ready_to_issue=false com a lista error.missing e os codigos em error.motivos.
Consulta
consultar
Consultar NF-e / NFC-e
Status, numero, serie, chave, protocolo e eventos. Documentos PENDENTE sao reconciliados com a SEFAZ. Use /nfce/{id} para NFC-e.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfe/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": "43",
"status": "AUTORIZADA",
"chave": "3524...",
"request_id": "req_..."
}
404 DOCUMENTO_NAO_ENCONTRADO— Documento inexistente ou de outra conta.
consultar
Historico de eventos
Cancelamentos e cartas de correcao do documento (tambem /nfce/{id}/eventos).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfe/43/eventos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"eventos": [
{
"tipo": "CANCELAMENTO",
"status": "REGISTRADO"
}
],
"request_id": "req_..."
}
download
Baixar XML
XML autorizado (application/xml). Tambem /nfce/{id}/xml.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfe/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<nfeProc>...</nfeProc>
download
Baixar DANFE / DANFCE (PDF)
PDF do DANFE (NF-e) em /nfe/{id}/danfe ou do DANFCE (NFC-e) em /nfce/{id}/danfce.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfe/43/danfe" \ -H "Authorization: Bearer SUA_API_KEY"
(application/pdf)
Eventos
cancelar
Cancelar documento
Cancela NF-e ou NFC-e (/nfce/{id}/cancelamento).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
justificativa (15 a 255 caracteres)
nenhum
{
"justificativa": "Erro na digitacao do pedido"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfe/43/cancelamento" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"justificativa":"Erro na digitacao do pedido"}'
{
"success": true,
"status": "CANCELADA",
"protocolo": "135...",
"request_id": "req_..."
}
422 VALIDATION_ERROR— Justificativa fora do tamanho permitido.422 SEFAZ_REJECTION— Prazo ou situacao nao permite cancelar.
cce
Carta de correcao (CC-e)
A sequencia (1..20) e controlada pela API.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
correcao (15 a 1000 caracteres)
nenhum
{
"correcao": "Corrigir endereco de entrega para Rua B, 20"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfe/43/cce" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"correcao":"Corrigir endereco de entrega para Rua B, 20"}'
{
"success": true,
"sequencia": 1,
"request_id": "req_..."
}
422 SEFAZ_REJECTION— Correcao nao aceita pela SEFAZ.
inutilizar
Inutilizar numeracao
Inutiliza uma faixa de numeros nao utilizados.
Autenticacao: Bearer API Key
modelo (55|65)numero_inicialjustificativa
empresaserienumero_final
{
"empresa": "EMPRESA_001",
"modelo": 55,
"numero_inicial": 10,
"justificativa": "Numeracao pulada por falha de sistema"
}
JSON completo
{
"empresa": "EMPRESA_001",
"modelo": 55,
"serie": 1,
"numero_inicial": 10,
"numero_final": 12,
"justificativa": "Numeracao pulada por falha de sistema"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/inutilizacao" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa":"EMPRESA_001","modelo":55,"numero_inicial":10,"justificativa":"Numeracao pulada por falha de sistema"}'
{
"success": true,
"status": "HOMOLOGADA",
"protocolo": "135...",
"request_id": "req_..."
}
422 SEFAZ_REJECTION— Faixa ja utilizada ou invalida.
Configuracao Fiscal
consultar
Visao geral da configuracao fiscal
Status das 5 etapas (Emitente, Certificado, Natureza, Tributacao, IBS/CBS), percentual, pendencias, emitente e certificado (sem segredos). Query opcional: ?empresa=CODIGO (so entre as empresas da sua conta). Sem empresa cadastrada devolve 0% com a pendencia de emitente. Status por etapa: nao_configurado, incompleto, configurado, requer_atencao.
Autenticacao: Bearer API Key
nenhum
empresa (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"empresa": "EMPRESA_001",
"configuracao_fiscal_percentual": 75,
"pronta_para_emitir": false,
"etapas": {
"emitente": {
"ordem": 1,
"rotulo": "Emitente",
"status": "configurado",
"obrigatoria": true
},
"certificado": {
"ordem": 2,
"status": "nao_configurado"
},
"natureza": {
"ordem": 3,
"status": "configurado"
},
"tributacao": {
"ordem": 4,
"status": "configurado"
},
"iva": {
"ordem": 5,
"status": "nao_configurado",
"obrigatoria": false
}
},
"pendencias": [
"Certificado: certificado digital A1 da empresa nao cadastrado."
],
"emitente": {
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA",
"crt": 3
},
"certificado": {
"status": "ausente",
"valido": false
},
"totais": {
"naturezas": 1,
"regras_tributacao": 3,
"regras_iva": 0
},
"request_id": "req_..."
}
403 EMPRESA_NAO_AUTORIZADA— Empresa informada nao pertence a sua conta.
consultar
Validar se a empresa esta pronta para emitir
Executa o validador fiscal da configuracao. 200 quando pronta; 422 CONFIG_FISCAL_INCOMPLETA com a lista de pendencias em error.details.
Autenticacao: Bearer API Key
nenhum
empresa (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/validar" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": false,
"error": {
"code": "CONFIG_FISCAL_INCOMPLETA",
"message": "A configuracao fiscal esta incompleta.",
"details": [
"Certificado: certificado digital A1 da empresa nao cadastrado."
]
},
"configuracao_fiscal_percentual": 75,
"pronta_para_emitir": false,
"request_id": "req_..."
}
422 CONFIG_FISCAL_INCOMPLETA— Ha etapas pendentes.
consultar
Consultar dados do CNPJ
Busca razao social, fantasia, situacao cadastral, data de abertura, CNAE principal/secundarios, endereco, IBGE, UF (e cUF), telefone e e-mail (BrasilAPI e publica.cnpj.ws). NAO grava nada: o usuario revisa e confirma em POST/PUT /configuracao-fiscal/emitente. Cada campo vem com sua origem (AUTOMATICO, CALCULADO, SUGERIDO, CONFIRMACAO_OBRIGATORIA); o CRT e apenas sugestao e exige confirmacao. CFOP, CST, ICMS, PIS, COFINS, IBS, CBS e cClassTrib nunca sao inferidos do CNPJ.
Autenticacao: Bearer API Key
cnpj (14 digitos, com ou sem mascara)
nenhum
{
"cnpj": "12345678000195"
}
JSON completo
{
"cnpj": "12.345.678/0001-95"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/cnpj/consultar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cnpj":"12345678000195"}'
{
"success": true,
"dados": {
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA",
"nome_fantasia": "EXEMPLO",
"situacao_cadastral": "ATIVA",
"data_abertura": "2015-03-10",
"cnae": "4751201",
"cnaes_secundarios": [
"4753900"
],
"cep": "38700000",
"logradouro": "RUA DAS FLORES",
"numero": "100",
"bairro": "CENTRO",
"municipio": "PATOS DE MINAS",
"cod_municipio": "3148004",
"uf": "MG",
"cod_uf": 31,
"telefone": "3433334444",
"email": "contato@exemplo.com.br",
"crt": 1
},
"origem": {
"razao_social": "AUTOMATICO",
"cod_uf": "CALCULADO",
"crt": "CONFIRMACAO_OBRIGATORIA"
},
"fonte": "BrasilAPI / publica.cnpj.ws",
"avisos": [
"Inscricao estadual nao encontrada: informe-a manualmente (obrigatoria para emitir NF-e)."
],
"request_id": "req_..."
}
422 CNPJ_INVALIDO— Digitos verificadores invalidos.422 VALIDATION_ERROR— CNPJ nao informado.502 CNPJ_CONSULTA_INDISPONIVEL— Servicos de consulta indisponiveis; preencha manualmente.
configurar
Gerar configuracao fiscal automatica
A partir do CNPJ/UF e do CRT do emitente gera naturezas (VENDA, VENDA_CONSUMIDOR), regras de tributacao (CFOP, CSOSN/CST ICMS, PIS/COFINS, ICMS interno/interestadual) e a regra IBS/CBS de 2026. Sao sugestoes marcadas com [Auto] e prioridade 50: regras suas sempre prevalecem; nada e apagado nem duplicado. Tambem roda sozinha ao salvar o emitente (desligue com "config_automatica": false).
Autenticacao: Bearer API Key
nenhum
empresa (query)apuracao (presumido|real: so CRT 3, define PIS/COFINS 0,65/3,00 ou 1,65/7,60)
{}
JSON completo
{
"apuracao": "presumido"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/automatica" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
{
"success": true,
"crt": 1,
"regime": "Simples Nacional",
"criados": {
"naturezas": 2,
"tributacao": 3,
"iva": 1
},
"regras_automaticas_desativadas": 0,
"avisos": [
"IBS/CBS: gerada a regra de 2026 (ano de teste). Para 2027 em diante revise as aliquotas."
],
"configuracao_fiscal_percentual": 80,
"pronta_para_emitir": false,
"request_id": "req_..."
}
403 FORBIDDEN— A chave nao possui a permissao "configurar".
consultar
Consultar o emitente
Dados do emitente da empresa (sem CSC, tokens ou senha do certificado).
Autenticacao: Bearer API Key
nenhum
empresa (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/emitente" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"emitente": {
"codigo": "EMPRESA_001",
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA",
"crt": 3,
"regime_tributario": "Regime Normal (Lucro Presumido/Real)",
"uf": "MG",
"cod_uf": 31,
"origem_dados": {
"razao_social": "AUTOMATICO"
},
"confirmado_em": "2026-09-29 16:06:00"
},
"request_id": "req_..."
}
configurar
Criar o emitente (empresa da conta)
Cria a empresa vinculada ao usuario da API Key (NUNCA a um usuario_id enviado no corpo). A empresa nasce em HOMOLOGACAO. O envio equivale a confirmar os dados; se o CRT veio da consulta de CNPJ (origem CONFIRMACAO_OBRIGATORIA), envie "confirmar": true. Resposta 201.
Autenticacao: Bearer API Key
cnpjrazao_socialuf
nome_fantasiaieiestimcrt (1|2|3|4)cnaecnaes_secundarios[]ceplogradouronumerocomplementobairromunicipiocod_municipiotelefoneemailserie_nfeserie_nfcecsc_idcscexige_ibs_cbsorigem {campo: ORIGEM}confirmar
{
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA",
"uf": "MG"
}
JSON completo
{
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA",
"nome_fantasia": "EXEMPLO",
"ie": "0011223340000",
"crt": 3,
"cnae": "4751201",
"cep": "38700000",
"logradouro": "RUA DAS FLORES",
"numero": "100",
"bairro": "CENTRO",
"municipio": "PATOS DE MINAS",
"cod_municipio": "3148004",
"uf": "MG",
"telefone": "3433334444",
"email": "contato@exemplo.com.br",
"serie_nfe": 1,
"serie_nfce": 1,
"origem": {
"razao_social": "AUTOMATICO",
"crt": "CONFIRMACAO_OBRIGATORIA"
},
"confirmar": true
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/emitente" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cnpj":"12345678000195","razao_social":"EMPRESA EXEMPLO LTDA","uf":"MG"}'
{
"success": true,
"empresa": "EMPRESA_002",
"emitente": {
"cnpj": "12345678000195",
"razao_social": "EMPRESA EXEMPLO LTDA"
},
"request_id": "req_..."
}
422 VALIDATION_ERROR— Campos invalidos (error.errors[].field).403 EMITENTE_NAO_CONFIGURADO— Credencial sem usuario da plataforma: peca ao administrador.409 LIMITE_EMPRESAS— Limite de empresas atingido.
configurar
Atualizar / confirmar o emitente
Atualizacao parcial: so os campos enviados mudam. Registra valor anterior e novo na auditoria. O campo opcional "empresa" escolhe entre as empresas da sua conta.
Autenticacao: Bearer API Key
nenhum
mesmos campos de POST /configuracao-fiscal/emitenteempresa
{
"ie": "0011223340000",
"crt": 3
}
JSON completo
{
"ie": "0011223340000",
"crt": 3,
"exige_ibs_cbs": true
}curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/emitente" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"ie":"0011223340000","crt":3}'
{
"success": true,
"emitente": {
"razao_social": "EMPRESA EXEMPLO LTDA",
"ie": "0011223340000"
},
"status": {
"status": "configurado"
},
"request_id": "req_..."
}
422 VALIDATION_ERROR— Campos invalidos.403 EMPRESA_NAO_AUTORIZADA— Empresa de outra conta.
consultar
Situacao do certificado digital
Status (ausente, ok, vence_em_breve <= 30 dias, vencido, invalido), titular, emissor, numero de serie, CNPJ, validade e dias restantes. Nunca devolve a senha.
Autenticacao: Bearer API Key
nenhum
empresa (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/certificado" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"certificado": {
"status": "ok",
"valido": true,
"titular": "EMPRESA EXEMPLO LTDA:12345678000195",
"emissor": "AC Certisign RFB G5",
"numero_serie": "1274...",
"cnpj": "12345678000195",
"cnpj_confere_com_emitente": true,
"validade": "2027-03-01",
"dias_restantes": 153,
"problemas": [],
"codigos": []
},
"request_id": "req_..."
}
configurar
Enviar certificado digital A1 (.pfx/.p12)
JSON com o arquivo em base64 e a senha (ou multipart: campo "arquivo" e "senha"). Valida senha, validade e CNPJ (raiz do CNPJ do certificado = raiz do emitente). A senha e criptografada (AES-256-GCM) e nunca e devolvida nem registrada em log.
Autenticacao: Bearer API Key
arquivo_base64senha
empresa
{
"arquivo_base64": "MIIK...(.pfx em base64)",
"senha": "SENHA_DO_CERTIFICADO"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/certificado" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"arquivo_base64":"MIIK...(.pfx em base64)","senha":"SENHA_DO_CERTIFICADO"}'
{
"success": true,
"certificado": {
"status": "ok",
"valido": true,
"validade": "2027-03-01"
},
"aviso": null,
"request_id": "req_..."
}
422 CERTIFICADO_INVALIDO— Arquivo invalido ou senha incorreta.422 CERTIFICADO_VENCIDO— Certificado vencido.422 CERTIFICADO_DIVERGENTE— Certificado de outro CNPJ.422 VALIDATION_ERROR— Arquivo ou senha ausentes.
consultar
Historico de alteracoes da configuracao
Auditoria de emitente, certificado, natureza, tributacao e iva: usuario, acao, registro, valor anterior/novo, IP e data. Query: entidade, page, limit (max 100).
Autenticacao: Bearer API Key
nenhum
entidadepagelimitempresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/logs" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"items": [
{
"id": 10,
"acao": "atualizado",
"entidade": "natureza",
"registro_id": "3",
"valor_anterior": {
"descricao": "VENDA"
},
"valor_novo": {
"descricao": "VENDA DE MERCADORIA"
},
"ip": "203.0.113.10",
"criado_em": "2026-09-29 16:07:00"
}
],
"request_id": "req_..."
}
Naturezas de Operacao
consultar
Listar naturezas de operacao
Naturezas da sua empresa. Query: ativo=1|0, empresa.
Autenticacao: Bearer API Key
nenhum
ativoempresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/naturezas" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"items": [
{
"id": 3,
"codigo": "VENDA",
"descricao": "VENDA DE MERCADORIA",
"tipo_operacao": 1,
"finalidade": 1,
"padrao_nfe": 1,
"ativo": 1
}
],
"request_id": "req_..."
}
configurar
Criar natureza de operacao
Varias naturezas por empresa (venda, devolucao, remessa, bonificacao, transferencia...). Apenas uma natureza e a padrao por modelo (padrao_nfe / padrao_nfce). O CFOP da natureza e informativo: quem decide o CFOP e a regra tributaria. Resposta 201.
Autenticacao: Bearer API Key
codigodescricao (natOp, ate 60)
tipo_operacao (1 saida | 0 entrada)finalidade (1..4)operacao_internaoperacao_interestadualconsumidor_finalcontribuintecfopobservacoespadrao_nfepadrao_nfceativo
{
"codigo": "VENDA",
"descricao": "VENDA DE MERCADORIA"
}
JSON completo
{
"codigo": "DEVOL",
"descricao": "DEVOLUCAO DE VENDA",
"tipo_operacao": 0,
"finalidade": 4,
"cfop": "1202",
"padrao_nfe": false
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/naturezas" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"codigo":"VENDA","descricao":"VENDA DE MERCADORIA"}'
{
"success": true,
"item": {
"id": 3,
"codigo": "VENDA",
"descricao": "VENDA DE MERCADORIA"
},
"avisos": [],
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— Codigo ja existe na empresa.422 VALIDATION_ERROR— Campos invalidos.
consultar
Consultar natureza (PUT atualiza, DELETE desativa)
GET consulta; PUT /configuracao-fiscal/naturezas/{id} atualiza parcialmente (mesmos campos do POST, permissao configurar); DELETE apenas desativa (dados e historico preservados). Registro de outra empresa responde 404.
Autenticacao: Bearer API Key
Parametros de URL: {id} ID da natureza
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/naturezas/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"item": {
"id": 3,
"codigo": "VENDA"
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Inexistente ou de outra empresa.
Regras de Tributacao
consultar
Listar regras de tributacao
Regras da empresa, da mais prioritaria para a menos. Query: ativo, empresa.
Autenticacao: Bearer API Key
nenhum
ativoempresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/tributacao" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"items": [
{
"id": 12,
"descricao": "Interna geral",
"crt": 3,
"operacao": "interna",
"cfop": "5102",
"cst_icms": "00",
"aliq_icms": "18.0000",
"prioridade": 100,
"vigencia_inicio": null,
"vigencia_fim": null
}
],
"request_id": "req_..."
}
configurar
Criar regra de tributacao
Define CFOP e a tributacao (CSOSN ou CST de ICMS, aliquota, reducao de BC, PIS, COFINS) para os criterios informados; criterio em branco = qualquer. O Motor Tributario escolhe a regra vigente MAIS ESPECIFICA (mais criterios que casam), desempata por prioridade e devolve conflito se duas empatarem. A resposta traz avisos quando a regra conflita com outra ativa. Resposta 201.
Autenticacao: Bearer API Key
cfop
descricaoprioridadevigencia_iniciovigencia_fimmodelo (55|65)crt (1..4)natureza_idproduto_idncm (prefixo)cestcategoriaorigem (0..8)uf_origemuf_destinooperacao (interna|interestadual|exterior)tipo_destinatario (PF|PJ)consumidor_finalcontribuintecsosncst_icmsaliq_icmsred_bcaliq_cred_sncst_pisaliq_piscst_cofinsaliq_cofinsinf_cplativo
{
"cfop": "5102",
"crt": 3,
"operacao": "interna",
"cst_icms": "00",
"aliq_icms": 18,
"cst_pis": "01",
"aliq_pis": 1.65,
"cst_cofins": "01",
"aliq_cofins": 7.6
}
JSON completo
{
"descricao": "Camisetas - venda interna",
"prioridade": 100,
"vigencia_inicio": "2026-01-01",
"crt": 3,
"ncm": "6109",
"operacao": "interna",
"tipo_destinatario": "PF",
"cfop": "5102",
"cst_icms": "00",
"aliq_icms": 12,
"cst_pis": "01",
"aliq_pis": 1.65,
"cst_cofins": "01",
"aliq_cofins": 7.6
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/tributacao" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cfop":"5102","crt":3,"operacao":"interna","cst_icms":"00","aliq_icms":18,"cst_pis":"01","aliq_pis":1.65,"cst_cofins":"01","aliq_cofins":7.6}'
{
"success": true,
"item": {
"id": 12,
"cfop": "5102"
},
"avisos": [],
"request_id": "req_..."
}
422 VALIDATION_ERROR— CFOP ausente, aliquota fora de 0-100, UF/data invalida, natureza_id/produto_id de outra empresa...
consultar
Consultar regra (PUT atualiza, DELETE desativa)
GET consulta; PUT atualiza parcialmente; DELETE desativa (nunca apaga: documentos emitidos guardam a regra usada). Para mudar aliquotas ao longo do tempo, encerre a vigencia da regra antiga e crie outra.
Autenticacao: Bearer API Key
Parametros de URL: {id} ID da regra
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/tributacao/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"item": {
"id": 12
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Inexistente ou de outra empresa.
Regras IVA (IBS/CBS)
consultar
Listar regras IVA (IBS/CBS)
Regras de IBS/CBS/cClassTrib da empresa. Query: ativo, empresa.
Autenticacao: Bearer API Key
nenhum
ativoempresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/iva" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"items": [
{
"id": 5,
"ncm": "4444",
"cst": "000",
"cclasstrib": "000001",
"ibs_p_uf": "0.1000",
"ibs_p_mun": "0.0000",
"cbs_p": "0.9000",
"ativo": 1
}
],
"request_id": "req_..."
}
configurar
Criar regra IVA (IBS/CBS)
Define CST (3 digitos), cClassTrib (6 digitos) e aliquotas de IBS (UF e municipio) e CBS, com reducao de aliquota (gRed), diferimento (gDif), vigencia e criterios (produto, NCM, NBS, natureza, destinatario, UF, municipio, operacao). Integrada ao Motor Tributario: e resolvida junto com a tributacao tradicional pela data da operacao. Credito presumido e informativo (nao e emitido no XML). Resposta 201.
Autenticacao: Bearer API Key
cstcclasstrib
descricaoprioridadevigencia_iniciovigencia_fimmodelonatureza_idproduto_idncmnbscategoriauf_destinocod_municipio_destinooperacaoconsumidor_finalcontribuintetipo_destinatarioclassificacaoregime (regular|regime_especifico|tratamento_diferenciado)ibs_p_ufibs_p_muncbs_pred_aliq_ibs_ufred_aliq_ibs_munred_aliq_cbsdif_p_ibs_ufdif_p_ibs_mundif_p_cbscred_presumido_pinf_cplativo
{
"cst": "000",
"cclasstrib": "000001",
"ibs_p_uf": 0.1,
"ibs_p_mun": 0,
"cbs_p": 0.9
}
JSON completo
{
"descricao": "IBS/CBS - NCM 4444",
"vigencia_inicio": "2026-01-01",
"ncm": "4444",
"operacao": "interna",
"cst": "000",
"cclasstrib": "000001",
"classificacao": "Tributacao integral",
"regime": "regular",
"ibs_p_uf": 0.1,
"ibs_p_mun": 0,
"cbs_p": 0.9,
"red_aliq_cbs": 0,
"dif_p_cbs": 0
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/iva" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cst":"000","cclasstrib":"000001","ibs_p_uf":0.1,"ibs_p_mun":0,"cbs_p":0.9}'
{
"success": true,
"item": {
"id": 5,
"cst": "000",
"cclasstrib": "000001"
},
"avisos": [],
"request_id": "req_..."
}
422 VALIDATION_ERROR— CST/cClassTrib com tamanho invalido, aliquotas fora de 0-100, vigencia invalida.
consultar
Consultar regra IVA (PUT atualiza, DELETE desativa)
GET consulta; PUT atualiza parcialmente; DELETE desativa. Documentos ja emitidos mantem a regra IVA usada (snapshot).
Autenticacao: Bearer API Key
Parametros de URL: {id} ID da regra IVA
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/iva/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"item": {
"id": 5
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Inexistente ou de outra empresa.
Financeiro (creditos)
consultar
Situacao financeira
Saldo, precos por emissao e se ha creditos ilimitados ativos (concessao do administrador). Sempre da carteira do proprio usuario da chave.
Autenticacao: Bearer API Key
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/financeiro/status" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"credito_ilimitado": false,
"saldo": "37.50",
"saldo_baixo": false,
"alerta_saldo": "10.00",
"precos": {
"NFE": "1.50",
"NFCE": "0.75"
},
"moeda": "BRL",
"request_id": "req_..."
}
403 CARTEIRA_INDISPONIVEL— Credencial sem carteira.
consultar
Saldo
Saldo atual da carteira (valores em BRL, string decimal). Com creditos ilimitados o saldo e preservado, mas nao e consumido.
Autenticacao: Bearer API Key
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/financeiro/saldo" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"saldo": "37.50",
"credito_ilimitado": false,
"moeda": "BRL",
"request_id": "req_..."
}
consultar
Extrato
Movimentacoes da carteira (ledger), da mais recente para a mais antiga. Query: pagina, por_pagina (ate 100), de/ate (AAAA-MM-DD), tipo (CREDITO_COMPRA, CREDITO_ADMIN, DEBITO_EMISSAO, ESTORNO, AJUSTE_ADMIN, REEMBOLSO). valor negativo = saida.
Autenticacao: Bearer API Key
nenhum
paginapor_paginadeatetipo
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/financeiro/extrato" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"saldo": "37.50",
"pagina": 1,
"por_pagina": 20,
"total": 1,
"movimentacoes": [
{
"id": 10,
"tipo": "DEBITO_EMISSAO",
"valor": "-1.50",
"saldo_anterior": "39.00",
"saldo_posterior": "37.50",
"tipo_documento": "NFE",
"documento_id": 43,
"pagamento_id": null,
"referencia": "emissao:...",
"descricao": "Emissao NFE - pedido PED-1",
"data": "2026-01-01 10:00:00"
}
],
"request_id": "req_..."
}
Fiscal Engine
preview
Calcular (Motor Tributario, sem emitir)
Executa o Motor Tributario Central para qualquer documento (NFE, NFCE, NFSE, CTE, MDFE) e contexto, SEM emitir, cobrar ou falar com SEFAZ/Sistema Nacional. "operacao" e o mesmo JSON minimo da emissao (NF-e/NFC-e dispensam o pagamento). Devolve taxes, classifications, rules_used (fonte/versao/vigencia), warnings, confidence_score e requires_review. A legislacao e escolhida pela data da operacao (data_operacao, apenas para simulacao). Query ?explain=true devolve o passo a passo de cada decisao (tributo, base, aliquota, valor, regra, fonte, versao, motivo).
Autenticacao: Bearer API Key
documento (NFE|NFCE|NFSE|CTE|CTEOS|MDFE)operacao {}
empresa_id | empresacontexto (PRODUTOR_RURAL)operacao.data_operacao (simulacao)
{
"empresa_id": 25,
"documento": "NFSE",
"operacao": {
"empresa_id": 25,
"pedido": "SERV-0001",
"tomador": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"codigo": "CONS01",
"valor": 1500
}
}
}
JSON completo
{
"empresa_id": 25,
"documento": "NFE",
"contexto": "PRODUTOR_RURAL",
"operacao": {
"pedido": "RURAL-0001",
"operacao": "venda",
"propriedade": "FAZ01",
"cliente": "CLIMG",
"itens": [
{
"codigo": "CAFE01",
"quantidade": 100
}
]
}
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/fiscal/calcular" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"documento":"NFSE","operacao":{"empresa_id":25,"pedido":"SERV-0001","tomador":{"cpf_cnpj":"12345678909","nome":"Joao da Silva","email":"joao@exemplo.com","endereco":{"logradouro":"Rua A","numero":"10","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"codigo":"CONS01","valor":1500}}}'
{
"success": true,
"document": "NFSE",
"taxes": {
"iss": {
"tipo": "tributavel",
"base": 1500,
"rate": 2.5,
"valor": 37.5
}
},
"classifications": {
"cTribNac": "010701",
"municipio_incidencia": "3148004",
"tpRetISSQN": 1
},
"rules_used": [
{
"rule_id": 81,
"tipo": "ISS",
"versao": "2026.1",
"fonte": "Lei Complementar Municipal ...",
"vigencia_inicio": "2026-01-01"
}
],
"warnings": [],
"confidence_score": 0.95,
"requires_review": false,
"request_id": "req_..."
}
422 VALIDATION_ERROR— Dados invalidos da operacao.501 NFF_NAO_DISPONIVEL— documento NFF: arquitetura preparada, integracao oficial ainda nao implementada.
preview
Validar (dry-run)
Dry-run completo: o mesmo calculo de /fiscal/calcular + validacao do documento (DPS/XML no leiaute oficial) + consistencia. Sem SEFAZ/Sistema Nacional, sem cobranca, sem emissao. Retorna valid e ready_to_issue (false quando requires_review ou o leiaute reprova).
Autenticacao: Bearer API Key
documentooperacao {}
empresa_id | empresacontexto
{
"empresa_id": 25,
"documento": "CTE",
"operacao": {
"empresa_id": 25,
"pedido": "FRETE-0001",
"tomador": "destinatario",
"remetente": {
"cpf_cnpj": "33000167000101",
"nome": "Remetente Industria Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"destinatario": {
"cpf_cnpj": "00000000000191",
"nome": "Destinatario Comercio SA",
"ie": "110042490114",
"endereco": {
"logradouro": "Av. B",
"numero": "200",
"bairro": "Se",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"valor_prestacao": 1000,
"carga": {
"valor": 50000,
"produto": "Tubos plasticos",
"peso_kg": 18145
},
"documentos": [
"31260960701190000104550010000001231123456789"
],
"fiscal": {
"tipo_estabelecimento_tomador": "comercial"
}
}
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/fiscal/validate" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"documento":"CTE","operacao":{"empresa_id":25,"pedido":"FRETE-0001","tomador":"destinatario","remetente":{"cpf_cnpj":"33000167000101","nome":"Remetente Industria Ltda","ie":"9057800426","endereco":{"logradouro":"Rua A","numero":"1","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"destinatario":{"cpf_cnpj":"00000000000191","nome":"Destinatario Comercio SA","ie":"110042490114","endereco":{"logradouro":"Av. B","numero":"200","bairro":"Se","cod_municipio":"3550308","municipio":"Sao Paulo","uf":"SP","cep":"01001000"}},"valor_prestacao":1000,"carga":{"valor":50000,"produto":"Tubos plasticos","peso_kg":18145},"documentos":["31260960701190000104550010000001231123456789"],"fiscal":{"tipo_estabelecimento_tomador":"comercial"}}}'
{
"success": true,
"document": "CTE",
"valid": true,
"ready_to_issue": true,
"xml_validado": true,
"leiaute": "PL_CTe_400",
"taxes": {
"icms": {
"cst": "00",
"rate": 12,
"valor": 120
}
},
"confidence_score": 0.9,
"requires_review": false,
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Configuracao pendente: error.missing.
consultar
Listar regras da base tributaria versionada
Regras da empresa e globais da plataforma (somente leitura). Query: tipo (ISS, ISS_RETENCAO, RETENCAO_FEDERAL, MUNICIPIO_INCIDENCIA, ICMS_TRANSPORTE, RURAL_ICMS, RURAL_BENEFICIO, CFOP_OPERACAO, IBS_CBS), empresa.
Autenticacao: Bearer API Key
nenhum
tipoempresa (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/regras-base" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 81,
"config_id": 25,
"tipo": "ISS",
"criterios": {
"municipio_ibge": "3148004"
},
"resultado": {
"aliquota": 2.5
},
"vigencia_inicio": "2026-01-01",
"vigencia_fim": null,
"versao": "2026.1",
"fonte": "Lei Complementar Municipal ..."
}
],
"request_id": "req_..."
}
configurar
Cadastrar regra da base tributaria
Toda regra exige tipo, criterios (casamento: igualdade, *_prefixo, *_in), resultado, vigencia_inicio, versao e FONTE (norma/fundamento). Beneficios (RURAL_ICMS diferente de NORMAL, RURAL_BENEFICIO) exigem resultado.fundamento. A aliquota/beneficio nunca e presumido pela plataforma. Alteracoes sao auditadas.
Autenticacao: Bearer API Key
tipocriterios {}resultado {}vigencia_inicioversaofonte
vigencia_fimdescricaoreferenciaprioridadeconfianca (0..1)empresa_id
{
"empresa_id": 25,
"tipo": "ISS",
"criterios": {
"municipio_ibge": "3148004",
"lc116_prefixo": "01"
},
"resultado": {
"aliquota": 2.5
},
"vigencia_inicio": "2026-01-01",
"versao": "2026.1",
"fonte": "Lei Complementar Municipal ..."
}
JSON completo
{
"empresa_id": 25,
"tipo": "RURAL_ICMS",
"criterios": {
"uf_origem": "MG",
"produto_classe": "cafe",
"operacao": "venda",
"operacao_geo": "interna"
},
"resultado": {
"situacao": "DIFERIMENTO",
"cst": "51",
"p_dif": 100,
"fundamento": "Art. ... do RICMS/MG"
},
"vigencia_inicio": "2026-01-01",
"versao": "2026.1",
"fonte": "RICMS/MG",
"referencia": "URL ou citacao"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/regras-base" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"tipo":"ISS","criterios":{"municipio_ibge":"3148004","lc116_prefixo":"01"},"resultado":{"aliquota":2.5},"vigencia_inicio":"2026-01-01","versao":"2026.1","fonte":"Lei Complementar Municipal ..."}'
{
"success": true,
"id": 81,
"tipo": "ISS",
"request_id": "req_..."
}
422 VALIDATION_ERROR— Fonte/vigencia/criterio/resultado invalidos.
consultar
Consultar regra
Regra da empresa ou global.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/regras-base/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 81,
"tipo": "ISS",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Regra inexistente.
configurar
Alterar regra da empresa
Somente regras da propria empresa (as globais sao da plataforma). Emissoes ja feitas NAO mudam (snapshot imutavel).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
campos da criacao
{
"resultado": {
"aliquota": 3
},
"fonte": "Lei Complementar Municipal ..."
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/regras-base/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"resultado":{"aliquota":3},"fonte":"Lei Complementar Municipal ..."}'
{
"success": true,
"id": 81,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Regra da empresa inexistente.
configurar
Desativar regra da empresa
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/configuracao-fiscal/regras-base/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 81,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Regra da empresa inexistente.
NFS-e
nfse:write
Emitir NFS-e Nacional
JSON minimo: pedido, tomador e servico (cadastrado em /servicos ou inline com descricao, c_trib_nac e valor). A API monta a DPS, o Motor Tributario determina ISS (aliquota pela base versionada da data da operacao), retencoes, municipio de incidencia e classificacao, assina e envia ao Sistema Nacional da NFS-e (mTLS com o certificado A1 da empresa). Sem aliquota/regra vigente NAO emite (422). Idempotente (pedido e Idempotency-Key). Dependencias externas: certificado ICP-Brasil valido, convenio do municipio com o Sistema Nacional e XSD oficial (opcional) em storage/schemas/nfse.
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios.
pedidoservico.codigo OU (servico.descricao + servico.c_trib_nac + servico.valor)
empresa_id | empresatomador {cpf_cnpj, nome, email, endereco}competenciadescontoobservacoesservico.valor/lc116/nbs/cnae/local_prestacaoservico.aliquota_iss e servico.iss_retido (OVERRIDE: exigem permissao override + override_motivo)aceitar_revisao (requer override)
{
"empresa_id": 25,
"pedido": "SERV-0001",
"tomador": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"codigo": "CONS01",
"valor": 1500
}
}
JSON completo
{
"empresa_id": 25,
"pedido": "SERV-0001",
"tomador": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"codigo": "CONS01",
"valor": 1500
},
"competencia": "2026-03-10",
"observacoes": "Referente ao contrato 123"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfse" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"SERV-0001","tomador":{"cpf_cnpj":"12345678909","nome":"Joao da Silva","email":"joao@exemplo.com","endereco":{"logradouro":"Rua A","numero":"10","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"codigo":"CONS01","valor":1500}}'
{
"success": true,
"id": "12",
"status": "AUTORIZADA",
"chave_acesso": "3148004221...(50 posicoes)",
"numero_nfse": "1",
"valor_servicos": 1500,
"valor_iss": 37.5,
"links": {
"xml": "/api/v1/nfse/12/xml",
"danfse": "/api/v1/nfse/12/danfse"
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Falta configuracao fiscal (regra, certificado, emitente...): error.missing e error.motivos.422 REVISAO_FISCAL_NECESSARIA— A tributacao nao pode ser determinada com seguranca (confidence_score baixo / requires_review).422 IDEMPOTENCY_KEY_REUSED— Mesmo pedido/Idempotency-Key com conteudo diferente.402 SALDO_INSUFICIENTE— Saldo de creditos insuficiente.
nfse:write
Preview da NFS-e (nao emite, nao cobra)
Mesmo JSON da emissao. Calcula, classifica, valida a DPS e explica. Nao transmite, nao cobra, nao gera documento. Query ?explain=true devolve o passo a passo de cada decisao (tributo, base, aliquota, valor, regra, fonte, versao, motivo).
Autenticacao: Bearer API Key
pedido (opcional no preview)servicotomador
data_operacao (simulacao)
{
"empresa_id": 25,
"pedido": "SERV-0001",
"tomador": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"email": "joao@exemplo.com",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"codigo": "CONS01",
"valor": 1500
}
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfse/preview" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"SERV-0001","tomador":{"cpf_cnpj":"12345678909","nome":"Joao da Silva","email":"joao@exemplo.com","endereco":{"logradouro":"Rua A","numero":"10","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"codigo":"CONS01","valor":1500}}'
{
"success": true,
"ready_to_issue": true,
"document": "NFSE",
"taxes": {
"iss": {
"valor": 37.5,
"rate": 2.5
}
},
"classifications": {
"cTribNac": "010701"
},
"confidence_score": 0.95,
"requires_review": false,
"dps_validacao": [],
"request_id": "req_..."
}
422 VALIDATION_ERROR— Servico/tomador invalidos.
nfse:read
Listar NFS-e
Query: status, pedido, empresa_id, pagina, por_pagina (ate 100). Somente documentos das empresas da credencial.
Autenticacao: Bearer API Key
nenhum
statuspedidoempresa_idpaginapor_pagina
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfse" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"id": "12",
"status": "AUTORIZADA",
"chave_acesso": "...",
"valor_servicos": 1500
}
],
"request_id": "req_..."
}
nfse:read
Consultar NFS-e
Status, chave de acesso, valores, eventos e links. NFS-e PROCESSANDO (resposta incerta) e reconciliada consultando a DPS no Sistema Nacional.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfse/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": "12",
"status": "AUTORIZADA",
"chave_acesso": "3148004221...(50 posicoes)",
"numero_nfse": "1",
"valor_servicos": 1500,
"valor_iss": 37.5,
"links": {
"xml": "/api/v1/nfse/12/xml",
"danfse": "/api/v1/nfse/12/danfse"
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
nfse:write
Cancelar NFS-e
Registra o evento de cancelamento (e101101) no Sistema Nacional. Prazos e regras sao do municipio/Sistema Nacional.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
justificativa (15 a 255 caracteres)
codigo_motivo (1 erro na emissao, 2 servico nao prestado, 9 outros; padrao 9)
{
"justificativa": "Cancelamento por erro na emissao do servico",
"codigo_motivo": 1
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfse/43/cancelar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"justificativa":"Cancelamento por erro na emissao do servico","codigo_motivo":1}'
{
"success": true,
"id": "12",
"status": "CANCELADA",
"request_id": "req_..."
}
422 NFSE_CANCEL_REJECTION— Cancelamento rejeitado pelo Sistema Nacional.409 STATUS_INVALIDO— Somente NFS-e AUTORIZADA pode ser cancelada.
nfse:read
Baixar XML da NFS-e
XML da NFS-e autorizada devolvido pelo Sistema Nacional (referencia principal, armazenado como recebido).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfse/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<NFSe>...</NFSe>
409 XML_INDISPONIVEL— NFS-e ainda sem XML autorizado.
nfse:read
Baixar DANFSe (PDF)
DANFSe nacional gerado localmente a partir do XML autorizado armazenado (sped-da, NT 008). O PDF nao substitui o documento eletronico.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/nfse/43/danfse" \ -H "Authorization: Bearer SUA_API_KEY"
(application/pdf)
409 DOCUMENTO_NAO_AUTORIZADO— So existe para NFS-e autorizada.
nfse:read
Listar servicos cadastrados
Servicos fiscais da empresa (LC 116, cTribNac, NBS, CNAE, preco e, opcionalmente, aliquota/retencao de ISS).
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/servicos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 1,
"codigo": "CONS01",
"c_trib_nac": "010701"
}
],
"request_id": "req_..."
}
nfse:write
Cadastrar servico
c_trib_nac (6 digitos) identifica o servico no padrao nacional. aliquota_iss/iss_retido sao CONFIGURACAO (cadastro); sem eles o Motor usa a base versionada.
Autenticacao: Bearer API Key
codigodescricao
empresa_idlc116 (NN.NN)c_trib_nacc_trib_munnbscnaeprecoaliquota_ississ_retidomunicipio_incidencia
{
"empresa_id": 25,
"codigo": "CONS01",
"descricao": "Consultoria em tecnologia da informacao",
"lc116": "01.07",
"c_trib_nac": "010701",
"nbs": "115090000",
"preco": 1500
}
JSON completo
{
"empresa_id": 25,
"codigo": "CONS01",
"descricao": "Consultoria em tecnologia da informacao",
"lc116": "01.07",
"c_trib_nac": "010701",
"nbs": "115090000",
"cnae": "6204000",
"preco": 1500,
"iss_retido": 0
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/servicos" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"codigo":"CONS01","descricao":"Consultoria em tecnologia da informacao","lc116":"01.07","c_trib_nac":"010701","nbs":"115090000","preco":1500}'
{
"success": true,
"id": 1,
"codigo": "CONS01",
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— Codigo ja existe.
nfse:read
Consultar servico
Servico da empresa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/servicos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"codigo": "CONS01",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Servico inexistente.
nfse:write
Alterar servico
Atualiza campos informados (auditado).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
campos do cadastro
{
"preco": 1600
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/servicos/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"preco":1600}'
{
"success": true,
"id": 1,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Servico inexistente.
nfse:write
Desativar servico
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/servicos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Servico inexistente.
CT-e
cte:write
Emitir CT-e (modelo 57, rodoviario)
JSON simplificado: tomador (papel ou terceiro), remetente, destinatario (codigo de cliente cadastrado ou dados), valor da prestacao, carga e chaves das NF-e transportadas. O Motor Tributario determina o ICMS do transporte (base ICMS_TRANSPORTE da data da operacao; Simples Nacional usa ICMSSN), o CFOP e, se ha regra vigente, o IBS/CBS (leiaute 4.00 com IBS/CBS). O CFOP sai da base pelo tipo de estabelecimento do tomador (fiscal.tipo_estabelecimento_tomador) ou e declarado em fiscal.cfop. XML gerado com sped-cte, validado no XSD 4.00, enviado a SEFAZ; o XML autorizado (cteProc) e a referencia. Pre-requisitos: RNTRC e IE do emitente, certificado A1, credenciamento do emitente como transportador na SEFAZ da UF.
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios.
pedidotomador (remetente|expedidor|recebedor|destinatario ou objeto)remetentedestinatariovalor_prestacaocarga {valor, produto, peso_kg|quantidades}documentos [chaves NF-e]
empresa_id | empresaexpedidorrecebedororigem/destino {cod_municipio, municipio, uf} (padrao: enderecos de remetente/destinatario)componentes [{nome, valor}]fiscal {tipo_estabelecimento_tomador: mesma_natureza|industrial|comercial|comunicacao|energia|produtor_rural, cfop}natureza_operacaoobservacoesdata_operacao
{
"empresa_id": 25,
"pedido": "FRETE-0001",
"tomador": "destinatario",
"remetente": {
"cpf_cnpj": "33000167000101",
"nome": "Remetente Industria Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"destinatario": {
"cpf_cnpj": "00000000000191",
"nome": "Destinatario Comercio SA",
"ie": "110042490114",
"endereco": {
"logradouro": "Av. B",
"numero": "200",
"bairro": "Se",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"valor_prestacao": 1000,
"carga": {
"valor": 50000,
"produto": "Tubos plasticos",
"peso_kg": 18145
},
"documentos": [
"31260960701190000104550010000001231123456789"
],
"fiscal": {
"tipo_estabelecimento_tomador": "comercial"
}
}
JSON completo
{
"empresa_id": 25,
"pedido": "FRETE-0001",
"tomador": "destinatario",
"remetente": {
"cpf_cnpj": "33000167000101",
"nome": "Remetente Industria Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"destinatario": {
"cpf_cnpj": "00000000000191",
"nome": "Destinatario Comercio SA",
"ie": "110042490114",
"endereco": {
"logradouro": "Av. B",
"numero": "200",
"bairro": "Se",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"valor_prestacao": 1000,
"carga": {
"valor": 50000,
"produto": "Tubos plasticos",
"peso_kg": 18145
},
"documentos": [
"31260960701190000104550010000001231123456789"
],
"fiscal": {
"tipo_estabelecimento_tomador": "comercial"
},
"componentes": [
{
"nome": "FRETE VALOR",
"valor": 1000
}
],
"observacoes": "Entrega agendada"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cte" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"FRETE-0001","tomador":"destinatario","remetente":{"cpf_cnpj":"33000167000101","nome":"Remetente Industria Ltda","ie":"9057800426","endereco":{"logradouro":"Rua A","numero":"1","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"destinatario":{"cpf_cnpj":"00000000000191","nome":"Destinatario Comercio SA","ie":"110042490114","endereco":{"logradouro":"Av. B","numero":"200","bairro":"Se","cod_municipio":"3550308","municipio":"Sao Paulo","uf":"SP","cep":"01001000"}},"valor_prestacao":1000,"carga":{"valor":50000,"produto":"Tubos plasticos","peso_kg":18145},"documentos":["31260960701190000104550010000001231123456789"],"fiscal":{"tipo_estabelecimento_tomador":"comercial"}}'
{
"success": true,
"id": "7",
"status": "AUTORIZADA",
"chave": "31260...57...(44)",
"protocolo": "131000000000001",
"cfop": "6353",
"valor_prestacao": 1000,
"links": {
"xml": "/api/v1/cte/7/xml",
"dacte": "/api/v1/cte/7/dacte"
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Falta configuracao fiscal (regra, certificado, emitente...): error.missing e error.motivos.422 REVISAO_FISCAL_NECESSARIA— A tributacao nao pode ser determinada com seguranca (confidence_score baixo / requires_review).422 IDEMPOTENCY_KEY_REUSED— Mesmo pedido/Idempotency-Key com conteudo diferente.402 SALDO_INSUFICIENTE— Saldo de creditos insuficiente.
cte:write
Preview do CT-e (nao emite, nao cobra)
Calcula ICMS/CFOP/IBS-CBS, valida o XML no leiaute oficial e explica. Nao transmite nem cobra. Query ?explain=true devolve o passo a passo de cada decisao (tributo, base, aliquota, valor, regra, fonte, versao, motivo).
Autenticacao: Bearer API Key
(mesmos da emissao)
nenhum
{
"empresa_id": 25,
"pedido": "FRETE-0001",
"tomador": "destinatario",
"remetente": {
"cpf_cnpj": "33000167000101",
"nome": "Remetente Industria Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"destinatario": {
"cpf_cnpj": "00000000000191",
"nome": "Destinatario Comercio SA",
"ie": "110042490114",
"endereco": {
"logradouro": "Av. B",
"numero": "200",
"bairro": "Se",
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"cep": "01001000"
}
},
"valor_prestacao": 1000,
"carga": {
"valor": 50000,
"produto": "Tubos plasticos",
"peso_kg": 18145
},
"documentos": [
"31260960701190000104550010000001231123456789"
],
"fiscal": {
"tipo_estabelecimento_tomador": "comercial"
}
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cte/preview" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"FRETE-0001","tomador":"destinatario","remetente":{"cpf_cnpj":"33000167000101","nome":"Remetente Industria Ltda","ie":"9057800426","endereco":{"logradouro":"Rua A","numero":"1","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"destinatario":{"cpf_cnpj":"00000000000191","nome":"Destinatario Comercio SA","ie":"110042490114","endereco":{"logradouro":"Av. B","numero":"200","bairro":"Se","cod_municipio":"3550308","municipio":"Sao Paulo","uf":"SP","cep":"01001000"}},"valor_prestacao":1000,"carga":{"valor":50000,"produto":"Tubos plasticos","peso_kg":18145},"documentos":["31260960701190000104550010000001231123456789"],"fiscal":{"tipo_estabelecimento_tomador":"comercial"}}'
{
"success": true,
"ready_to_issue": true,
"document": "CTE",
"taxes": {
"icms": {
"cst": "00",
"valor": 120
}
},
"classifications": {
"cfop": "6353",
"cst": "00"
},
"xml_validado": true,
"leiaute": "PL_CTe_400",
"confidence_score": 0.9,
"requires_review": false,
"request_id": "req_..."
}
422 VALIDATION_ERROR— Dados invalidos.
cte:read
Listar CT-e
Query: status, pedido, empresa_id, pagina, por_pagina.
Autenticacao: Bearer API Key
nenhum
statuspedidoempresa_idpaginapor_pagina
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cte" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"id": "7",
"status": "AUTORIZADA"
}
],
"request_id": "req_..."
}
cte:read
Consultar CT-e
Status, chave, protocolo, eventos e links. CT-e PENDENTE e reconciliado por consulta da chave na SEFAZ.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cte/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": "7",
"status": "AUTORIZADA",
"chave": "31260...57...(44)",
"protocolo": "131000000000001",
"cfop": "6353",
"valor_prestacao": 1000,
"links": {
"xml": "/api/v1/cte/7/xml",
"dacte": "/api/v1/cte/7/dacte"
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
cte:write
Cancelar CT-e
Evento de cancelamento (110111).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
justificativa (15 a 255)
nenhum
{
"justificativa": "Cancelamento por erro de digitacao no valor"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cte/43/cancelar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"justificativa":"Cancelamento por erro de digitacao no valor"}'
{
"success": true,
"status": "CANCELADA",
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Evento rejeitado pela SEFAZ.409 STATUS_INVALIDO— Somente CT-e AUTORIZADO.
cte:write
Carta de Correcao (CC-e)
Evento 110110 com correcoes [{grupo, campo, valor}]. Nao pode alterar valores, tomador, CFOP etc. (regra da SEFAZ). Sequencia controlada pela API.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
correcoes [{grupo, campo, valor, numero_item?}]
nenhum
{
"correcoes": [
{
"grupo": "compl",
"campo": "xObs",
"valor": "Observacao corrigida"
}
]
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cte/43/cce" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"correcoes":[{"grupo":"compl","campo":"xObs","valor":"Observacao corrigida"}]}'
{
"success": true,
"eventos": [
{
"tipo": "CCE",
"sequencia": 1,
"status": "REGISTRADO"
}
],
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Correcao nao aceita.
cte:write
Prestacao de servico em desacordo
Evento 610110 (desacordo do tomador).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
observacao (15 a 255)
nenhum
{
"observacao": "Prestacao do servico em desacordo com o contratado"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cte/43/desacordo" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"observacao":"Prestacao do servico em desacordo com o contratado"}'
{
"success": true,
"eventos": [
{
"tipo": "DESACORDO",
"status": "REGISTRADO"
}
],
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Evento nao aceito.
cte:read
Baixar XML do CT-e
cteProc (XML autorizado + protocolo + eventos de cancelamento), referencia principal.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cte/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<cteProc>...</cteProc>
409 XML_INDISPONIVEL— Sem XML autorizado.
cte:read
Baixar DACTE (PDF)
DACTE gerado a partir do XML autorizado armazenado (sped-da).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cte/43/dacte" \ -H "Authorization: Bearer SUA_API_KEY"
(application/pdf)
409 DOCUMENTO_SEM_PROTOCOLO— CT-e sem protocolo.
CT-e OS
cteos:write
Emitir CT-e OS (modelo 67, transporte de pessoas, valores e excesso de bagagem)
JSON simplificado: tomador (codigo de cliente cadastrado ou dados), servico {tipo: transporte_pessoas | transporte_valores | excesso_bagagem, descricao, quantidade}, origem e destino {cod_municipio, municipio, uf}, valor da prestacao e, opcionalmente, percurso (UFs), veiculo, fretamento e documentos referenciados. O Motor Tributario determina o ICMS do transporte (base ICMS_TRANSPORTE da data da operacao; criterio documento = CTEOS restringe a regra ao CT-e OS; Simples Nacional usa ICMSSN) e, se ha regra vigente, o IBS/CBS (leiaute 4.00 com IBS/CBS). O CFOP NAO e adivinhado: vem de regra CFOP_OPERACAO cadastrada para o documento CTEOS ou e declarado em fiscal.cfop. XML gerado com sped-cte (CTeOS), validado no XSD cteOS 4.00, enviado a SEFAZ SEMPRE de forma unitaria; o XML autorizado (cteOSProc) e a referencia. Modal rodoviario OS: TAF (12 digitos) ou numero do Registro Estadual (25 digitos) do transportador, configurado na empresa (taf_cteos | reg_estadual_cteos) ou informado em transporte. Pre-requisitos: IE e endereco do emitente, certificado A1, modulo cteos habilitado e autorizacao do emitente para transporte de passageiros/valores.
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios. Prefer: respond-async: processa pela fila fiscal.
pedidotomador (codigo de cliente ou {cpf_cnpj, nome, endereco})servico {tipo, descricao (ate 30 caracteres), quantidade?}origem {cod_municipio, municipio, uf}destino {cod_municipio, municipio, uf}valor_prestacao
empresa_id | empresapercurso [UFs] (ate 25)veiculo (placa ou {placa, renavam, uf, proprietario {cpf_cnpj, nome, tipo 0|1|2, taf|nro_reg_estadual, ie, uf}})fretamento {tipo: eventual|continuo, data_viagem}transporte {taf | nro_reg_estadual} (substitui o padrao da empresa)documentos_referenciados [{numero, serie, subserie, data, valor} | {chave_bpe}]componentes [{nome, valor}]fiscal {cfop, tipo_estabelecimento_tomador}natureza_operacaoobservacoesdata_operacao
{
"empresa_id": 25,
"pedido": "OS-0001",
"tomador": {
"cpf_cnpj": "33000167000101",
"nome": "Empresa de Turismo Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"tipo": "transporte_pessoas",
"descricao": "Fretamento para evento",
"quantidade": 40
},
"origem": {
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG"
},
"destino": {
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP"
},
"valor_prestacao": 1500,
"fiscal": {
"cfop": "6357"
}
}
JSON completo
{
"empresa_id": 25,
"pedido": "OS-0001",
"tomador": {
"cpf_cnpj": "33000167000101",
"nome": "Empresa de Turismo Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"tipo": "transporte_pessoas",
"descricao": "Fretamento para evento",
"quantidade": 40
},
"origem": {
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG"
},
"destino": {
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP"
},
"valor_prestacao": 1500,
"fiscal": {
"cfop": "6357"
},
"percurso": [
"MG",
"SP"
],
"veiculo": {
"placa": "ABC1D23",
"renavam": "01093538977",
"uf": "MG"
},
"fretamento": {
"tipo": "eventual",
"data_viagem": "2026-11-10T08:00:00"
},
"documentos_referenciados": [
{
"numero": "123",
"serie": "1",
"data": "2026-10-01",
"valor": 1500
}
],
"observacoes": "Viagem de ida e volta"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cteos" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"OS-0001","tomador":{"cpf_cnpj":"33000167000101","nome":"Empresa de Turismo Ltda","ie":"9057800426","endereco":{"logradouro":"Rua A","numero":"1","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"tipo":"transporte_pessoas","descricao":"Fretamento para evento","quantidade":40},"origem":{"cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG"},"destino":{"cod_municipio":"3550308","municipio":"Sao Paulo","uf":"SP"},"valor_prestacao":1500,"fiscal":{"cfop":"6357"}}'
{
"success": true,
"id": "5",
"status": "AUTORIZADA",
"chave": "31261...67...(44)",
"protocolo": "131000000000003",
"cfop": "6357",
"tipo_servico": "transporte_pessoas",
"valor_prestacao": 1500,
"links": {
"xml": "/api/v1/cteos/5/xml",
"dacte": "/api/v1/cteos/5/dacte"
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Falta configuracao fiscal (regra, certificado, emitente...): error.missing e error.motivos.422 REVISAO_FISCAL_NECESSARIA— A tributacao nao pode ser determinada com seguranca (confidence_score baixo / requires_review).422 IDEMPOTENCY_KEY_REUSED— Mesmo pedido/Idempotency-Key com conteudo diferente.402 SALDO_INSUFICIENTE— Saldo de creditos insuficiente.
cteos:write
Preview do CT-e OS (nao emite, nao cobra)
Calcula ICMS/CFOP/IBS-CBS, valida o XML no leiaute oficial e explica. Nao transmite nem cobra. Query ?explain=true devolve o passo a passo de cada decisao (tributo, base, aliquota, valor, regra, fonte, versao, motivo).
Autenticacao: Bearer API Key
(mesmos da emissao)
nenhum
{
"empresa_id": 25,
"pedido": "OS-0001",
"tomador": {
"cpf_cnpj": "33000167000101",
"nome": "Empresa de Turismo Ltda",
"ie": "9057800426",
"endereco": {
"logradouro": "Rua A",
"numero": "1",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"tipo": "transporte_pessoas",
"descricao": "Fretamento para evento",
"quantidade": 40
},
"origem": {
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG"
},
"destino": {
"cod_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP"
},
"valor_prestacao": 1500,
"fiscal": {
"cfop": "6357"
}
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cteos/preview" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"OS-0001","tomador":{"cpf_cnpj":"33000167000101","nome":"Empresa de Turismo Ltda","ie":"9057800426","endereco":{"logradouro":"Rua A","numero":"1","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"tipo":"transporte_pessoas","descricao":"Fretamento para evento","quantidade":40},"origem":{"cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG"},"destino":{"cod_municipio":"3550308","municipio":"Sao Paulo","uf":"SP"},"valor_prestacao":1500,"fiscal":{"cfop":"6357"}}'
{
"success": true,
"ready_to_issue": true,
"document": "CTEOS",
"taxes": {
"icms": {
"cst": "00",
"valor": 180
}
},
"classifications": {
"cfop": "6357",
"cst": "00"
},
"xml_validado": true,
"leiaute": "PL_CTe_400",
"confidence_score": 0.9,
"requires_review": false,
"request_id": "req_..."
}
422 VALIDATION_ERROR— Dados invalidos.
cteos:read
Listar CT-e OS
Query: status, pedido, empresa_id, pagina, por_pagina.
Autenticacao: Bearer API Key
nenhum
statuspedidoempresa_idpaginapor_pagina
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cteos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"id": "5",
"status": "AUTORIZADA"
}
],
"request_id": "req_..."
}
cteos:read
Consultar CT-e OS
Status, chave, protocolo, eventos e links. CT-e OS PENDENTE e reconciliado por consulta da chave na SEFAZ.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cteos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": "5",
"status": "AUTORIZADA",
"chave": "31261...67...(44)",
"protocolo": "131000000000003",
"cfop": "6357",
"tipo_servico": "transporte_pessoas",
"valor_prestacao": 1500,
"links": {
"xml": "/api/v1/cteos/5/xml",
"dacte": "/api/v1/cteos/5/dacte"
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
cteos:write
Cancelar CT-e OS
Evento de cancelamento (110111).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
justificativa (15 a 255)
nenhum
{
"justificativa": "Cancelamento por erro de digitacao no valor"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cteos/43/cancelar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"justificativa":"Cancelamento por erro de digitacao no valor"}'
{
"success": true,
"status": "CANCELADA",
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Evento rejeitado pela SEFAZ.409 STATUS_INVALIDO— Somente CT-e OS AUTORIZADO.
cteos:write
Carta de Correcao (CC-e)
Evento 110110 com correcoes [{grupo, campo, valor}]. Nao pode alterar valores, tomador, CFOP etc. (regra da SEFAZ). Sequencia controlada pela API.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
correcoes [{grupo, campo, valor, numero_item?}]
nenhum
{
"correcoes": [
{
"grupo": "compl",
"campo": "xObs",
"valor": "Observacao corrigida"
}
]
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/cteos/43/cce" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"correcoes":[{"grupo":"compl","campo":"xObs","valor":"Observacao corrigida"}]}'
{
"success": true,
"eventos": [
{
"tipo": "CCE",
"sequencia": 1,
"status": "REGISTRADO"
}
],
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Correcao nao aceita.
cteos:read
Baixar XML do CT-e OS
cteOSProc (XML autorizado + protocolo + eventos de cancelamento), referencia principal.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cteos/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<cteOSProc>...</cteOSProc>
409 XML_INDISPONIVEL— Sem XML autorizado.
cteos:read
Baixar DACTE OS (PDF)
DACTE OS gerado a partir do XML autorizado armazenado (sped-da).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/cteos/43/dacte" \ -H "Authorization: Bearer SUA_API_KEY"
(application/pdf)
409 DOCUMENTO_SEM_PROTOCOLO— CT-e OS sem protocolo.
MDF-e
mdfe:write
Emitir MDF-e (modelo 58, rodoviario)
Dados simplificados: veiculo (placa cadastrada em /veiculos), condutores (CPF cadastrado em /condutores), percurso e documentos vinculados: CT-es ja emitidos por cte_id (sem redigitar chave/municipio/valor) ou chaves de CT-e/NF-e. O MDF-e nao tem tributacao (o Motor registra o contexto no snapshot). Validado no XSD 3.00 (sped-mdfe). Regras de leiaute aplicadas: um unico documento exige CEP de carga/descarga (infLotacao); tipo_emitente 1/3 exige produto predominante.
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios.
pedidoveiculocondutores [CPF ou {nome,cpf}]documentos [{cte_id | chave_cte | chave_nfe (+municipio_descarga)}]carga.peso_kg
empresa_id | empresareboques [placas]percurso {uf_inicio, uf_fim, ufs_percurso, carregamento{cod_municipio, municipio, cep}, inicio_viagem}carga {valor, tipo 01-11, produto, ncm}tipo_emitente (1 prestador, 2 carga propria, 3 CT-e globalizado)tipo_transportador (1 ETC, 2 TAC, 3 CTC)seguroobservacoes
{
"empresa_id": 25,
"pedido": "MANIF-0001",
"veiculo": "ABC1D23",
"condutores": [
"11144477735"
],
"percurso": {
"uf_inicio": "MG",
"uf_fim": "SP"
},
"documentos": [
{
"cte_id": 7
},
{
"cte_id": 8
}
],
"carga": {
"peso_kg": 36290
}
}
JSON completo
{
"empresa_id": 25,
"pedido": "MANIF-0001",
"veiculo": "ABC1D23",
"condutores": [
"11144477735"
],
"percurso": {
"uf_inicio": "MG",
"uf_fim": "SP"
},
"documentos": [
{
"cte_id": 7
},
{
"cte_id": 8
}
],
"carga": {
"peso_kg": 36290
},
"reboques": [
"XYZ2E34"
],
"observacoes": "Viagem MG-SP"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/mdfe" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"MANIF-0001","veiculo":"ABC1D23","condutores":["11144477735"],"percurso":{"uf_inicio":"MG","uf_fim":"SP"},"documentos":[{"cte_id":7},{"cte_id":8}],"carga":{"peso_kg":36290}}'
{
"success": true,
"id": "3",
"status": "AUTORIZADA",
"chave": "31260...58...(44)",
"protocolo": "131000000000002",
"qtd_documentos": 2,
"links": {
"xml": "/api/v1/mdfe/3/xml",
"damdfe": "/api/v1/mdfe/3/damdfe"
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Falta configuracao fiscal (regra, certificado, emitente...): error.missing e error.motivos.422 REVISAO_FISCAL_NECESSARIA— A tributacao nao pode ser determinada com seguranca (confidence_score baixo / requires_review).422 IDEMPOTENCY_KEY_REUSED— Mesmo pedido/Idempotency-Key com conteudo diferente.402 SALDO_INSUFICIENTE— Saldo de creditos insuficiente.422 VALIDATION_ERROR— CT-e ja vinculado a outro MDF-e ativo, condutor/veiculo nao cadastrado, etc.
mdfe:write
Preview do MDF-e (nao emite, nao cobra)
Valida veiculo, condutores, CT-es e o XML no leiaute oficial. Nao transmite nem cobra.
Autenticacao: Bearer API Key
(mesmos da emissao)
nenhum
{
"empresa_id": 25,
"pedido": "MANIF-0001",
"veiculo": "ABC1D23",
"condutores": [
"11144477735"
],
"percurso": {
"uf_inicio": "MG",
"uf_fim": "SP"
},
"documentos": [
{
"cte_id": 7
},
{
"cte_id": 8
}
],
"carga": {
"peso_kg": 36290
}
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/mdfe/preview" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"MANIF-0001","veiculo":"ABC1D23","condutores":["11144477735"],"percurso":{"uf_inicio":"MG","uf_fim":"SP"},"documentos":[{"cte_id":7},{"cte_id":8}],"carga":{"peso_kg":36290}}'
{
"success": true,
"ready_to_issue": true,
"document": "MDFE",
"qtd_documentos": 2,
"xml_validado": true,
"request_id": "req_..."
}
422 VALIDATION_ERROR— Dados invalidos.
mdfe:read
Listar MDF-e
Query: status, pedido, empresa_id, pagina, por_pagina.
Autenticacao: Bearer API Key
nenhum
statuspedidoempresa_idpaginapor_pagina
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/mdfe" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"id": "3",
"status": "AUTORIZADA"
}
],
"request_id": "req_..."
}
mdfe:read
Consultar MDF-e
Status, chave, protocolo, documentos, condutores, eventos e links.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": "3",
"status": "AUTORIZADA",
"chave": "31260...58...(44)",
"protocolo": "131000000000002",
"qtd_documentos": 2,
"links": {
"xml": "/api/v1/mdfe/3/xml",
"damdfe": "/api/v1/mdfe/3/damdfe"
},
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
mdfe:write
Encerrar MDF-e
Evento de encerramento (110112) com o municipio de encerramento (IBGE, 7 digitos).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
cod_municipio
data (AAAA-MM-DD)
{
"cod_municipio": "3550308"
}
JSON completo
{
"cod_municipio": "3550308",
"data": "2026-03-11"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43/encerrar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cod_municipio":"3550308"}'
{
"success": true,
"status": "ENCERRADA",
"request_id": "req_..."
}
409 STATUS_INVALIDO— Somente MDF-e AUTORIZADO.
mdfe:write
Cancelar MDF-e
Evento de cancelamento (110111).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
justificativa (15 a 255)
nenhum
{
"justificativa": "Cancelamento do manifesto por engano do emissor"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43/cancelar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"justificativa":"Cancelamento do manifesto por engano do emissor"}'
{
"success": true,
"status": "CANCELADA",
"request_id": "req_..."
}
422 SEFAZ_EVENT_REJECTION— Evento rejeitado.
mdfe:write
Incluir condutor
Evento de inclusao de condutor (110114). O condutor nao pode repetir.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
cpf
nome (quando o CPF nao esta cadastrado)
{
"cpf": "52998224725",
"nome": "Maria Souza"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43/condutor" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cpf":"52998224725","nome":"Maria Souza"}'
{
"success": true,
"condutores": [
{
"nome": "Joao da Silva"
},
{
"nome": "Maria Souza"
}
],
"request_id": "req_..."
}
409 CONDUTOR_JA_INCLUIDO— Condutor ja consta.
mdfe:read
Baixar XML do MDF-e
mdfeProc (XML autorizado + protocolo + eventos), referencia principal.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<mdfeProc>...</mdfeProc>
409 XML_INDISPONIVEL— Sem XML autorizado.
mdfe:read
Baixar DAMDFE (PDF)
DAMDFE gerado a partir do XML autorizado armazenado (sped-da).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/mdfe/43/damdfe" \ -H "Authorization: Bearer SUA_API_KEY"
(application/pdf)
409 DOCUMENTO_SEM_PROTOCOLO— MDF-e sem protocolo.
mdfe:read
Listar veiculos
Veiculos de tracao e reboques cadastrados.
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/veiculos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 1,
"placa": "ABC1D23",
"tipo": "TRACAO"
}
],
"request_id": "req_..."
}
mdfe:write
Cadastrar veiculo
Placa (AAA0A00/AAA0000), tara e UF de licenciamento. Proprietario de terceiros: proprietario_*.
Autenticacao: Bearer API Key
placatara (kg)uf_licenciamento
empresa_idrenavamcap_kgcap_m3tp_rodtp_cartipo (TRACAO|REBOQUE)proprietario_docproprietario_nomeproprietario_rntrcproprietario_ieproprietario_ufproprietario_tp_prop
{
"empresa_id": 25,
"placa": "ABC1D23",
"tara": 8350,
"uf_licenciamento": "MG"
}
JSON completo
{
"empresa_id": 25,
"placa": "ABC1D23",
"tara": 8350,
"cap_kg": 15000,
"tp_rod": "03",
"tp_car": "02",
"uf_licenciamento": "MG",
"tipo": "TRACAO"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/veiculos" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"placa":"ABC1D23","tara":8350,"uf_licenciamento":"MG"}'
{
"success": true,
"id": 1,
"placa": "ABC1D23",
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— Placa ja cadastrada.
mdfe:read
Consultar veiculo
Veiculo da empresa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/veiculos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"placa": "ABC1D23",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Veiculo inexistente.
mdfe:write
Alterar veiculo
Atualiza campos informados (auditado).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
campos do cadastro
{
"cap_kg": 16000
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/veiculos/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cap_kg":16000}'
{
"success": true,
"id": 1,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Veiculo inexistente.
mdfe:write
Desativar veiculo
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/veiculos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Veiculo inexistente.
mdfe:read
Listar condutores
Condutores cadastrados.
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/condutores" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 1,
"nome": "JOAO DA SILVA",
"cpf": "11144477735"
}
],
"request_id": "req_..."
}
mdfe:write
Cadastrar condutor
Nome (ate 60) e CPF valido.
Autenticacao: Bearer API Key
nomecpf
empresa_id
{
"empresa_id": 25,
"nome": "JOAO DA SILVA",
"cpf": "111.444.777-35"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/condutores" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"nome":"JOAO DA SILVA","cpf":"111.444.777-35"}'
{
"success": true,
"id": 1,
"cpf": "11144477735",
"request_id": "req_..."
}
422 VALIDATION_ERROR— CPF invalido.
mdfe:read
Consultar condutor
Condutor da empresa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/condutores/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"nome": "JOAO DA SILVA",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Condutor inexistente.
mdfe:write
Alterar condutor
Atualiza campos informados (auditado).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nomecpf
{
"nome": "JOAO P. DA SILVA"
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/condutores/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"nome":"JOAO P. DA SILVA"}'
{
"success": true,
"id": 1,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Condutor inexistente.
mdfe:write
Desativar condutor
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/condutores/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Condutor inexistente.
Produtor Rural
rural:read
Consultar produtor rural
Dados do produtor (PF por CPF ou PJ por CNPJ), contexto fiscal, propriedades e situacao do certificado.
Autenticacao: Bearer API Key
nenhum
empresa_id (query)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/rural/produtor" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"empresa_id": 25,
"tipo": "PF",
"documento": "11144477735",
"contexto_fiscal": "PRODUTOR_RURAL",
"propriedades": 1,
"certificado": {
"status": "ok",
"validade": "2027-01-01"
},
"request_id": "req_..."
}
403 EMPRESA_NAO_AUTORIZADA— Empresa alheia ou inexistente.
rural:write
Cadastrar produtor rural PF
Cria a empresa emitente do produtor pessoa fisica (CPF + IE, sem CNPJ), com o contexto PRODUTOR_RURAL. Exige API Key de usuario. O CRT e informado por voce (o motor nao presume o enquadramento). O certificado e-CPF do produtor e enviado em /configuracao-fiscal/certificado. Produtor PJ: cadastre a empresa normalmente e ative o contexto com PUT.
Autenticacao: Bearer API Key
cpfnomeufiecrtlogradouronumerobairrocod_municipiomunicipiocepfone
nome_fantasiacnae
{
"cpf": "111.444.777-35",
"nome": "Jose Produtor Rural",
"uf": "MG",
"ie": "PR0123456780123",
"crt": 3,
"logradouro": "Fazenda Boa Vista",
"numero": "S/N",
"bairro": "Zona Rural",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"cep": "38700000",
"fone": "34999998888"
}
JSON completo
{
"cpf": "111.444.777-35",
"nome": "Jose Produtor Rural",
"uf": "MG",
"ie": "PR0123456780123",
"crt": 3,
"logradouro": "Fazenda Boa Vista",
"numero": "S/N",
"bairro": "Zona Rural",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"cep": "38700000",
"fone": "34999998888",
"cnae": "0134200"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/rural/produtor" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"cpf":"111.444.777-35","nome":"Jose Produtor Rural","uf":"MG","ie":"PR0123456780123","crt":3,"logradouro":"Fazenda Boa Vista","numero":"S/N","bairro":"Zona Rural","cod_municipio":"3148004","municipio":"Patos de Minas","cep":"38700000","fone":"34999998888"}'
{
"success": true,
"empresa_id": 25,
"tipo": "PF",
"contexto_fiscal": "PRODUTOR_RURAL",
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— CPF+IE ja cadastrados.403 USUARIO_OBRIGATORIO— Exige API Key de usuario.
rural:write
Ligar/desligar o contexto rural da empresa
Ativa (true) ou desativa (false) o contexto PRODUTOR_RURAL de uma empresa existente. Produtor PF nao pode desativar. Com o contexto ativo, a NF-e existente detecta o contexto pelo cadastro (sem enviar "contexto").
Autenticacao: Bearer API Key
ativo (boolean)
empresa_id
{
"empresa_id": 25,
"ativo": true
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/rural/produtor" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"ativo":true}'
{
"success": true,
"empresa_id": 25,
"tipo": "PJ",
"contexto_fiscal": "PRODUTOR_RURAL",
"request_id": "req_..."
}
409 CONTEXTO_OBRIGATORIO— Produtor PF nao desativa o contexto.
emitir
Emitir NF-e do produtor rural (endpoint NF-e existente)
NAO ha endpoint paralelo: use POST /nfe com "contexto": "PRODUTOR_RURAL" (ou deixe a empresa com o contexto ativo) e "operacao" (venda, transferencia, remessa, retorno, devolucao, industrializacao, armazenagem...). O Motor aplica as regras rurais: CFOP da operacao (base versionada), situacao do ICMS (normal, diferimento, reducao, isencao, suspensao) SOMENTE por regra RURAL_ICMS vigente com fundamento, cBenef por RURAL_BENEFICIO, IBS/CBS por regra vigente. Tributacao incerta (requires_review) bloqueia a emissao. Identificacao do emitente por CPF (PF) ou CNPJ (PJ). A chave do webhook nfe.* traz "context".
Autenticacao: Bearer API Key · Idempotency-Key (opcional): evita emissao duplicada em reenvios.
pedidocontexto (PRODUTOR_RURAL) OU empresa com contexto ativooperacaoclienteitenspagamento
propriedade (codigo cadastrado)itens[].origem_operacao (producao_propria|adquirida; padrao producao_propria com aviso)
{
"empresa_id": 25,
"pedido": "RURAL-0001",
"contexto": "PRODUTOR_RURAL",
"operacao": "venda",
"propriedade": "FAZ01",
"cliente": "CLIMG",
"itens": [
{
"codigo": "CAFE01",
"quantidade": 100
}
],
"pagamento": "pix"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/nfe" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"pedido":"RURAL-0001","contexto":"PRODUTOR_RURAL","operacao":"venda","propriedade":"FAZ01","cliente":"CLIMG","itens":[{"codigo":"CAFE01","quantidade":100}],"pagamento":"pix"}'
{
"success": true,
"status": "AUTORIZADA",
"id": "43",
"chave": "3524...",
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Operacao/propriedade/NCM/regra ausentes ou requires_review (codigos REVISAO_FISCAL_NECESSARIA, OPERACAO_RURAL_NAO_INFORMADA, RURAL_ICMS_SEM_FUNDAMENTO, RURAL_BENEFICIO_INCOMPATIVEL_CRT).
rural:read
Listar propriedades rurais
Propriedades do produtor (multiplas).
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/rural/propriedades" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 1,
"codigo": "FAZ01",
"nome": "Fazenda Boa Vista"
}
],
"request_id": "req_..."
}
rural:write
Cadastrar propriedade rural
Somente dados fiscais/operacionais necessarios.
Autenticacao: Bearer API Key
codigonomeufcod_municipiomunicipio
empresa_idielogradouronumerobairrocepatividadecnaecar
{
"empresa_id": 25,
"codigo": "FAZ01",
"nome": "Fazenda Boa Vista",
"uf": "MG",
"cod_municipio": "3148004",
"municipio": "Patos de Minas"
}
JSON completo
{
"empresa_id": 25,
"codigo": "FAZ01",
"nome": "Fazenda Boa Vista",
"uf": "MG",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"atividade": "Cafeicultura",
"car": "MG-123"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/rural/propriedades" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"codigo":"FAZ01","nome":"Fazenda Boa Vista","uf":"MG","cod_municipio":"3148004","municipio":"Patos de Minas"}'
{
"success": true,
"id": 1,
"codigo": "FAZ01",
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— Codigo ja existe.
rural:read
Consultar propriedade
Propriedade da empresa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/rural/propriedades/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"codigo": "FAZ01",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Propriedade inexistente.
rural:write
Alterar propriedade
Atualiza campos informados (auditado).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
campos do cadastro
{
"atividade": "Cafeicultura"
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/rural/propriedades/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"atividade":"Cafeicultura"}'
{
"success": true,
"id": 1,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Propriedade inexistente.
rural:write
Desativar propriedade
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/rural/propriedades/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Propriedade inexistente.
consultar
Listar produtos
Produtos fiscais da empresa (qualquer produto agropecuario ou nao).
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/produtos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"itens": [
{
"id": 1,
"codigo": "CAFE01",
"ncm": "09011110",
"classificacao_rural": "cafe"
}
],
"request_id": "req_..."
}
configurar
Cadastrar produto
NCM (8 digitos), origem, unidade e, para o contexto rural, classificacao_rural (livre: cafe, soja, milho, leite, gado, hortifruti...), usada nos criterios das regras. O motor NAO deduz NCM pela descricao.
Autenticacao: Bearer API Key
codigodescricaoncmorigem (0-8)unidade
empresa_idcestgtinprecocategoriaclassificacao_rural
{
"empresa_id": 25,
"codigo": "CAFE01",
"descricao": "Cafe arabica em grao cru",
"ncm": "09011110",
"origem": 0,
"unidade": "SC",
"classificacao_rural": "cafe",
"preco": 1200
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/produtos" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"codigo":"CAFE01","descricao":"Cafe arabica em grao cru","ncm":"09011110","origem":0,"unidade":"SC","classificacao_rural":"cafe","preco":1200}'
{
"success": true,
"id": 1,
"codigo": "CAFE01",
"request_id": "req_..."
}
409 REGISTRO_DUPLICADO— Codigo ja existe.
consultar
Consultar produto
Produto da empresa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/produtos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"codigo": "CAFE01",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Produto inexistente.
configurar
Alterar produto
Atualiza campos informados (auditado).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
campos do cadastro
{
"preco": 1300
}
curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/produtos/43" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"preco":1300}'
{
"success": true,
"id": 1,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Produto inexistente.
configurar
Desativar produto
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/produtos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 1,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Produto inexistente.
Distribuicao DF-e
dfe:write
Sincronizar documentos recebidos
Busca na SEFAZ (Ambiente Nacional) os documentos emitidos CONTRA o CNPJ da empresa e grava o XML recebido. Incremental: usa o ultimo NSU de cada empresa/ambiente/tipo; chame de novo enquanto status = PARCIAL. Tipos: NFE (resumos, NF-e completas e eventos), CTE e MDFE (documentos em que a empresa e envolvida) ou TODOS. A SEFAZ exige aguardar 1 hora quando nao ha documentos novos (cStat 137) ou ao consumir indevidamente (656): a API respeita isso e responde AGUARDANDO com aguardar_ate. Sem cobranca de creditos. Para receber o XML COMPLETO de uma NF-e que veio como RESUMO, registre a manifestacao (POST /dfe/manifestacoes) e sincronize novamente. NFS-e: distribuicao do Sistema Nacional NAO implementada.
Autenticacao: Bearer API Key
nenhum
empresa_id | empresatipo (NFE | CTE | MDFE | TODOS; padrao NFE)max_lotes (1 a 20; padrao 5; cada lote ate 50 documentos)
{
"empresa_id": 25,
"tipo": "NFE"
}
JSON completo
{
"empresa_id": 25,
"tipo": "TODOS",
"max_lotes": 10
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/dfe/sincronizar" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"tipo":"NFE"}'
{
"success": true,
"empresa_id": 25,
"ambiente": "homologacao",
"resultados": [
{
"tipo": "NFE",
"status": "CONCLUIDO",
"lotes": 2,
"novos": 37,
"ult_nsu": 1520,
"max_nsu": 1520,
"cstat": "138",
"motivo": "Documento(s) localizado(s)",
"aguardar_ate": null
}
],
"request_id": "req_..."
}
403 MODULO_NAO_HABILITADO— Modulo dfe desabilitado para a empresa.422 FISCAL_CONFIGURATION_REQUIRED— Certificado digital pendente.422 VALIDATION_ERROR— tipo invalido (produtor PF consulta apenas NFE).
dfe:write
Baixar NF-e pela chave
Consulta de distribuicao por chave de acesso (somente NF-e em que a empresa e interessada). Grava o que a SEFAZ devolver (resumo ou XML completo) sem alterar o cursor de NSU.
Autenticacao: Bearer API Key
chave (44 digitos)
empresa_id | empresa
{
"empresa_id": 25,
"chave": "31260960701190000104550010000001231123456789"
}
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/dfe/baixar-chave" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"chave":"31260960701190000104550010000001231123456789"}'
{
"success": true,
"chave": "31260960701190000104550010000001231123456789",
"cstat": "138",
"novos": 1,
"documentos": [
{
"id": 91,
"nsu": 1498,
"natureza": "RESUMO",
"schema_nome": "resNFe_v1.01"
}
],
"request_id": "req_..."
}
422 VALIDATION_ERROR— chave invalida.502 SEFAZ_UNAVAILABLE— SEFAZ indisponivel.
dfe:read
Situacao da sincronizacao
Ultimo NSU, maximo NSU, ultima sincronizacao, ultimo cStat e bloqueio da SEFAZ por tipo, alem do total de documentos recebidos por tipo e natureza.
Autenticacao: Bearer API Key
nenhum
empresa_id | empresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/dfe/status" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"empresa_id": 25,
"ambiente": "homologacao",
"sincronizacao_automatica": false,
"cursores": {
"NFE": {
"ult_nsu": 1520,
"max_nsu": 1520,
"ultima_sync": "2026-10-01 10:00:00",
"ultimo_cstat": "137",
"aguardando_sefaz": true,
"aguardar_ate": "2026-10-01 11:00:00"
}
},
"totais": {
"NFE": {
"RESUMO": 20,
"COMPLETO": 15,
"EVENTO": 2
}
},
"request_id": "req_..."
}
dfe:read
Listar documentos recebidos
Lista os documentos recebidos (metadados; o XML vem em /dfe/documentos/{id}/xml). Para importar incrementalmente no seu sistema, guarde o maior nsu recebido e use nsu_apos (ordem crescente de NSU). natureza: RESUMO (resNFe), COMPLETO (XML completo), EVENTO.
Autenticacao: Bearer API Key
nenhum
empresa_idtipo (NFE|CTE|MDFE)natureza (RESUMO|COMPLETO|EVENTO|OUTRO)chaveemitente (CNPJ/CPF)tp_eventonsu_aposde (YYYY-MM-DD)ate (YYYY-MM-DD)paginapor_pagina (max 100)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/dfe/documentos" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 37,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"id": 91,
"tipo": "NFE",
"nsu": 1498,
"natureza": "COMPLETO",
"chave": "3126...(44)",
"emitente": {
"documento": "60701190000104",
"nome": "FORNECEDOR LTDA",
"ie": "110042490114"
},
"valor": 1520.5,
"data_emissao": "2026-09-28 10:15:00",
"xml_completo": true,
"xml": "/api/v1/dfe/documentos/91/xml"
}
],
"request_id": "req_..."
}
dfe:read
Consultar documento recebido
Metadados de um documento recebido.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/dfe/documentos/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 91,
"tipo": "NFE",
"nsu": 1498,
"natureza": "COMPLETO",
"chave": "3126...(44)",
"xml": "/api/v1/dfe/documentos/91/xml",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
dfe:read
XML do documento recebido
XML exatamente como recebido da SEFAZ (nfeProc, resNFe, evento...).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/dfe/documentos/43/xml" \ -H "Authorization: Bearer SUA_API_KEY"
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="4.00">...</nfeProc>
404 NAO_ENCONTRADO— Documento inexistente ou de outra empresa.
dfe:write
Manifestacao do Destinatario (NF-e)
Registra na SEFAZ a manifestacao da empresa destinataria sobre uma NF-e ja recebida: ciencia (210210), confirmacao (210200), desconhecimento (210220) ou nao_realizada (210240, exige justificativa de 15 a 255 caracteres). A ciencia/confirmacao libera o XML completo na proxima sincronizacao. Idempotente por chave + evento.
Autenticacao: Bearer API Key
chaveevento (ciencia | confirmacao | desconhecimento | nao_realizada)
empresa_id | empresajustificativa (obrigatoria em nao_realizada)
{
"empresa_id": 25,
"chave": "31260960701190000104550010000001231123456789",
"evento": "ciencia"
}
JSON completo
{
"empresa_id": 25,
"chave": "31260960701190000104550010000001231123456789",
"evento": "nao_realizada",
"justificativa": "Mercadoria nao foi entregue ao destinatario"
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/dfe/manifestacoes" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"empresa_id":25,"chave":"31260960701190000104550010000001231123456789","evento":"ciencia"}'
{
"success": true,
"id": 5,
"chave": "31260960701190000104550010000001231123456789",
"evento": "ciencia",
"tp_evento": "210210",
"status": "REGISTRADO",
"cstat": "135",
"protocolo": "891260000000001",
"request_id": "req_..."
}
404 DOCUMENTO_NAO_RECEBIDO— NF-e ainda nao consta nos documentos recebidos.422 VALIDATION_ERROR— chave/evento/justificativa invalidos ou evento rejeitado pela SEFAZ.
dfe:read
Listar manifestacoes
Ultimas 100 manifestacoes registradas.
Autenticacao: Bearer API Key
nenhum
empresa_idchave
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/dfe/manifestacoes" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"itens": [
{
"id": 5,
"chave": "3126...(44)",
"evento": "ciencia",
"status": "REGISTRADO",
"cstat": "135"
}
],
"request_id": "req_..."
}
Status SEFAZ
consultar
Status dos servicos fiscais
Status em tempo real de todos os documentos para a UF e o ambiente da empresa: NF-e (55), NFC-e (65), CT-e (57), CT-e OS (67) e MDF-e (58) pela consulta oficial de status de servico da SEFAZ (cStat 107 = em operacao) e NFS-e Nacional por sonda de conectividade (o Sistema Nacional nao publica status oficial). Cache de 20 s por servico. situacao: online, instavel, offline, erro, desabilitado (modulo nao habilitado na empresa).
Autenticacao: Bearer API Key
nenhum
empresa_id | empresa
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/sefaz/status" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"empresa_id": 25,
"uf": "MG",
"ambiente": "homologacao",
"situacao_geral": "online",
"consultado_em": "2026-10-01T10:00:00-03:00",
"servicos": {
"nfe": {
"modelo": "55",
"situacao": "online",
"rotulo": "Em operação",
"cstat": "107",
"tempo_ms": 310
},
"nfce": {
"modelo": "65",
"situacao": "online",
"rotulo": "Em operação",
"cstat": "107",
"tempo_ms": 290
},
"cte": {
"modelo": "57",
"situacao": "online",
"rotulo": "Em operação",
"cstat": "107",
"tempo_ms": 420
},
"cteos": {
"modelo": "67",
"situacao": "online",
"rotulo": "Em operação",
"cstat": "107",
"tempo_ms": 410
},
"mdfe": {
"modelo": "58",
"situacao": "instavel",
"rotulo": "Paralisado momentaneamente",
"cstat": "108"
},
"nfse": {
"modelo": "nfse",
"situacao": "online",
"rotulo": "Sistema Nacional acessível",
"tempo_ms": 180
}
},
"request_id": "req_..."
}
422 FISCAL_CONFIGURATION_REQUIRED— Certificado digital pendente (a consulta usa o certificado da empresa).
Processamento assincrono
consultar
Solicitar emissao assincrona
Recebe a solicitacao de emissao (NF-e, NFC-e, NFS-e, CT-e, CT-e OS ou MDF-e), valida permissao do documento (emitir | nfse:write | cte:write | cteos:write | mdfe:write), empresa, modulo e SALDO de creditos, registra uma tarefa PERSISTENTE (MySQL) e devolve o solicitacao_id. Receber/enfileirar NAO significa transmitir nem autorizar: o worker transmite quando possivel e repete automaticamente em falhas temporarias (intervalo progressivo com variacao aleatoria), CONSULTA a situacao antes de qualquer reenvio (nunca retransmite as cegas), e so marca AUTORIZADA/REJEITADA com o resultado oficial. Idempotente por empresa + documento + pedido: reenviar o mesmo pedido devolve a mesma solicitacao (200 + Idempotent-Replay); conteudo diferente = 422 IDEMPOTENCY_KEY_REUSED. Equivalente: POST /nfe|/nfce|/nfse|/cte|/mdfe com o header Prefer: respond-async, ?async=true ou "async": true. Status: RECEBIDA, AGUARDANDO_TRANSMISSAO, TRANSMITINDO, AGUARDANDO_RETORNO, AUTORIZADA, REJEITADA, FALHA_TEMPORARIA, ACAO_NECESSARIA, CANCELADA (tarefa).
Autenticacao: Bearer API Key
documento (NFE | NFCE | NFSE | CTE | CTEOS | MDFE)dados {} (o mesmo JSON da emissao, com pedido)
empresa_id | empresa (tambem aceito dentro de dados)Idempotency-Key (header)
{
"documento": "NFSE",
"dados": {
"empresa_id": 25,
"pedido": "SERV-0001",
"tomador": {
"cpf_cnpj": "12345678909",
"nome": "Joao da Silva",
"endereco": {
"logradouro": "Rua A",
"numero": "10",
"bairro": "Centro",
"cod_municipio": "3148004",
"municipio": "Patos de Minas",
"uf": "MG",
"cep": "38700000"
}
},
"servico": {
"codigo": "CONS01",
"valor": 1500
}
}
}
JSON completo
{
"documento": "NFE",
"dados": {
"empresa_id": 25,
"pedido": "PED-12345",
"cliente": "CLI001",
"itens": [
{
"codigo": "PROD001",
"quantidade": 2
}
],
"pagamento": "pix"
}
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/fiscal/solicitacoes" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"documento":"NFSE","dados":{"empresa_id":25,"pedido":"SERV-0001","tomador":{"cpf_cnpj":"12345678909","nome":"Joao da Silva","endereco":{"logradouro":"Rua A","numero":"10","bairro":"Centro","cod_municipio":"3148004","municipio":"Patos de Minas","uf":"MG","cep":"38700000"}},"servico":{"codigo":"CONS01","valor":1500}}}'
{
"success": true,
"solicitacao_id": "sol_9f2c41aa07be13d5c8e1",
"status": "AGUARDANDO_TRANSMISSAO",
"mensagem": "Solicitacao recebida e aguardando processamento. Receber nao significa transmitir nem autorizar: acompanhe o resultado.",
"consulta_url": "/api/v1/fiscal/solicitacoes/sol_9f2c41aa07be13d5c8e1",
"request_id": "req_..."
}
402 SALDO_INSUFICIENTE— Saldo insuficiente (validado na aceitacao; o debito ocorre uma unica vez na emissao).403 FORBIDDEN— A credencial nao tem a permissao do documento.403 MODULO_NAO_HABILITADO— Modulo desabilitado na empresa.422 IDEMPOTENCY_KEY_REUSED— Pedido ja usado com conteudo diferente (use /reprocessar com "dados").422 VALIDATION_ERROR— documento/dados/pedido invalidos.
consultar
Listar solicitacoes
Solicitacoes das empresas da credencial (isolamento multiempresa; chave de teste enxerga somente homologacao).
Autenticacao: Bearer API Key
nenhum
statusdocumento (NFE|NFCE|NFSE|CTE|CTEOS|MDFE)empresa_idpedidoambiente (homologacao|producao)origem (API_ASSINCRONA|SINCRONA)de (YYYY-MM-DD)ate (YYYY-MM-DD)travadas=1paginapor_pagina (max 100)
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/fiscal/solicitacoes" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"total": 1,
"pagina": 1,
"por_pagina": 20,
"itens": [
{
"solicitacao_id": "sol_9f2c41aa07be13d5c8e1",
"documento": "NFSE",
"pedido": "SERV-0001",
"empresa_id": 25,
"ambiente": "homologacao",
"status": "AGUARDANDO_RETORNO",
"tentativas": 1,
"proxima_tentativa": "2026-10-01 11:03:00"
}
],
"request_id": "req_..."
}
consultar
Consultar solicitacao
Situacao, historico de processamento (data, tentativa, mensagem e ator de cada transicao), proxima tentativa, resultado fiscal (documento_id, chave, protocolo, cStat) e links de XML/PDF quando autorizada. resultado_oficial_confirmado = true somente em AUTORIZADA ou REJEITADA. Solicitacao de outra empresa responde 404.
Autenticacao: Bearer API Key
Parametros de URL: {id} solicitacao_id (sol_ + 20 hex)
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/fiscal/solicitacoes/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"solicitacao_id": "sol_9f2c41aa07be13d5c8e1",
"documento": "NFSE",
"pedido": "SERV-0001",
"status": "AUTORIZADA",
"descricao_status": "Documento autorizado (resultado oficial confirmado).",
"resultado_oficial_confirmado": true,
"tentativas": 2,
"consultas": 1,
"documento_id": 12,
"chave": "3148004...",
"protocolo": "131260000000001",
"links": {
"xml": "/api/v1/nfse/12/xml",
"danfse": "/api/v1/nfse/12/danfse"
},
"historico": [
{
"de": null,
"para": "RECEBIDA",
"tentativa": 0,
"mensagem": "Solicitacao recebida pela API.",
"ator": "api",
"em": "2026-10-01 10:00:00"
},
{
"de": "AGUARDANDO_RETORNO",
"para": "AUTORIZADA",
"tentativa": 2,
"mensagem": "Documento autorizado (protocolo 131260000000001).",
"ator": "worker:srv1:4120",
"em": "2026-10-01 10:04:11"
}
],
"request_id": "req_..."
}
404 SOLICITACAO_NAO_ENCONTRADA— Inexistente ou de outra empresa.
consultar
Cancelar a TAREFA (antes da transmissao)
Remove somente uma tarefa AINDA NAO TRANSMITIDA (nao e cancelamento fiscal). Exige a permissao do documento. Se o documento ja foi transmitido ou esta autorizado, responde 409 e orienta o cancelamento fiscal oficial (POST /{documento}/{id}/cancelamento | cancelar).
Autenticacao: Bearer API Key
Parametros de URL: {id} solicitacao_id (sol_ + 20 hex)
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/fiscal/solicitacoes/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"aviso": "Foi cancelada a TAREFA ainda nao transmitida. Isto nao e o cancelamento fiscal de um documento.",
"solicitacao_id": "sol_9f2c41aa07be13d5c8e1",
"status": "CANCELADA",
"request_id": "req_..."
}
409 DOCUMENTO_JA_TRANSMITIDO— Documento transmitido/autorizado: use o cancelamento fiscal oficial.409 SOLICITACAO_CONCLUIDA— Solicitacao ja concluida.409 SOLICITACAO_EM_TRANSMISSAO— Em transmissao agora.
consultar
Reprocessar (acao necessaria / rejeitada)
Devolve a solicitacao a fila quando estiver em ACAO_NECESSARIA (ex.: apos adicionar creditos ou corrigir a configuracao) ou REJEITADA (exige "dados" corrigidos). Com "dados", o pedido deve continuar o mesmo. NUNCA ignora a idempotencia nem as regras fiscais: passa pelo mesmo emitir() e pela consulta de situacao. Documento autorizado ou cancelado nao e reprocessavel. Auditado.
Autenticacao: Bearer API Key
Parametros de URL: {id} solicitacao_id (sol_ + 20 hex)
nenhum
dados {} (JSON da emissao corrigido; obrigatorio para REJEITADA)
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/fiscal/solicitacoes/43/reprocessar" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"solicitacao_id": "sol_9f2c41aa07be13d5c8e1",
"status": "AGUARDANDO_TRANSMISSAO",
"tentativas": 0,
"request_id": "req_..."
}
409 TRANSICAO_INVALIDA— Estado atual nao permite reprocessar.409 DOCUMENTO_JA_AUTORIZADO— Nada a reprocessar.422 VALIDATION_ERROR— REJEITADA exige dados corrigidos; pedido diferente.
consultar
Preferencias de notificacao
Preferencias de e-mail/painel do usuario dono da API Key (geral ou por empresa com ?empresa_id). Chaves sem usuario da plataforma respondem 403.
Autenticacao: Bearer API Key
nenhum
empresa_id
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/fiscal/notificacoes/preferencias" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"empresa_id": 0,
"preferencias": {
"email_destino": null,
"email_ativo": 1,
"painel_ativo": 1,
"ev_autorizada": 1,
"ev_rejeitada": 1,
"ev_acao": 1,
"ev_falha": 1,
"pendente_minutos": null
},
"request_id": "req_..."
}
403 USUARIO_NAO_IDENTIFICADO— Use uma API Key criada no painel.
configurar
Salvar preferencias de notificacao
Define o e-mail de destino, eventos que geram aviso (autorizada, rejeitada, acao necessaria, falha) e o aviso opcional de pendencia (pendente_minutos, 5 a 10080; envia UM e-mail). empresa_id restringe a uma empresa do usuario e prevalece sobre a preferencia geral.
Autenticacao: Bearer API Key
nenhum
empresa_idemail_destinoemail_ativopainel_ativoev_autorizadaev_rejeitadaev_acaoev_falhapendente_minutos
{
"email_destino": "financeiro@empresa.com",
"pendente_minutos": 30
}
JSON completo
{
"empresa_id": 25,
"email_destino": "fiscal@empresa.com",
"email_ativo": true,
"painel_ativo": true,
"ev_autorizada": true,
"ev_rejeitada": true,
"ev_acao": true,
"ev_falha": true,
"pendente_minutos": 30
}curl -X PUT "https://www.fiscal.versianecode.com.br/api/v1/fiscal/notificacoes/preferencias" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"email_destino":"financeiro@empresa.com","pendente_minutos":30}'
{
"success": true,
"empresa_id": 25,
"preferencias": {
"email_destino": "fiscal@empresa.com",
"email_ativo": 1,
"pendente_minutos": 30
},
"request_id": "req_..."
}
422 VALIDATION_ERROR— E-mail invalido, minutos fora do limite ou empresa nao autorizada.
Webhooks
configurar
Cadastrar webhook
Recebe eventos nfe.*, nfce.*, nfse.*, cte.*, mdfe.* (authorized, rejected, cancelled, processing, closed) dfe.documentos_recebidos (novos documentos da Distribuicao DF-e) e fiscal.document.queued | pending | authorized | rejected | action_required | cancelled (solicitacoes assincronas; payload com solicitacao_id, documento, status, empresa_id, pedido e dados do resultado; deduplicados e com historico de entregas). URL https obrigatoria (http so para localhost em desenvolvimento), sem enderecos privados. O segredo HMAC e exibido UMA vez. Cada entrega envia X-Webhook-Event, X-Webhook-Id, X-Webhook-Timestamp e X-Webhook-Signature = "sha256=" + HMAC-SHA256(segredo, timestamp + "." + corpo). Rejeite timestamps antigos (protecao contra replay) e trate eventos repetidos pelo id. Retentativas com backoff (1m, 5m, 15m, 1h, 6h).
Autenticacao: Bearer API Key
url
eventos (lista ou ["*"])empresa_id (restringe a uma empresa)
{
"url": "https://seu-sistema.com/webhooks/fiscal",
"eventos": [
"nfse.authorized",
"cte.authorized",
"cteos.authorized",
"mdfe.closed"
]
}
JSON completo
{
"url": "https://seu-sistema.com/webhooks/fiscal",
"eventos": [
"nfe.authorized",
"nfe.rejected",
"nfse.authorized",
"nfse.rejected",
"cte.authorized",
"mdfe.authorized"
],
"empresa_id": 25
}curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/webhooks" \
-H "Authorization: Bearer SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://seu-sistema.com/webhooks/fiscal","eventos":["nfse.authorized","cte.authorized","cteos.authorized","mdfe.closed"]}'
{
"success": true,
"id": 4,
"url": "https://seu-sistema.com/webhooks/fiscal",
"eventos": [
"nfse.authorized"
],
"ativo": true,
"segredo": "whsec_...(exibido uma vez)",
"request_id": "req_..."
}
422 VALIDATION_ERROR— URL/evento invalidos.
consultar
Listar webhooks
Webhooks da sua credencial (sem o segredo).
Autenticacao: Bearer API Key
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/webhooks" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"itens": [
{
"id": 4,
"url": "https://...",
"eventos": [
"nfse.authorized"
],
"ativo": true,
"falhas_seguidas": 0
}
],
"request_id": "req_..."
}
consultar
Consultar webhook
Webhook da sua credencial.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/webhooks/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 4,
"url": "https://...",
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Webhook inexistente ou de outra credencial.
configurar
Desativar webhook
Desativacao logica (auditada).
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X DELETE "https://www.fiscal.versianecode.com.br/api/v1/webhooks/43" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"id": 4,
"ativo": false,
"request_id": "req_..."
}
404 NAO_ENCONTRADO— Webhook inexistente.
consultar
Historico de entregas
Ultimas 100 entregas: evento, status (PENDENTE, ENTREGUE, FALHA, ESGOTADO), tentativas, HTTP status e proxima tentativa.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X GET "https://www.fiscal.versianecode.com.br/api/v1/webhooks/43/entregas" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"itens": [
{
"evento": "nfse.authorized",
"status": "ENTREGUE",
"tentativas": 1,
"http_status": 200
}
],
"request_id": "req_..."
}
configurar
Enviar evento de teste
Envia o evento webhook.test assinado para a URL e devolve o resultado da entrega.
Autenticacao: Bearer API Key
Parametros de URL: {id} Identificador devolvido na emissao
nenhum
nenhum
curl -X POST "https://www.fiscal.versianecode.com.br/api/v1/webhooks/43/testar" \ -H "Authorization: Bearer SUA_API_KEY"
{
"success": true,
"status": "ENTREGUE",
"http_status": 200,
"duracao_ms": 120,
"request_id": "req_..."
}
502 FALHA— Receptor nao respondeu 2xx.
Erros comuns a todos os endpoints
| HTTP | code | Descricao |
|---|---|---|
| 401 | UNAUTHORIZED | Chave ausente, mal formada ou invalida. |
| 401 | API_KEY_REVOKED | A chave foi revogada. |
| 403 | API_KEY_BLOCKED | A chave esta bloqueada. |
| 403 | USER_INACTIVE | Usuario inativo ou bloqueado. |
| 403 | FORBIDDEN | A chave nao possui a permissao necessaria. |
| 403 | EMPRESA_NAO_AUTORIZADA | Empresa inexistente ou nao vinculada a sua conta. |
| 400 | JSON_INVALIDO | Corpo da requisicao nao e um JSON valido. |
| 413 | PAYLOAD_TOO_LARGE | Corpo acima do limite permitido. |
| 422 | VALIDATION_ERROR | Dados invalidos (lista em error.errors). |
| 422 | FISCAL_CONFIGURATION_REQUIRED | Falta configuracao fiscal: pendencias em error.missing/details e codigos estaveis em error.motivos (ex.: CERTIFICADO_VENCIDO, NATUREZA_NAO_CONFIGURADA, REGRA_TRIBUTARIA_NAO_ENCONTRADA). |
| 422 | CONFIG_FISCAL_INCOMPLETA | GET /configuracao-fiscal/validar: configuracao incompleta (pendencias em error.details). |
| 404 | NAO_ENCONTRADO | Registro inexistente ou pertencente a outra empresa (mesma resposta, nao revela existencia). |
| 404 | ROTA_NAO_ENCONTRADA | Rota inexistente. |
| 405 | METODO_NAO_PERMITIDO | Metodo HTTP nao permitido para o recurso. |
| 409 | REGISTRO_DUPLICADO | Ja existe registro com o mesmo codigo na empresa. |
| 409 | LIMITE_EMPRESAS | Limite de empresas por usuario atingido. |
| 422 | CNPJ_INVALIDO | CNPJ com digitos verificadores invalidos. |
| 422 | CERTIFICADO_INVALIDO | Arquivo do certificado invalido ou senha incorreta. |
| 422 | CERTIFICADO_VENCIDO | Certificado digital vencido. |
| 422 | CERTIFICADO_DIVERGENTE | Certificado pertence a outro CNPJ (raiz diferente da empresa). |
| 502 | CNPJ_CONSULTA_INDISPONIVEL | Servico de consulta de CNPJ indisponivel: preencha manualmente. |
| 402 | SALDO_INSUFICIENTE | Saldo de creditos insuficiente para a emissao (usuarios sem creditos ilimitados). Adicione creditos no painel (Financeiro) e tente novamente. Emissoes nao autorizadas pela SEFAZ sao estornadas automaticamente. |
| 403 | CARTEIRA_INDISPONIVEL | GET /financeiro/*: a credencial nao esta associada a uma carteira de creditos. |
| 422 | REVISAO_FISCAL_NECESSARIA | A tributacao nao pode ser determinada com seguranca (confidence_score baixo / requires_review=true): a emissao automatica e bloqueada. Use /fiscal/validate para ver o que falta. |
| 422 | IDEMPOTENCY_KEY_REUSED | Mesmo pedido/Idempotency-Key reenviado com conteudo diferente. |
| 409 | REQUEST_IN_PROGRESS | Requisicao identica ainda em processamento: aguarde e consulte o documento. |
| 422 | OVERRIDE_NAO_PERMITIDO | Override fiscal exige a permissao override. |
| 422 | OVERRIDE_SEM_MOTIVO | Override fiscal exige override_motivo (minimo 10 caracteres). |
| 403 | MODULO_NAO_HABILITADO | Modulo (nfse, cte, cteos, mdfe, rural) nao habilitado para a empresa. |
| 422 | SEFAZ_EVENT_REJECTION | Evento (cancelamento, CC-e, encerramento...) rejeitado pela SEFAZ. |
| 422 | NFSE_REJECTION | DPS rejeitada pelo Sistema Nacional da NFS-e (codigos em error.erros). |
| 501 | NFF_NAO_DISPONIVEL | Nota Fiscal Facil: arquitetura preparada, integracao oficial ainda nao implementada. |
| 429 | RATE_LIMITED | Limite de requisicoes por minuto excedido. Veja o header Retry-After. |
| 500 | INTERNAL_ERROR | Erro interno. Informe o request_id ao suporte. |