Introdução
A FISQAL API é uma API RESTful que retorna respostas em JSON. Autentique com Authorization: Bearer ou X-API-Key (API key do workspace). Cadastre empresas com POST /v1/companies e use o companyId nas demais rotas. Emissões fiscais (NFS-e, NF-e, NFC-e) são assíncronas: você recebe 202 Accepted e acompanha o status por consulta ou webhooks.
- REST + JSON
- Bearer / API Key
- CRUD de empresas (CNPJ)
- Emissão assíncrona (BullMQ)
- Webhooks com HMAC-SHA256
- NFS-e, NF-e e NFC-e
Autenticação
Rotas autenticadas exigem API key vinculada ao workspace. Use um dos headers abaixo:
Authorization: Bearer <api_key>
X-API-Key: <api_key>Cada API key possui scopes (RBAC). Inclua companies:read e companies:write para cadastrar emitentes via API:
companies:read, companies:write, certificates:read, certificates:write, nfse:read, nfse:write, nfse:cancel, nfe:read, nfe:write, nfe:cancel, nfce:read, nfce:write, nfce:cancel, mdfe:read, mdfe:write, mdfe:cancel, mdfe:event, cte:read, cte:write, cte:cancel, cte:event, cte:inutilize, webhooks:read, webhooks:writecurl -X POST 'https://api.fisqal.com.br/v1/companies' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"inscricao_municipal": "12345678",
"inscricao_estadual": "123456789",
"codigo_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"cep": "01310100",
"email": "contato@empresa.com.br",
"telefone": "1133334444",
"fiscal_ambiente": "producao"
}
EOFFluxo de integração
POST /v1/companies— cadastrar emitente (companies:write)POST /v1/companies/{companyId}/certificates— certificado A1PUT /v1/nfce/companies/{companyId}/csc— CSC (NFC-e, se aplicável)POST /v1/nfse,POST /v1/nfeouPOST /v1/nfce— emissão comcompanyIdno body
Idempotência
Envie Idempotency-Key em POSTs fiscais (ex.: POST /v1/nfse). Requisições repetidas com a mesma chave retornam a resposta existente sem criar nova emissão.
Importante
Headers importantes
| Header | Obrigatório | Descrição |
|---|---|---|
Authorization | Sim* | Bearer com API key |
X-API-Key | Sim* | Alternativa ao Bearer |
X-Correlation-Id | Não | Tracing distribuído opcional |
Idempotency-Key | Não | Evita emissão duplicada em POSTs fiscais |
Content-Type | Sim** | application/json ou multipart para certificados |
* Um dos dois métodos de autenticação. ** Em requisições com body.
Fluxo fiscal assíncrono
Reforma tributária
A FISQAL acompanha a Reforma Tributária do Consumo (IBS, CBS e IS) conforme as notas técnicas da Receita Federal. NF-e e NFC-e aceitam os novos grupos fiscais no payload JSON, serializados no XML oficial antes da transmissão à SEFAZ.
- NF-e e NFC-e com grupo IBSCBS por item
- Totais IBSCBSTot em total.ibsCbsTot
- NFS-e Nacional na mesma API
- Atualizações conforme NTs oficiais
Documentos suportados
Em POST /v1/nfe e POST /v1/nfce, informe det[].imposto.IBSCBS por item e, quando aplicável, total.ibsCbsTot para o totalizador. As chaves seguem a nomenclatura do XML NF-e (ex.: CST, cClassTrib, gIBSCBS).
Imposto por item (det[].imposto)
O grupo IBSCBS convive com ICMS, PIS, COFINS e demais tributos já suportados. Exemplo didático de um item:
{
"ICMS": {
"ICMS00": {
"orig": "0",
"CST": "00",
"modBC": "3",
"vBC": 100,
"pICMS": 18,
"vICMS": 18
}
},
"IBSCBS": {
"CST": "000",
"cClassTrib": "000001",
"gIBSCBS": {
"vBC": 100,
"gIBSUF": {
"pIBSUF": 0.1,
"vIBSUF": 0.1
},
"gIBSMun": {
"pIBSMun": 0,
"vIBSMun": 0
},
"vIBS": 0.1,
"gCBS": {
"pCBS": 0.9,
"vCBS": 0.9
}
}
}
}Totais (total)
Quando exigido pelo leiaute vigente, envie total.ibsCbsTot com a estrutura do grupo IBSCBSTot:
{
"icmsTot": {
"vBC": 100,
"vICMS": 18,
"vProd": 100,
"vNF": 100
},
"ibsCbsTot": {
"vBCIBSCBS": 100,
"gIBS": {
"gIBSUF": {
"vDif": 0,
"vDevTrib": 0,
"vIBSUF": 0.1
},
"gIBSMun": {
"vDif": 0,
"vDevTrib": 0,
"vIBSMun": 0
},
"vIBS": 0.1,
"vCredPres": 0,
"vCredPresCondSus": 0
},
"gCBS": {
"vDif": 0,
"vDevTrib": 0,
"vCBS": 0.9,
"vCredPres": 0,
"vCredPresCondSus": 0
}
}
}Homologação
Regras de preenchimento
Empresas
CRUD de empresas emitentes (CNPJ) via API key. Scopes companies:read e companies:write. Cada CNPJ é único por workspace; respostas incluem plan_eligible quando aplicável.
/v1/companies200List companies
Lista empresas do workspace com certificado mais recente e flag plan_eligible.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
status | string | Não | — | 40 | Filtrar por status (active | inactive) |
search | string | Não | — | 255 | Busca por razao social, nome fantasia ou CNPJ |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/companies?status=authorized' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de empresas do workspace
[
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"workspace_id": "660e8400-e29b-41d4-a716-446655440001",
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"status": "active",
"fiscal_ambiente": "producao",
"plan_eligible": true,
"certificates": [
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"status": "active",
"valido_ate": "2026-12-31T23: 59: 59.000Z",
"certificado_tipo": "A1"
}
],
"created_at": "2026-05-16T10: 00: 00.000Z"
}
]Possíveis erros
/v1/companies201Create company
Cadastra nova empresa emitente no workspace. CNPJ único por workspace.
Request body
CreateCompanyDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/companies' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"inscricao_municipal": "12345678",
"inscricao_estadual": "123456789",
"codigo_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"cep": "01310100",
"email": "contato@empresa.com.br",
"telefone": "1133334444",
"fiscal_ambiente": "producao"
}
EOFResponse
201 Empresa criada
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"workspace_id": "660e8400-e29b-41d4-a716-446655440001",
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"status": "active",
"fiscal_ambiente": "producao",
"created_at": "2026-05-16T10: 00: 00.000Z"
}Possíveis erros
/v1/companies/{id}200Get company
Detalhe da empresa com certificados, CSC NFC-e e plan_eligible.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/companies/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Detalhe da empresa
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"razao_social": "Empresa Emitente LTDA",
"cnpj": "12345678000199",
"status": "active",
"fiscal_ambiente": "producao",
"plan_eligible": true,
"certificates": [],
"nfce_csc_configs": []
}Possíveis erros
/v1/companies/{id}200Update company
Atualiza dados cadastrais da empresa.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID da empresa |
Request body
CreateCompanyDtoExemplo de requisição
curl -X PATCH 'https://api.fisqal.com.br/v1/companies/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"inscricao_municipal": "12345678",
"inscricao_estadual": "123456789",
"codigo_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"cep": "01310100",
"email": "contato@empresa.com.br",
"telefone": "1133334444",
"fiscal_ambiente": "producao"
}
EOFResponse
200 Empresa atualizada
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"razao_social": "Empresa Emitente LTDA",
"cnpj": "12345678000199",
"status": "active",
"fiscal_ambiente": "producao"
}Possíveis erros
/v1/companies/{id}/status200Update company status
Ativa ou desativa empresa. Empresas inativas não emitem documentos fiscais.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID da empresa |
Request body
UpdateCompanyStatusDtoExemplo de requisição
curl -X PATCH 'https://api.fisqal.com.br/v1/companies/c3d4e5f6-a7b8-9012-cdef-123456789012/status' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"status": "inactive"
}
EOFResponse
200 Status da empresa atualizado
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "inactive"
}Possíveis erros
/v1/companies/{id}200Delete company
Remove empresa do workspace permanentemente.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X DELETE 'https://api.fisqal.com.br/v1/companies/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Empresa removida
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deleted": true
}Possíveis erros
Certificados
Certificados A1 ICP-Brasil por empresa. Endpoints sob /v1/companies/{companyId}/certificates (API key). Use o companyId retornado em POST /v1/companies.
Ordem recomendada
POST /v1/companies · 2) Upload do certificado abaixo./v1/companies/{companyId}/certificates201Upload A1 certificate
Envia certificado digital A1 ICP-Brasil (.pfx). Use o companyId (UUID) retornado em POST /v1/companies.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Content-Type | multipart/form-data | Sim | — | — | multipart/form-data |
Request body
multipart: nome, password, fileExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/certificates' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-F 'nome=Certificado Producao' \
-F 'password=senha-certificado' \
-F 'file=@certificado.pfx'Response
201 Certificado armazenado com sucesso
{
"id": "cert_uuid",
"nome": "Certificado Producao",
"status": "active"
}Possíveis erros
/v1/companies/{companyId}/certificates200List company certificates
Lista certificados da empresa. Requer companyId (UUID) válido no workspace.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/certificates' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de certificados
[
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"nome": "Certificado Producao",
"certificado_tipo": "A1",
"thumbprint": "A1B2C3D4E5F6",
"valido_de": "2025-01-01T00: 00: 00.000Z",
"valido_ate": "2026-12-31T23: 59: 59.000Z",
"status": "active",
"created_at": "2026-05-16T10: 00: 00.000Z"
}
]Possíveis erros
/v1/companies/{companyId}/certificates/{certificateId}200Delete company certificate
Remove o certificado A1 da empresa. Requer certificates:write. Remova o certificado atual antes de enviar outro.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
certificateId | uuid | Sim | — | — | ID do certificado |
Exemplo de requisição
curl -X DELETE 'https://api.fisqal.com.br/v1/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/certificates/b2c3d4e5-f6a7-8901-bcde-f12345678901' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Certificado removido
{
"id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"deleted": true
}Possíveis erros
/v1/companies/{companyId}/certificates/{certificateId}/test200Test certificate signature and communication
Valida assinatura digital e comunicação com o ambiente fiscal.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
certificateId | uuid | Sim | — | — | ID do certificado |
Exemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/certificates/b2c3d4e5-f6a7-8901-bcde-f12345678901/test' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Resultado do teste
{
"valid": true,
"message": "SEFIN Nacional reachable",
"signatureTestPassed": true,
"communicationTestPassed": true
}Possíveis erros
NFS-e
/v1/nfse202 async202Emit NFS-e asynchronously
Enfileira emissão de NFS-e via API SEFIN Nacional (mTLS + certificado A1). `servico.codigoNbs` (9 dígitos) é obrigatório desde 01/01/2026. Suporta dedução Salão Parceiro opcional (`salaoParceiro`, XSD tpDedRed=9). `valores.aliquotaIssqn` (XML `pAliq`) é omitido quando o município de incidência está parametrizado no SN NFS-e; obrigatório quando `tribIssqn=1` e incidência não parametrizada. O companyId no body deve existir no workspace (POST /v1/companies). Retorna 202 com status pending.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita emissão duplicada |
X-Correlation-Id | string | Não | 1 | 64 | Tracing opcional |
Request body — CreateNfseDpsDto
Payload para emissão assíncrona de NFS-e (DPS).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace (POST /v1/companies) |
idDps | string | Sim | 1 | 64 | Identificador único do DPS no sistema do emissor (até 64 caracteres) |
serieDps | string | Sim | 1 | 5 | Série do DPS/RPS (até 5 caracteres) |
numeroDps | string | Sim | 1 | 15 | Número sequencial do DPS/RPS (somente dígitos) |
codigoMunicipioEmissor | string | Sim | 7 | 7 | Código IBGE do município emissor (7 dígitos) |
tipoInscricaoPrestador | string | Sim | 1 | 1 | Tipo de inscrição do prestador: 1=CPF, 2=CNPJ |
inscricaoFederalPrestador | string | Sim | 1 | 14 | CPF ou CNPJ do prestador (sem formatação) |
inscricaoMunicipalPrestador | string | Não | 6 | 20 | Inscrição municipal do prestador. Opcional se já cadastrada na empresa; pode ser exigida pelo município |
dataCompetencia | date | Sim | — | — | Data de competência do serviço (YYYY-MM-DD) |
opSimpNac | string | Não | 1 | 1 | Opção Simples Nacional: 1=não optante, 2=MEI, 3=ME/EPP (XSD TSOpSimpNac) |
regApTribSN | string | Não | 1 | 1 | Regime apuração SN: 1|2|3. Obrigatório quando opSimpNac=3 (XSD TSRegimeApuracaoSimpNac) |
regEspTrib | string | Não | 1 | 1 | Regime especial tributação: 0|1|2|3|4|5|6|9 (XSD TSRegEspTrib) |
tomador.tipoInscricao | string | Sim | 1 | 1 | Tipo de inscrição: 1=CPF, 2=CNPJ |
tomador.inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do tomador (sem formatação) |
tomador.razaoSocial | string | Sim | 1 | 255 | Nome ou razão social do tomador |
tomador.email | string | Não | 1 | 80 | E-mail do tomador. Opcional |
tomador.inscricaoMunicipal | string | Não | 1 | 15 | Inscrição municipal do tomador. Opcional |
tomador.endereco.logradouro | string | Sim | 1 | 255 | Logradouro (rua, avenida etc.) |
tomador.endereco.numero | string | Sim | 1 | 20 | Número do imóvel |
tomador.endereco.complemento | string | Não | 1 | 120 | Complemento do endereço. Opcional |
tomador.endereco.bairro | string | Sim | 1 | 120 | Bairro |
tomador.endereco.codigoMunicipio | string | Sim | 7 | 7 | Código IBGE do município (7 dígitos) |
tomador.endereco.uf | string | Sim | 2 | 2 | Sigla da UF (2 letras) |
tomador.endereco.cep | string | Sim | 8 | 8 | CEP (8 dígitos, sem hífen) |
servico.codigoServico | string | Sim | 6 | 6 | Código cTribNac (6 dígitos — item + subitem LC 116 + desdobro nacional). Catálogo: GET /v1/nfse/codigos-tributacao |
servico.municipioIncidencia | string | Sim | 7 | 7 | Código IBGE do município de incidência do ISSQN (7 dígitos) |
servico.discriminacao | string | Sim | 1 | 2000 | Descrição detalhada do serviço prestado |
servico.codigoNbs | string | Sim | 9 | 9 | Código NBS (9 dígitos). Obrigatório desde 01/01/2026. Catálogo: GET /v1/nfse/codigos-nbs |
servico.codigoTributacaoMunicipio | string | Não | 3 | 9 | Código de tributação municipal (3–9 dígitos). Opcional, conforme município |
servico.codigoIndicadorOperacao | string | Não | 6 | 6 | Indicador de operação RTC (6 dígitos, ex.: 050102). Opcional; exigido em cenários RTC |
servico.ibsCbsSituacaoTributaria | string | Não | 3 | 3 | CST IBS/CBS (3 dígitos, ex.: 000). Opcional; exigido em cenários RTC |
servico.ibsCbsClassificacaoTributaria | string | Não | 6 | 6 | Classificação tributária IBS/CBS (6 dígitos, ex.: 000001). Opcional; exigido em cenários RTC |
servico.tipoOperacao | string | Não | 1 | 1 | Tipo de operação RTC (TipoOp): 1|2|3|4|5. Opcional; exigido em Fortaleza/RTC |
valores.valorServico | number | Sim | — | — | Valor bruto do serviço prestado |
valores.tribIssqn | string | Não | 1 | 1 | Tributação ISSQN: 1|2|3|4 (XSD TSTribISSQN) |
valores.tpRetIssqn | string | Não | 1 | 1 | Tipo retenção ISSQN: 1|2|3 (XSD TSTipoRetISSQN) |
valores.aliquotaIssqn | number | Não | — | — | Alíquota ISSQN (%). XML pAliq. Omitir quando município parametrizado no SN NFS-e; obrigatório quando tribIssqn=1 e incidência não parametrizada |
valores.valorPis | number | Não | — | — | Valor de PIS não retido (NT RPS 3.0 — ValorPis). Opcional |
valores.valorCofins | number | Não | — | — | Valor de COFINS não retido (NT RPS 3.0 — ValorCofins). Opcional |
valores.valorCsll | number | Não | — | — | Valor de CSLL retida (NT RPS 3.0 — ValorCsll). Opcional |
salaoParceiro.valorDeducao | number | Não | — | — | Valor agregado (vDR) |
salaoParceiro.documentos | NfseSalaoParceiroDocumentoDto[] | Não | — | — | Lista docDedRed |
salaoParceiro.documentos[].chaveNfse | string | Não | 1 | 50 | Chave NFS-e nacional |
salaoParceiro.documentos[].chaveNfe | string | Não | 44 | 44 | Chave NF-e |
salaoParceiro.documentos[].numeroDocumentoFiscal | string | Não | 1 | 255 | nDocFisc |
salaoParceiro.documentos[].numeroDocumento | string | Não | 1 | 255 | nDoc (não fiscal) |
salaoParceiro.documentos[].dataEmissaoDocumento | date | Sim | — | — | Data de emissão do documento de dedução |
salaoParceiro.documentos[].valorDedutivel | number | Sim | — | — | Valor dedutível/referência do documento |
salaoParceiro.documentos[].valorDeducao | number | Sim | — | — | Valor efetivo da dedução aplicada |
salaoParceiro.documentos[].profissionalParceiro.tipoInscricao | string | Sim | 1 | 1 | 1 = CPF, 2 = CNPJ |
salaoParceiro.documentos[].profissionalParceiro.inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do profissional parceiro |
salaoParceiro.documentos[].profissionalParceiro.razaoSocial | string | Sim | 1 | 255 | Nome ou razão social do profissional parceiro |
salaoParceiro.documentos[].profissionalParceiro.inscricaoMunicipal | string | Não | 1 | 15 | Inscrição municipal do profissional. Opcional |
finalidadeEmissao | string | Não | 1 | 1 | Finalidade da emissão: 0=regular. Opcional |
indicadorDestinatario | string | Não | 1 | 1 | Indica destinatário distinto do tomador: 0=não, 1=sim. Opcional (RTC/Fortaleza) |
consumidorFinal | string | Não | 1 | 1 | Uso/consumo pessoal: 0=não, 1=sim. Opcional (RTC) |
tipoEnteGovernamental | string | Não | 1 | 1 | Tipo de ente governamental: 1|2|3|4. Opcional, quando aplicável (RTC) |
destinatarioRtc.tipoInscricao | string | Sim | 1 | 1 | Tipo de inscrição: 1=CPF, 2=CNPJ |
destinatarioRtc.inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do destinatário |
destinatarioRtc.nif | string | Não | — | 40 | NIF do destinatário estrangeiro. Quando informado, use naoNif=0. Opcional |
destinatarioRtc.naoNif | string | Sim | 1 | 1 | Motivo para não informar NIF: 0=não informado na origem (com NIF), 1=dispensado, 2=não exigência |
destinatarioRtc.nome | string | Sim | 1 | 150 | Nome ou razão social do destinatário |
destinatarioRtc.endereco.logradouro | string | Sim | 1 | 255 | Logradouro (rua, avenida etc.) |
destinatarioRtc.endereco.numero | string | Sim | 1 | 20 | Número do imóvel |
destinatarioRtc.endereco.complemento | string | Não | 1 | 120 | Complemento do endereço. Opcional |
destinatarioRtc.endereco.bairro | string | Sim | 1 | 120 | Bairro |
destinatarioRtc.endereco.codigoMunicipio | string | Sim | 7 | 7 | Código IBGE do município (7 dígitos) |
destinatarioRtc.endereco.uf | string | Sim | 2 | 2 | Sigla da UF (2 letras) |
destinatarioRtc.endereco.cep | string | Sim | 8 | 8 | CEP (8 dígitos, sem hífen) |
destinatarioRtc.telefone | string | Não | — | 20 | Telefone do destinatário. Opcional |
destinatarioRtc.email | string | Não | — | 80 | E-mail do destinatário. Obrigatório quando indicadorDestinatario=1 (Fortaleza) |
imovelRtc.inscricaoImobiliariaFiscal | string | Não | — | 30 | Inscrição imobiliária fiscal do imóvel. Opcional conforme município |
imovelRtc.codigoCib | string | Não | — | 8 | Código CIB (Cadastro Imobiliário Brasileiro). Opcional |
imovelRtc.endereco.logradouro | string | Sim | 1 | 255 | Logradouro (rua, avenida etc.) |
imovelRtc.endereco.numero | string | Sim | 1 | 20 | Número do imóvel |
imovelRtc.endereco.complemento | string | Não | 1 | 120 | Complemento do endereço. Opcional |
imovelRtc.endereco.bairro | string | Sim | 1 | 120 | Bairro |
imovelRtc.endereco.codigoMunicipio | string | Sim | 7 | 7 | Código IBGE do município (7 dígitos) |
imovelRtc.endereco.uf | string | Sim | 2 | 2 | Sigla da UF (2 letras) |
imovelRtc.endereco.cep | string | Sim | 8 | 8 | CEP (8 dígitos, sem hífen) |
nfseReferenciadaRtc.chavesNfseReferenciada | string[] | Sim | — | — | Lista de chaves NFS-e referenciadas (50 dígitos numéricos cada, 1–100 itens) |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"idDps": "DPS355030812345678900019900000000001",
"serieDps": "900",
"numeroDps": "1",
"codigoMunicipioEmissor": "3550308",
"tipoInscricaoPrestador": "2",
"inscricaoFederalPrestador": "12345678000199",
"inscricaoMunicipalPrestador": "123456",
"dataCompetencia": "2026-05-01",
"opSimpNac": "1",
"regApTribSN": "1",
"regEspTrib": "0",
"tomador": {
"tipoInscricao": "2",
"inscricaoFederal": "12345678000199",
"inscricaoMunicipal": "12345678",
"razaoSocial": "Tomador Exemplo LTDA",
"email": "contato@tomador.com.br",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"complemento": "Sala 101",
"bairro": "Bela Vista",
"codigoMunicipio": "3550308",
"uf": "SP",
"cep": "01310100"
}
},
"servico": {
"codigoServico": "010101",
"codigoNbs": "115021000",
"municipioIncidencia": "3550308",
"discriminacao": "Consultoria em tecnologia da informacao",
"codigoTributacaoMunicipio": "010"
},
"valores": {
"valorServico": 1500,
"tribIssqn": "1",
"tpRetIssqn": "1",
"aliquotaIssqn": 5
},
"salaoParceiro": {
"documentos": [
{
"numeroDocumento": "contrato-parceria-001",
"dataEmissaoDocumento": "2026-05-01",
"valorDedutivel": 500,
"valorDeducao": 500,
"profissionalParceiro": {
"tipoInscricao": "1",
"inscricaoFederal": "12345678901",
"razaoSocial": "Profissional Parceiro"
}
}
]
}
}Exemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfse' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'X-Correlation-Id: corr_9e2f1a8b3c7d4e6f' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"idDps": "DPS355030812345678900019900000000001",
"serieDps": "900",
"numeroDps": "1",
"codigoMunicipioEmissor": "3550308",
"tipoInscricaoPrestador": "2",
"inscricaoFederalPrestador": "12345678000199",
"inscricaoMunicipalPrestador": "123456",
"dataCompetencia": "2026-05-01",
"opSimpNac": "1",
"regApTribSN": "1",
"regEspTrib": "0",
"tomador": {
"tipoInscricao": "2",
"inscricaoFederal": "12345678000199",
"inscricaoMunicipal": "12345678",
"razaoSocial": "Tomador Exemplo LTDA",
"email": "contato@tomador.com.br",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"complemento": "Sala 101",
"bairro": "Bela Vista",
"codigoMunicipio": "3550308",
"uf": "SP",
"cep": "01310100"
}
},
"servico": {
"codigoServico": "010101",
"codigoNbs": "115021000",
"municipioIncidencia": "3550308",
"discriminacao": "Consultoria em tecnologia da informacao",
"codigoTributacaoMunicipio": "010"
},
"valores": {
"valorServico": 1500,
"tribIssqn": "1",
"tpRetIssqn": "1",
"aliquotaIssqn": 5
},
"salaoParceiro": {
"documentos": [
{
"numeroDocumento": "contrato-parceria-001",
"dataEmissaoDocumento": "2026-05-01",
"valorDedutivel": 500,
"valorDeducao": 500,
"profissionalParceiro": {
"tipoInscricao": "1",
"inscricaoFederal": "12345678901",
"razaoSocial": "Profissional Parceiro"
}
}
]
}
}
EOFResponse
202 Accepted — processamento assíncrono iniciado
{
"dpsId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "pending",
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890"
}Possíveis erros
/v1/public/nfse/municipios/cobertura200List NFS-e national municipality coverage (public)
Lista municípios com emissão via SEFIN Nacional, GINFES, webservice ABRASF 2.04 (issnet-abrasf-204) ou ISS.Net nacional (issnet-nacional) e aderidos pendentes.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
fiscalAmbiente | string | Não | 8 | 11 | homologacao | producao (default: producao) |
status | string | Não | — | — | emissao | aderido | todos (default: todos) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/public/nfse/municipios/cobertura?status=authorized'Response
200 Lista de municípios com cobertura NFS-e nacional, resumo por status e data da última sincronização ADN.
{
"fiscalAmbiente": "producao",
"sincronizadoEm": "2026-05-17T12: 00: 00.000Z",
"resumo": {
"emissaoDisponivel": 3734,
"aderidosAguardandoParametrizacao": 1753,
"emSincronizacao": 93
},
"municipiosEmissao": [
{
"codigoIbge": "3550308",
"municipio": "Sao Paulo",
"uf": "SP"
}
],
"municipiosAderidosPendentes": [
{
"codigoIbge": "3304557",
"municipio": "Rio de Janeiro",
"uf": "RJ"
}
]
}/v1/nfse/municipios/{codigoIbge}/cobertura200Get NFS-e national coverage for municipality
Cobertura municipal: nacionalAderido, nacionalEmissorNacional, podeEmitir (SEFIN, ginfes, issnet-abrasf-204 ou issnet-nacional), provedor efetivo.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigoIbge | string | Sim | — | — | Código IBGE do município (7 dígitos) |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
fiscalAmbiente | string | Não | 8 | 11 | homologacao | producao |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/municipios/{codigoIbge}/cobertura' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Cobertura fiscal do município: provedor efetivo, flags ADN e se a emissão está disponível.
{
"codigoMunicipioIbge": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"provedor": "sefin-nacional",
"padraoNfse": "1.01",
"ambiente": "homologacao",
"nacionalAderido": true,
"nacionalEmissorNacional": true,
"nacionalParametrizado": true,
"podeEmitir": true,
"syncedAt": "2026-05-17T12: 00: 00.000Z",
"syncSource": "adn"
}Possíveis erros
/v1/nfse/codigos-tributacao200List NFS-e national service codes
Catálogo oficial cTribNac (6 dígitos: item + subitem LC 116 + desdobro nacional). Requer API key com escopo nfse:read.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
q | string | Não | — | 120 | Busca por código ou descrição (opcional) |
limit | number | Não | — | — | Limite de resultados (opcional; omitir retorna todos; máx. 400 quando informado) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/codigos-tributacao' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de códigos de tributação nacional
{
"items": [
{
"codigo": "010101",
"descricao": "Análise e desenvolvimento de sistemas.",
"itemLc116": "1.01"
}
],
"total": 337
}Possíveis erros
/v1/nfse/codigos-nbs200List NFS-e NBS codes
Catálogo oficial NBS (9 dígitos). Filtre por codigoServico (cTribNac) para obter correlações do Anexo VIII. Requer API key com escopo nfse:read.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigoServico | string | Não | 6 | 6 | Filtra pela correlação Anexo VIII com cTribNac |
q | string | Não | — | 120 | Busca por código ou descrição (opcional) |
limit | number | Não | — | — | Limite de resultados (opcional; omitir retorna todos; máx. 400 quando informado) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/codigos-nbs?codigoServico=010101' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de códigos NBS
{
"items": [
{
"codigo": "115021000",
"descricao": "Serviços de projeto, desenvolvimento e instalação de aplicativos e programas não personalizados (não customizados)"
}
],
"total": 5
}Possíveis erros
/v1/nfse/servicos/{codigoServico}/parametros200NFS-e service deduction parameters
Elegibilidade de dedução/Salão Parceiro (tpDedRed=9) por município e código de serviço. Regras estáticas Anexo I (E0435–E0441) e parametrização ADN (E0440, E0446, E0447, E0449) para SEFIN Nacional.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigoServico | string | Sim | 6 | 6 | cTribNac (6 dígitos) |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
municipioIbge | string | Sim | 7 | 7 | Código IBGE do município de incidência ISSQN |
companyId | string | Sim | — | — | UUID da empresa emissora |
dataCompetencia | string | Não | — | — | Data de competência (YYYY-MM-DD) |
opSimpNac | string | Não | 1 | 1 | 1 | 2 | 3 |
regApTribSN | string | Não | 1 | 1 | 1 | 2 | 3 (quando opSimpNac=3) |
regEspTrib | string | Não | 1 | 1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 9 |
tribIssqn | string | Não | 1 | 1 | 1 | 2 | 3 | 4 |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/servicos/060101/parametros?municipioIbge=3550308&companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Elegibilidade e parâmetros de dedução do serviço
{
"codigoServico": "060101",
"municipioIncidencia": "3550308",
"permiteSalaoParceiro": true,
"permiteValorAgregado": true,
"permiteDocumentos": true,
"tpDedRedSalaoParceiro": "9",
"motivosInelegibilidade": [],
"tiposDeducaoAdmitidos": [
"9"
],
"aliquotaIssqn": 5,
"fonteParametros": "adn"
}Possíveis erros
/v1/nfse200List NFS-e DPS records
Lista registros DPS do workspace com filtros opcionais.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Não | — | — | Filtrar por empresa |
status | string | Não | 4 | 13 | pending | validated | xml_generated | signed | queued | processing | sent | authorized | rejected | failed | cancelled |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890&status=authorized' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista paginada de DPS
[
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie_dps": "900",
"numero_dps": "42",
"status": "authorized",
"chave_acesso_nfse": "35260535503085000199550010000000421123456789",
"data_competencia": "2026-05-01",
"created_at": "2026-05-16T10: 00: 00.000Z",
"tomador": {
"razao_social": "Tomador Exemplo LTDA"
},
"servico": {
"codigo_tributacao_nacional": "010701"
},
"valores": {
"valor_servico": "1500.00"
},
"documents": [
{
"id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"status": "authorized"
}
]
}
]Possíveis erros
/v1/nfse/{id}200Get NFS-e DPS by id
Consulta detalhes de um DPS/NFS-e pelo identificador.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Registro DPS
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie_dps": "900",
"numero_dps": "42",
"status": "authorized",
"chave_acesso_nfse": "35260535503085000199550010000000421123456789",
"protocolo_nacional": "PROT123456",
"data_competencia": "2026-05-01",
"tomador": {
"razao_social": "Tomador Exemplo LTDA"
},
"servico": {
"codigo_tributacao_nacional": "010701"
},
"valores": {
"valor_servico": "1500.00"
},
"documents": [
{
"chave_acesso_nfse": "35260535503085000199550010000000421123456789"
}
],
"fiscal_requests": [
{
"id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"status": "sent",
"operation": "emit"
}
]
}Possíveis erros
/v1/nfse/{id}/consulta-sefin200Consult NFS-e at Sefin Nacional
Consulta NFS-e na Sefin Nacional por chave de acesso e persiste em nfse_consultas.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
chave | string | Não | — | — | Chave de acesso NFS-e (opcional se já autorizada) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012/consulta-sefin' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Resultado da consulta Sefin
{
"consultaId": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"found": true,
"chaveAcesso": "35260535503085000199550010000000421123456789",
"xmlNfse": "<NFSe>...</NFSe>",
"durationMs": 842
}Possíveis erros
/v1/nfse/{id}/status200Get NFS-e status timeline
Retorna linha do tempo de transições de status do documento.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012/status' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Timeline de status
{
"dpsId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "authorized",
"chaveAcesso": "35260535503085000199550010000000421123456789",
"logs": [
{
"level": "info",
"message": "NFS-e authorized",
"context": {
"protocolo": "PROT123456"
},
"createdAt": "2026-05-16T10: 05: 00.000Z"
}
]
}Possíveis erros
/v1/nfse/{id}/cancel202 async202Cancel NFS-e asynchronously
Enfileira cancelamento da NFS-e autorizada.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Request body
CancelNfseDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012/cancel' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"motivoCancelamento": "Cancelamento solicitado pelo tomador"
}
EOFResponse
202 Accepted — cancelamento enfileirado
{
"cancelamentoId": "f6a7b8c9-d0e1-2345-f012-456789012345",
"status": "pending"
}Possíveis erros
/v1/nfse/{id}/xml200Get signed URL for NFS-e XML
Retorna URL assinada temporária para download do XML.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012/xml' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 URL assinada do XML
"https://storage.example.com/nfse/xml-signed-abc123?token=xyz"Possíveis erros
/v1/nfse/{id}/pdf200Get signed URL for DANFSE PDF
Retorna URL assinada temporária para download do DANFSE. Query variant=authorized (emissão; padrão se omitido) ou variant=cancelled (pós-cancelamento).
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do DPS |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
variant | string | Não | — | — | authorized | cancelled (padrão: authorized) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/c3d4e5f6-a7b8-9012-cdef-123456789012/pdf' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 { url } — URL assinada do PDF
{
"url": "https://storage.example.com/nfse/danfse-abc123.pdf?token=xyz"
}Possíveis erros
/v1/nfse/status/service200Consult fiscal service status
Consulta disponibilidade do serviço SEFIN Nacional (provider sefin-nacional).
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfse/status/service?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Status do serviço fiscal
{
"online": true,
"message": "SEFIN Nacional reachable",
"durationMs": 312
}Possíveis erros
/v1/nfse/consulta-chave200Consult external NFS-e by key or DPS id
Consulta NFS-e externa por chave ou idDps no provider municipal/nacional e upsert em nfse_documents.
Request body
ConsultNfseChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfse/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "CHAVE"
}
EOFResponse
200 Resultado da consulta externa
{
"consultaId": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"found": true,
"chaveAcesso": "53001000000123456789012345678901234567890123456",
"durationMs": 620
}Possíveis erros
/v1/nfse/external/sync202 async202Sync external NFS-e by period or range
Enfileira sincronizacao GINFES ou ABRASF 2.04 (prestado, tomado ou faixa). Requer ginfes ou issnet-abrasf-204.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita sync duplicado |
Request body
SyncNfseExternalDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfse/external/sync' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"codigoMunicipioIbge": "3550308",
"mode": "prestado"
}
EOFResponse
202 Accepted — sync enfileirado
{
"syncRunId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"status": "queued"
}Possíveis erros
NF-e
/v1/nfe202 async202Emit NF-e asynchronously
Enfileira emissão de NF-e modelo 55 na SEFAZ. O companyId no body deve existir no workspace (POST /v1/companies).
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita emissão duplicada |
X-Correlation-Id | string | Não | 1 | 64 | Tracing opcional |
Request body — CreateNfeDto
Payload para emissão assíncrona de NF-e (modelo 55).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace (POST /v1/companies) |
ide.cuf | string | Sim | 2 | 2 | Código IBGE da UF do emitente (2 dígitos, ex.: 35=SP) |
ide.cnf | string | Não | 8 | 8 | Código numérico da NF-e (8 dígitos). Opcional; a API gera se omitido |
ide.natOp | string | Sim | 1 | 60 | Descrição da natureza da operação |
ide.serie | string | Sim | 1 | 3 | Série da NF-e |
ide.nnf | string | Sim | 1 | 9 | Número da NF-e |
ide.dhEmi | string | Sim | — | 35 | Data e hora de emissão em ISO 8601 com fuso (ex.: 2026-05-16T10:00:00-03:00) |
ide.dhSaiEnt | string | Não | — | 35 | Data e hora de saída ou entrada da mercadoria. Opcional |
ide.tpNf | string | Sim | 1 | 1 | Tipo da NF-e: 0=entrada, 1=saída |
ide.idDest | string | Sim | 1 | 1 | Destino da operação: 1=interna, 2=interestadual, 3=exterior |
ide.cMunFg | string | Sim | 7 | 7 | Código IBGE do município do fato gerador do ICMS (7 dígitos) |
ide.tpImp | string | Sim | 1 | 1 | Formato DANFE: 1=retrato (padrão NF-e), 2=paisagem |
ide.tpEmis | string | Não | 1 | 1 | Tipo de emissão: 1=normal (default). Outros valores para contingência |
ide.finNfe | string | Sim | 1 | 1 | Finalidade: 1=normal, 2=complementar, 3=ajuste, 4=devolução |
ide.indFinal | string | Sim | 1 | 1 | Consumidor final: 0=não, 1=sim |
ide.indPres | string | Sim | 1 | 1 | Indicador de presença do comprador (tabela SEFAZ: 0–9) |
ide.indIntermed | string | Não | 1 | 1 | Indicador de intermediador/marketplace: 0=sem, 1=com. Opcional |
ide.procEmi | string | Não | 1 | 1 | Processo de emissão: 0=app contribuinte, 1=avulsa Fisco, 3=app certificado. Opcional |
ide.verProc | string | Não | 1 | 20 | Versão do processo emissor (ex.: FISQAL-1.0). Opcional |
emit.cnpj | string | Sim | 14 | 14 | CNPJ do emitente (14 dígitos, sem formatação) |
emit.xNome | string | Sim | 1 | 255 | Razão social do emitente |
emit.xFant | string | Não | 1 | 60 | Nome fantasia. Opcional |
emit.enderEmit.xLgr | string | Sim | — | — | Logradouro |
emit.enderEmit.nro | string | Sim | — | — | Número |
emit.enderEmit.xCpl | string | Não | — | — | Complemento. Opcional |
emit.enderEmit.xBairro | string | Sim | — | — | Bairro |
emit.enderEmit.cMun | string | Sim | — | — | Código IBGE do município (7 dígitos) |
emit.enderEmit.xMun | string | Sim | — | — | Nome do município |
emit.enderEmit.UF | string | Não | — | — | Sigla UF (2 letras). Aceita também uf |
emit.enderEmit.uf | string | Não | — | — | Sigla UF (2 letras). Aceita também UF |
emit.enderEmit.CEP | string | Não | — | — | CEP (8 dígitos). Aceita também cep |
emit.enderEmit.cep | string | Não | — | — | CEP (8 dígitos). Aceita também CEP |
emit.enderEmit.cPais | string | Não | — | — | Código país (1058=Brasil). Opcional |
emit.enderEmit.xPais | string | Não | — | — | Nome do país. Opcional |
emit.ie | string | Sim | 1 | 14 | Inscrição estadual do emitente |
emit.crt | string | Sim | 1 | 1 | Código de regime tributário: 1=Simples Nacional, 2=Simples excesso, 3=Normal |
dest.cnpj | string | Não | 14 | 14 | CNPJ do destinatário (14 dígitos). Mutuamente exclusivo com cpf |
dest.cpf | string | Não | 11 | 11 | CPF do destinatário (11 dígitos). Mutuamente exclusivo com cnpj |
dest.xNome | string | Sim | 2 | 60 | Nome ou razão social do destinatário |
dest.enderDest.xLgr | string | Sim | — | — | Logradouro |
dest.enderDest.nro | string | Sim | — | — | Número |
dest.enderDest.xCpl | string | Não | — | — | Complemento. Opcional |
dest.enderDest.xBairro | string | Sim | — | — | Bairro |
dest.enderDest.cMun | string | Sim | — | — | Código IBGE do município (7 dígitos) |
dest.enderDest.xMun | string | Sim | — | — | Nome do município |
dest.enderDest.UF | string | Não | — | — | Sigla UF (2 letras). Aceita também uf |
dest.enderDest.uf | string | Não | — | — | Sigla UF (2 letras). Aceita também UF |
dest.enderDest.CEP | string | Não | — | — | CEP (8 dígitos). Aceita também cep |
dest.enderDest.cep | string | Não | — | — | CEP (8 dígitos). Aceita também CEP |
dest.enderDest.cPais | string | Não | — | — | Código país (1058=Brasil). Opcional |
dest.enderDest.xPais | string | Não | — | — | Nome do país. Opcional |
dest.indIeDest | string | Sim | 1 | 1 | Indicador IE destinatário: 1=contribuinte, 2=isento, 9=não contribuinte |
dest.ie | string | Não | 1 | 20 | Inscrição estadual. Obrigatória quando indIeDest=1. Opcional |
dest.email | string | Não | 1 | 60 | E-mail do destinatário para envio do XML/DANFE. Opcional |
det | NfeItemDto[] | Sim | — | — | Itens da nota. Mínimo 1, máximo 990 (XSD leiauteNFe_v4.00) |
det[].nItem | number | Sim | — | — | Número sequencial do item (1, 2, 3...) |
det[].cProd | string | Sim | 1 | 60 | Código interno do produto ou serviço |
det[].cEan | string | Não | — | 14 | GTIN/EAN do produto ou "SEM GTIN". Opcional |
det[].xProd | string | Sim | 1 | 120 | Descrição do produto ou serviço |
det[].ncm | string | Sim | 2 | 8 | Código NCM (Nomenclatura Comum do Mercosul) |
det[].cfop | string | Sim | 4 | 4 | CFOP da operação (4 dígitos) |
det[].uCom | string | Sim | 1 | 6 | Unidade comercial (ex.: UN, KG, CX) |
det[].qCom | number | Sim | — | — | Quantidade comercial |
det[].vUnCom | number | Sim | — | — | Valor unitário comercial |
det[].vProd | number | Sim | — | — | Valor total do produto (qCom × vUnCom, descontos aplicados) |
det[].cEanTrib | string | Não | — | 14 | GTIN/EAN da unidade tributável. Opcional |
det[].uTrib | string | Sim | 1 | 6 | Unidade tributável |
det[].qTrib | number | Sim | — | — | Quantidade tributável |
det[].vUnTrib | number | Sim | — | — | Valor unitário tributável |
det[].indTot | string | Sim | 1 | 1 | Compõe total da NF-e: 1=sim, 0=não |
det[].imposto.ICMS | object | Sim | — | — | Grupo ICMS (ex.: ICMS00, ICMSSN102). Informe orig, CST/CSOSN, bases e alíquotas |
det[].imposto.PIS | object | Não | — | — | Grupo PIS (ex.: PISAliq, PISNT). Opcional conforme operação |
det[].imposto.COFINS | object | Não | — | — | Grupo COFINS (ex.: COFINSAliq, COFINSNT). Opcional conforme operação |
det[].imposto.IPI | object | Não | — | — | Grupo IPI. Opcional |
det[].imposto.IBSCBS | object | Não | — | — | Grupo IBS/CBS (Reforma Tributária): CST, cClassTrib, gIBSCBS. Ver seção Reforma tributária |
det[].vItem | number | Não | — | — | Valor total do item com tributos (vItem, RTC). Opcional |
total.icmsTot.vBC | number | Não | — | — | Base de cálculo ICMS |
total.icmsTot.vICMS | number | Não | — | — | Valor total ICMS |
total.icmsTot.vICMSDeson | number | Não | — | — | Valor ICMS desonerado |
total.icmsTot.vFCP | number | Não | — | — | Valor FCP |
total.icmsTot.vBCST | number | Não | — | — | Base de cálculo ST |
total.icmsTot.vST | number | Não | — | — | Valor ICMS ST |
total.icmsTot.vProd | number | Sim | — | — | Valor total dos produtos |
total.icmsTot.vFrete | number | Não | — | — | Valor total frete |
total.icmsTot.vSeg | number | Não | — | — | Valor total seguro |
total.icmsTot.vDesc | number | Não | — | — | Valor total desconto |
total.icmsTot.vII | number | Não | — | — | Valor total II |
total.icmsTot.vIPI | number | Não | — | — | Valor total IPI |
total.icmsTot.vPIS | number | Não | — | — | Valor total PIS |
total.icmsTot.vCOFINS | number | Não | — | — | Valor total COFINS |
total.icmsTot.vOutro | number | Não | — | — | Outras despesas acessórias |
total.icmsTot.vNF | number | Sim | — | — | Valor total da NF-e/NFC-e |
total.icmsTot.vTotTrib | number | Não | — | — | Valor aproximado total de tributos |
total.ibsCbsTot | object | Não | — | — | Grupo IBSCBSTot no XML (opcional, Reforma Tributária): vBCIBSCBS, gIBS, gCBS |
total.vNfTot | number | Não | — | — | Campo vNFTot quando exigido pelo leiaute vigente (Reforma Tributária) |
transp.modFrete | string | Sim | 1 | 1 | Modalidade do frete: 0=emitente, 1=destinatário, 2=terceiros, 3=próprio remetente, 4=próprio destinatário, 9=sem frete |
pag | NfePagamentoDto[] | Não | — | — | Formas de pagamento (detPag). Opcional, máximo 100 itens |
pag[].tPag | string | Sim | 2 | 2 | Meio de pagamento (tabela SEFAZ: 01=dinheiro, 03=cartão crédito, 17=PIX, 99=outros) |
pag[].vPag | number | Sim | — | — | Valor do pagamento |
pag[].xPag | string | Não | 1 | 60 | Descrição do meio de pagamento. Obrigatório quando tPag=99 |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "35",
"natOp": "Venda de mercadoria",
"serie": "1",
"nnf": "8296",
"dhEmi": "2026-05-16T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "3550308",
"tpImp": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "9"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"enderEmit": {},
"ie": "123456789",
"crt": "2"
},
"dest": {
"cnpj": "98765432000111",
"xNome": "Destinatario Exemplo",
"enderDest": {},
"indIeDest": "9"
},
"det": [],
"total": {
"icmsTot": {}
}
}Exemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfe' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'X-Correlation-Id: corr_9e2f1a8b3c7d4e6f' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "35",
"natOp": "Venda de mercadoria",
"serie": "1",
"nnf": "8296",
"dhEmi": "2026-05-16T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "3550308",
"tpImp": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "9"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"enderEmit": {},
"ie": "123456789",
"crt": "2"
},
"dest": {
"cnpj": "98765432000111",
"xNome": "Destinatario Exemplo",
"enderDest": {},
"indIeDest": "9"
},
"det": [],
"total": {
"icmsTot": {}
}
}
EOFResponse
202 Accepted — processamento assíncrono iniciado
{
"documentId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "pending",
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890"
}Possíveis erros
/v1/nfe/{id}200Get NF-e document by id
Consulta documento NF-e pelo identificador.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento NF-e
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "55",
"serie": "1",
"nnf": "8297",
"status": "authorized",
"chave_acesso_nfe": "3526051234567800019955001000082971234567890",
"protocolo_autorizacao": "135260000829789",
"tp_amb": "2",
"created_at": "2026-05-16T10: 00: 00.000Z",
"emitente": {
"cnpj": "12345678000199",
"x_nome": "Empresa Emitente LTDA"
},
"destinatario": {
"cnpj": "98765432000111",
"x_nome": "Destinatario Exemplo LTDA"
},
"total": {
"v_nf": "2500.00"
}
}Possíveis erros
/v1/nfe/{id}/fiscal-requests200List fiscal requests for NF-e document
Lista requisições fiscais rastreáveis do documento.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/c3d4e5f6-a7b8-9012-cdef-123456789012/fiscal-requests' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de fiscal_requests
[
{
"id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"provider": "sefaz-sp",
"operation": "authorize",
"ambiente": "homologacao",
"status": "sent",
"http_status": 200,
"duration_ms": 1240,
"created_at": "2026-05-16T10: 00: 00.000Z",
"logs": [
{
"level": "info",
"message": "Lote autorizado",
"created_at": "2026-05-16T10: 00: 01.000Z"
}
]
}
]Possíveis erros
/v1/nfe/{id}/protocol200Consult NF-e protocol at SEFAZ
Consulta protocolo de autorização na SEFAZ.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/c3d4e5f6-a7b8-9012-cdef-123456789012/protocol' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Dados do protocolo
{
"consultaId": "a7b8c9d0-e1f2-3456-0123-567890123456",
"success": true,
"cStat": "100",
"xMotivo": "Autorizado o uso da NF-e",
"protocolo": "135260000829789"
}Possíveis erros
/v1/nfe/{id}/cancel202 async202Cancel NF-e asynchronously
Enfileira evento de cancelamento de NF-e autorizada.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CancelNfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfe/c3d4e5f6-a7b8-9012-cdef-123456789012/cancel' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"justificativa": "Cancelamento por solicitacao do cliente"
}
EOFResponse
202 Accepted — cancelamento enfileirado
{
"documentId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"cancelamentoId": "b8c9d0e1-f2a3-4567-1234-678901234567",
"status": "pending"
}Possíveis erros
/v1/nfe/{id}/pdf200Get signed URL for DANFE PDF
Retorna URL assinada do DANFE. Query variant=authorized (nota autorizada) ou variant=cancelled (pós-cancelamento).
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
variant | string | Sim | — | — | authorized | cancelled |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/c3d4e5f6-a7b8-9012-cdef-123456789012/pdf?variant=value' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 { url } — URL assinada do PDF
{
"url": "https://storage.example.com/nfe/danfe.pdf?token=xyz"
}Possíveis erros
/v1/nfe/inutilize202 async202Inutilize NF-e numbering asynchronously
Enfileira inutilização de faixa de numeração NF-e.
Operação assíncrona
Request body
InutilizeNfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfe/inutilize' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie": "1",
"nnfIni": "1",
"nnfFin": "10",
"xJust": "Numeracao nao utilizada"
}
EOFResponse
202 Accepted — inutilização enfileirada
{
"inutilizacaoId": "c9d0e1f2-a3b4-5678-2345-789012345678",
"status": "pending"
}Possíveis erros
/v1/nfe/dfe/sync202 async202Sync NF-e DF-e from Ambiente Nacional
Enfileira Distribuicao DF-e por NSU (emitente e destinatario) via NFeDistribuicaoDFe.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita sync duplicado |
Request body
SyncNfeDfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfe/dfe/sync' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
EOFResponse
202 Accepted — sync DF-e enfileirado
{
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"syncStateId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "queued"
}Possíveis erros
/v1/nfe/dfe/sync-state200Get DF-e sync state
Retorna ultNSU, maxNSU e lastSyncAt da empresa.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/dfe/sync-state?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Estado de sincronizacao DF-e
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ultNsu": "000000000000123",
"maxNsu": "000000000000456",
"lastSyncAt": "2026-05-30T12: 00: 00.000Z"
}Possíveis erros
/v1/nfe/dfe200List imported NF-e DF-e documents
Lista documentos importados via Distribuicao DF-e.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Não | — | — | Filtrar por empresa |
papel | string | Não | — | 40 | emitente | destinatario |
chave | string | Não | 44 | 44 | Chave de acesso NF-e (44 dígitos) |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfe/dfe?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de documentos DF-e
[]Possíveis erros
/v1/nfe/dfe/consulta-chave200Consult NF-e by access key via DF-e
Consulta pontual consChNFe no Ambiente Nacional.
Request body
ConsultNfeDfeChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfe/dfe/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199550010000082961000082961"
}
EOFResponse
200 Resultado da consulta por chave
{
"consultaId": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"found": true,
"cStat": "138",
"chaveAcesso": "3526051234567800019955001000082971234567890",
"documentsImported": 1
}Possíveis erros
NFC-e
/v1/nfce202 async202Emit NFC-e asynchronously
Enfileira emissão de NFC-e modelo 65 na SEFAZ. O companyId no body deve existir no workspace (POST /v1/companies). Body em JSON achatado (CreateNfceDto): itens em det[] com cProd/ncm/cfop no mesmo nível (sem det[].prod); não envie ide.tpAmb nem ide.cNF — ambiente vem da empresa e do CSC (tpAmb só em PUT .../csc). pag[].indPag opcional (0 ou 1). total.icmsTot: valores monetários normalizados para 2 casas no XML. emit.enderEmit: UF/CEP da empresa se ausentes no payload. 409 CONFLICT se série+nnf já consumidos no ambiente; failed/em andamento reutiliza documento (202). Rejeição SEFAZ é assíncrona (webhook/status), não no POST.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita emissão duplicada |
X-Correlation-Id | string | Não | 1 | 64 | Tracing opcional |
Request body — CreateNfceDto
Payload para emissão assíncrona de NFC-e (modelo 65). JSON achatado: a API monta prod/tpAmb/cNF no XML. Proibido: ide.tpAmb, ide.cNF, det[].prod. 409 se série+nnf já consumidos no ambiente.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace |
ide.cuf | string | Sim | 2 | 2 | Código IBGE da UF do emitente (2 dígitos, ex.: 35=SP) |
ide.cnf | string | Não | 8 | 8 | Código numérico (8 dígitos). Opcional; a API gera se omitido. Não envie cNF |
ide.natOp | string | Sim | 1 | 60 | Descrição da natureza da operação (ex.: Venda ao consumidor) |
ide.serie | string | Sim | 1 | 3 | Série da NFC-e |
ide.nnf | string | Sim | 1 | 9 | Número da NFC-e. Conflito 409 se série+nnf já consumidos no ambiente |
ide.dhEmi | string | Sim | — | 35 | Data e hora de emissão em ISO 8601 com fuso |
ide.tpNf | string | Sim | 1 | 1 | Tipo da NFC-e: 0=entrada, 1=saída (venda ao consumidor usa 1) |
ide.idDest | string | Sim | 1 | 1 | Destino da operação: 1=interna, 2=interestadual, 3=exterior |
ide.cMunFg | string | Sim | 7 | 7 | Código IBGE do município do fato gerador (7 dígitos) |
ide.tpImp | string | Sim | 1 | 1 | Formato DANFE NFC-e: use 4 (obrigatório para modelo 65) |
ide.tpEmis | string | Não | 1 | 1 | Tipo de emissão: 1=normal (default). Outros valores para contingência |
ide.finNfe | string | Sim | 1 | 1 | Finalidade: 1=normal, 2=complementar, 3=ajuste, 4=devolução |
ide.indFinal | string | Sim | 1 | 1 | Consumidor final: 0=não, 1=sim (NFC-e geralmente usa 1) |
ide.indPres | string | Sim | 1 | 1 | Indicador de presença do comprador (tabela SEFAZ: 0–9) |
ide.indIntermed | string | Não | 1 | 1 | Indicador de intermediador/marketplace: 0=sem, 1=com. Opcional |
ide.procEmi | string | Não | 1 | 1 | Processo de emissão: 0=app contribuinte. Opcional |
ide.verProc | string | Não | 1 | 20 | Versão do processo emissor (ex.: FISQAL-1.0). Opcional |
emit.cnpj | string | Sim | 14 | 14 | CNPJ do emitente (14 dígitos, sem formatação) |
emit.xNome | string | Sim | 1 | 255 | Razão social do emitente |
emit.xFant | string | Não | 1 | 60 | Nome fantasia. Opcional |
emit.enderEmit.xLgr | string | Sim | — | — | Logradouro |
emit.enderEmit.nro | string | Sim | — | — | Número |
emit.enderEmit.xCpl | string | Não | — | — | Complemento. Opcional |
emit.enderEmit.xBairro | string | Sim | — | — | Bairro |
emit.enderEmit.cMun | string | Sim | — | — | Código IBGE do município (7 dígitos) |
emit.enderEmit.xMun | string | Sim | — | — | Nome do município |
emit.enderEmit.UF | string | Não | — | — | Sigla UF (2 letras). Aceita também uf |
emit.enderEmit.uf | string | Não | — | — | Sigla UF (2 letras). Aceita também UF |
emit.enderEmit.CEP | string | Não | — | — | CEP (8 dígitos). Aceita também cep |
emit.enderEmit.cep | string | Não | — | — | CEP (8 dígitos). Aceita também CEP |
emit.enderEmit.cPais | string | Não | — | — | Código país (1058=Brasil). Opcional |
emit.enderEmit.xPais | string | Não | — | — | Nome do país. Opcional |
emit.ie | string | Sim | 1 | 14 | Inscrição estadual do emitente |
emit.crt | string | Sim | 1 | 1 | Código de regime tributário: 1=Simples Nacional, 2=Simples excesso, 3=Normal |
dest.cnpj | string | Não | 14 | 14 | CNPJ do consumidor identificado. Mutuamente exclusivo com cpf |
dest.cpf | string | Não | 11 | 11 | CPF do consumidor identificado. Mutuamente exclusivo com cnpj |
dest.xNome | string | Não | 2 | 60 | Nome do consumidor. Opcional |
dest.enderDest.xLgr | string | Sim | — | — | Logradouro |
dest.enderDest.nro | string | Sim | — | — | Número |
dest.enderDest.xCpl | string | Não | — | — | Complemento. Opcional |
dest.enderDest.xBairro | string | Sim | — | — | Bairro |
dest.enderDest.cMun | string | Sim | — | — | Código IBGE do município (7 dígitos) |
dest.enderDest.xMun | string | Sim | — | — | Nome do município |
dest.enderDest.UF | string | Não | — | — | Sigla UF (2 letras). Aceita também uf |
dest.enderDest.uf | string | Não | — | — | Sigla UF (2 letras). Aceita também UF |
dest.enderDest.CEP | string | Não | — | — | CEP (8 dígitos). Aceita também cep |
dest.enderDest.cep | string | Não | — | — | CEP (8 dígitos). Aceita também CEP |
dest.enderDest.cPais | string | Não | — | — | Código país (1058=Brasil). Opcional |
dest.enderDest.xPais | string | Não | — | — | Nome do país. Opcional |
dest.indIeDest | string | Não | 1 | 1 | Indicador IE: 1=contribuinte, 2=isento, 9=não contribuinte. Opcional |
dest.ie | string | Não | 1 | 20 | Inscrição estadual do consumidor. Opcional |
dest.email | string | Não | 1 | 60 | E-mail do consumidor. Opcional |
det | NfceItemDto[] | Sim | — | — | Itens da nota. Mínimo 1, máximo 990 (XSD leiauteNFe_v4.00) |
det[].nItem | number | Sim | — | — | Número sequencial do item (1, 2, 3...) |
det[].cProd | string | Sim | 1 | 60 | Código interno do produto |
det[].cEan | string | Não | — | 14 | GTIN/EAN ou "SEM GTIN". Opcional |
det[].xProd | string | Sim | 1 | 120 | Descrição do produto |
det[].ncm | string | Sim | 2 | 8 | Código NCM |
det[].cfop | string | Sim | 4 | 4 | CFOP da operação (4 dígitos) |
det[].uCom | string | Sim | 1 | 6 | Unidade comercial (ex.: UN) |
det[].qCom | number | Sim | — | — | Quantidade comercial |
det[].vUnCom | number | Sim | — | — | Valor unitário comercial |
det[].vProd | number | Sim | — | — | Valor total do produto |
det[].cEanTrib | string | Não | — | 14 | GTIN/EAN da unidade tributável. Opcional |
det[].uTrib | string | Sim | 1 | 6 | Unidade tributável |
det[].qTrib | number | Sim | — | — | Quantidade tributável |
det[].vUnTrib | number | Sim | — | — | Valor unitário tributável |
det[].indTot | string | Sim | 1 | 1 | Compõe total da NFC-e: 1=sim, 0=não |
det[].imposto.ICMS | object | Sim | — | — | Grupo ICMS (ex.: ICMS00, ICMSSN102). Informe orig, CST/CSOSN, bases e alíquotas |
det[].imposto.PIS | object | Não | — | — | Grupo PIS (ex.: PISAliq, PISNT). Opcional conforme operação |
det[].imposto.COFINS | object | Não | — | — | Grupo COFINS (ex.: COFINSAliq, COFINSNT). Opcional conforme operação |
det[].imposto.IPI | object | Não | — | — | Grupo IPI. Opcional |
det[].imposto.IBSCBS | object | Não | — | — | Grupo IBS/CBS (Reforma Tributária): CST, cClassTrib, gIBSCBS. Ver seção Reforma tributária |
det[].vItem | number | Não | — | — | Valor total do item com tributos (vItem, RTC). Opcional |
total.icmsTot.vBC | number | Não | — | — | Base de cálculo ICMS |
total.icmsTot.vICMS | number | Não | — | — | Valor total ICMS |
total.icmsTot.vICMSDeson | number | Não | — | — | Valor ICMS desonerado |
total.icmsTot.vFCP | number | Não | — | — | Valor FCP |
total.icmsTot.vBCST | number | Não | — | — | Base de cálculo ST |
total.icmsTot.vST | number | Não | — | — | Valor ICMS ST |
total.icmsTot.vProd | number | Sim | — | — | Valor total dos produtos |
total.icmsTot.vFrete | number | Não | — | — | Valor total frete |
total.icmsTot.vSeg | number | Não | — | — | Valor total seguro |
total.icmsTot.vDesc | number | Não | — | — | Valor total desconto |
total.icmsTot.vII | number | Não | — | — | Valor total II |
total.icmsTot.vIPI | number | Não | — | — | Valor total IPI |
total.icmsTot.vPIS | number | Não | — | — | Valor total PIS |
total.icmsTot.vCOFINS | number | Não | — | — | Valor total COFINS |
total.icmsTot.vOutro | number | Não | — | — | Outras despesas acessórias |
total.icmsTot.vNF | number | Sim | — | — | Valor total da NF-e/NFC-e |
total.icmsTot.vTotTrib | number | Não | — | — | Valor aproximado total de tributos |
total.ibsCbsTot | object | Não | — | — | Grupo IBSCBSTot no XML (opcional, Reforma Tributária): vBCIBSCBS, gIBS, gCBS |
total.vNfTot | number | Não | — | — | Campo vNFTot quando exigido pelo leiaute vigente (Reforma Tributária) |
pag | NfcePagamentoDto[] | Sim | — | — | Formas de pagamento. Obrigatório, mínimo 1, máximo 100 itens |
pag[].indPag | string | Não | 1 | 1 | Indicador de pagamento: 0=à vista, 1=a prazo. Opcional |
pag[].tPag | string | Sim | 2 | 2 | Meio de pagamento (tabela SEFAZ: 01=dinheiro, 03=cartão crédito, 17=PIX, 99=outros) |
pag[].vPag | number | Sim | — | — | Valor do pagamento |
pag[].xPag | string | Não | 1 | 60 | Descrição do meio de pagamento. Obrigatório quando tPag=99 |
contingenciaOffline | boolean | Não | — | — | Indica emissão em contingência offline. Opcional |
contingenciaJustificativa | string | Não | 15 | 255 | Justificativa da contingência (15–255 caracteres). Obrigatória em contingência offline |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "53",
"natOp": "Venda ao consumidor",
"serie": "1",
"nnf": "100",
"dhEmi": "2026-06-03T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "5300108",
"tpImp": "4",
"tpEmis": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "1",
"procEmi": "0",
"verProc": "FISQAL-1.0"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"xFant": "Emitente",
"enderEmit": {
"xLgr": "Rua Exemplo",
"nro": "100",
"xBairro": "Centro",
"cMun": "5300108",
"xMun": "Brasilia",
"uf": "DF",
"cep": "70000000",
"cPais": "1058",
"xPais": "BRASIL"
},
"ie": "123456789",
"crt": "1"
},
"det": [
{
"nItem": 1,
"cProd": "P-1",
"cEan": "SEM GTIN",
"xProd": "Produto exemplo",
"ncm": "22021000",
"cfop": "5102",
"uCom": "UN",
"qCom": 1,
"vUnCom": 5.9,
"vProd": 5.9,
"uTrib": "UN",
"qTrib": 1,
"vUnTrib": 5.9,
"indTot": "1",
"imposto": {
"ICMS": {
"ICMSSN102": {
"orig": 0,
"CSOSN": "102"
}
},
"PIS": {
"PISNT": {
"CST": "07"
}
},
"COFINS": {
"COFINSNT": {
"CST": "07"
}
}
}
}
],
"total": {
"icmsTot": {
"vBC": 0,
"vICMS": 0,
"vICMSDeson": 0,
"vFCP": 0,
"vBCST": 0,
"vST": 0,
"vProd": 5.9,
"vFrete": 0,
"vSeg": 0,
"vDesc": 0,
"vII": 0,
"vIPI": 0,
"vPIS": 0,
"vCOFINS": 0,
"vOutro": 0,
"vNF": 5.9,
"vTotTrib": 0
}
},
"pag": [
{
"indPag": "0",
"tPag": "01",
"vPag": 5.9
}
]
}Exemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfce' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'X-Correlation-Id: corr_9e2f1a8b3c7d4e6f' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "53",
"natOp": "Venda ao consumidor",
"serie": "1",
"nnf": "100",
"dhEmi": "2026-06-03T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "5300108",
"tpImp": "4",
"tpEmis": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "1",
"procEmi": "0",
"verProc": "FISQAL-1.0"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"xFant": "Emitente",
"enderEmit": {
"xLgr": "Rua Exemplo",
"nro": "100",
"xBairro": "Centro",
"cMun": "5300108",
"xMun": "Brasilia",
"uf": "DF",
"cep": "70000000",
"cPais": "1058",
"xPais": "BRASIL"
},
"ie": "123456789",
"crt": "1"
},
"det": [
{
"nItem": 1,
"cProd": "P-1",
"cEan": "SEM GTIN",
"xProd": "Produto exemplo",
"ncm": "22021000",
"cfop": "5102",
"uCom": "UN",
"qCom": 1,
"vUnCom": 5.9,
"vProd": 5.9,
"uTrib": "UN",
"qTrib": 1,
"vUnTrib": 5.9,
"indTot": "1",
"imposto": {
"ICMS": {
"ICMSSN102": {
"orig": 0,
"CSOSN": "102"
}
},
"PIS": {
"PISNT": {
"CST": "07"
}
},
"COFINS": {
"COFINSNT": {
"CST": "07"
}
}
}
}
],
"total": {
"icmsTot": {
"vBC": 0,
"vICMS": 0,
"vICMSDeson": 0,
"vFCP": 0,
"vBCST": 0,
"vST": 0,
"vProd": 5.9,
"vFrete": 0,
"vSeg": 0,
"vDesc": 0,
"vII": 0,
"vIPI": 0,
"vPIS": 0,
"vCOFINS": 0,
"vOutro": 0,
"vNF": 5.9,
"vTotTrib": 0
}
},
"pag": [
{
"indPag": "0",
"tPag": "01",
"vPag": 5.9
}
]
}
EOFResponse
202 Accepted — processamento assíncrono iniciado
{
"documentId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "pending",
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890"
}Possíveis erros
/v1/nfce/consulta-chave200Consult NFC-e by access key at SEFAZ
Consulta protocolo NFC-e modelo 65 por chave sem documento local.
Request body
ConsultNfceChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfce/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "65260612345678000199650010000001001000001001"
}
EOFResponse
200 Resultado da consulta SEFAZ
{
"consultaId": "e5f6a7b8-c9d0-1234-ef01-345678901234",
"found": true,
"cStat": "100",
"chaveAcesso": "3526051234567800019965001000082971234567890",
"protocolo": "135260000829789"
}Possíveis erros
/v1/nfce/{id}200Get NFC-e document by id
Consulta documento NFC-e pelo identificador.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfce/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento NFC-e
{
"id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "65",
"serie": "1",
"nnf": "1523",
"status": "authorized",
"chave_acesso_nfce": "3526051234567800019965001000015231234567890",
"protocolo_autorizacao": "135260001523456",
"tp_amb": "2",
"created_at": "2026-05-16T10: 00: 00.000Z",
"emitente": {
"cnpj": "12345678000199",
"x_nome": "Loja Exemplo LTDA"
},
"total": {
"v_nf": "89.90"
},
"pagamentos": [
{
"t_pag": "17",
"v_pag": "89.90"
}
]
}Possíveis erros
/v1/nfce/{id}/fiscal-requests200List fiscal requests for NFC-e document
Lista requisições fiscais rastreáveis do documento.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfce/c3d4e5f6-a7b8-9012-cdef-123456789012/fiscal-requests' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de fiscal_requests
[
{
"id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
"provider": "sefaz-sp",
"operation": "authorize",
"ambiente": "homologacao",
"status": "sent",
"http_status": 200,
"duration_ms": 980,
"created_at": "2026-05-16T10: 00: 00.000Z",
"logs": [
{
"level": "info",
"message": "Status alterado para Autorizado",
"created_at": "2026-05-16T10: 00: 01.000Z"
}
]
}
]Possíveis erros
/v1/nfce/{id}/protocol200Consult NFC-e protocol at SEFAZ
Consulta protocolo de autorização na SEFAZ.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfce/c3d4e5f6-a7b8-9012-cdef-123456789012/protocol' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Dados do protocolo
{
"consultaId": "d0e1f2a3-b4c5-6789-3456-890123456789",
"success": true,
"cStat": "100",
"xMotivo": "Autorizado o uso da NF-e",
"protocolo": "135260001523456"
}Possíveis erros
/v1/nfce/{id}/cancel202 async202Cancel NFC-e asynchronously
Enfileira evento de cancelamento de NFC-e autorizada.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CancelNfceDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfce/c3d4e5f6-a7b8-9012-cdef-123456789012/cancel' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"justificativa": "Cancelamento por solicitacao do cliente"
}
EOFResponse
202 Accepted — cancelamento enfileirado
{
"documentId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"cancelamentoId": "e1f2a3b4-c5d6-7890-4567-901234567890",
"status": "pending"
}Possíveis erros
/v1/nfce/{id}/pdf200Get signed URL for DANFE NFC-e PDF
Retorna URL assinada do DANFE NFC-e. Query variant=authorized ou variant=cancelled.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
variant | string | Sim | — | — | authorized | cancelled |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfce/c3d4e5f6-a7b8-9012-cdef-123456789012/pdf?variant=value' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 { url } — URL assinada do PDF
{
"url": "https://storage.example.com/nfce/danfe.pdf?token=xyz"
}Possíveis erros
/v1/nfce/inutilize202 async202Inutilize NFC-e numbering asynchronously
Enfileira inutilização de faixa de numeração NFC-e.
Operação assíncrona
Request body
InutilizeNfceDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/nfce/inutilize' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie": "1",
"nnfIni": "1",
"nnfFin": "10",
"xJust": "Numeracao nao utilizada"
}
EOFResponse
202 Accepted — inutilização enfileirada
{
"inutilizacaoId": "f2a3b4c5-d6e7-8901-5678-012345678901",
"status": "pending"
}Possíveis erros
/v1/nfce/companies/{companyId}/csc200Upsert company NFC-e CSC configuration
Cadastra ou atualiza CSC para geração de QR Code NFC-e.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Request body
UpsertCompanyNfceCscDtoExemplo de requisição
curl -X PUT 'https://api.fisqal.com.br/v1/nfce/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/csc' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"tpAmb": "2",
"cscId": "000001",
"cscToken": "CSC-TOKEN-SECRET"
}
EOFResponse
200 CSC configurado
{
"id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tp_amb": "2",
"csc_id": "000001",
"url_chave": "https://www.homologacao.nfce.fazenda.sp.gov.br/consulta",
"ativo": true,
"created_at": "2026-05-16T10: 00: 00.000Z",
"updated_at": "2026-05-16T10: 00: 00.000Z"
}Possíveis erros
/v1/nfce/companies/{companyId}/csc200List company NFC-e CSC configurations
Lista configurações CSC da empresa (token mascarado).
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/nfce/companies/a1b2c3d4-e5f6-7890-abcd-ef1234567890/csc' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de CSC
[
{
"id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"company_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"tp_amb": "2",
"csc_id": "000001",
"url_chave": "https://www.homologacao.nfce.fazenda.sp.gov.br/consulta",
"ativo": true,
"created_at": "2026-05-16T10: 00: 00.000Z",
"updated_at": "2026-05-16T10: 00: 00.000Z"
}
]Possíveis erros
MDF-e
Integração externa via API Key em /v1/mdfe (scopes mdfe:read, mdfe:write, mdfe:cancel, mdfe:event). Emissão, cancelamento, encerramento e eventos são assíncronos — a API responde 202 Accepted e o processamento ocorre via fila. Acompanhe com GET /v1/mdfe/{id} e GET /v1/mdfe/{id}/fiscal-requests. Modelo 58 (SVRS), leiaute 3.00; ide.modal 1–4 define o XSD do infModal.payload.
{
"event": "mdfe.authorized",
"id": "evt_m1d2f3e4",
"created_at": "2026-06-12T14: 30: 00Z",
"data": {
"document_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"provider": "svrs-mdfe",
"status": "authorized",
"chave_acesso": "35260612345678000199580010000000011234567890",
"protocolo": "135260000000001"
}
}/v1/mdfe202 async202Emit MDF-e asynchronously
Enfileira emissão de MDF-e (modelo 58) na SEFAZ.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita emissão duplicada |
Request body
CreateMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "35",
"serie": "1",
"nmdf": "1",
"modal": "1",
"tpEmit": "1",
"dhEmi": "2026-06-12T10: 00: 00-03: 00",
"ufIni": "SP",
"ufFim": "RJ",
"infMunCarrega": [
{
"cMunCarrega": "3550308",
"xMunCarrega": "SAO PAULO"
}
]
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Transportadora Exemplo LTDA",
"enderEmit": {},
"ie": "123456789"
},
"infModal": {
"payload": {
"infANTT": {
"RNTRC": "12345678"
},
"veicTracao": {
"placa": "ABC1D23",
"tara": "8000",
"capKG": "25000",
"tpRod": "01",
"tpCar": "02",
"UF": "SP",
"condutor": [
{
"xNome": "Joao Silva",
"CPF": "12345678901"
}
]
}
}
},
"infDoc": [
{
"cMunDescarga": "3304557",
"xMunDescarga": "RIO DE JANEIRO",
"infNFe": [
{
"chave": "3526051234567800019955001000082971234567890"
}
]
}
],
"tot": {
"qNfe": 1,
"vCarga": 10000,
"cUnid": "01",
"qCarga": 5000
}
}
EOFResponse
202 Accepted — processamento assíncrono iniciado
{
"documentId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"status": "pending",
"fiscalRequestId": "f1a2b3c4-d5e6-7890-abcd-ef1234567890"
}Possíveis erros
/v1/mdfe/not-closed200Consult MDF-e not closed
Consulta manifestos não encerrados na SEFAZ.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa emitente |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/not-closed?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de MDF-e não encerrados
Possíveis erros
/v1/mdfe/consulta-chave200Consult MDF-e by access key
Consulta protocolo MDF-e por chave de acesso.
Request body
ConsultMdfeChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199580010000000011234567890"
}
EOFResponse
200 Protocolo MDF-e
Possíveis erros
/v1/mdfe/{id}200Get MDF-e document by id
Consulta documento MDF-e pelo identificador.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento MDF-e
Possíveis erros
/v1/mdfe/{id}/fiscal-requests200List fiscal requests for MDF-e
Lista requisições fiscais vinculadas ao MDF-e.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/fiscal-requests' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de fiscal requests
Possíveis erros
/v1/mdfe/{id}/protocol200Consult MDF-e protocol at SEFAZ
Consulta protocolo do MDF-e na SEFAZ.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/protocol' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Protocolo SEFAZ
Possíveis erros
/v1/mdfe/{id}/pdf200Get signed URL for DAMDFE PDF
Retorna URL assinada do DAMDFE. Query variant=authorized ou variant=cancelled.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
variant | string | Sim | — | — | authorized | cancelled |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/pdf?variant=value' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 { url } — URL assinada do PDF
Possíveis erros
/v1/mdfe/{id}/cancel202 async202Cancel MDF-e asynchronously
Enfileira cancelamento de MDF-e autorizado.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CancelMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/cancel' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"justificativa": "Cancelamento por solicitacao do transportador"
}
EOFResponse
202 Cancelamento enfileirado
Possíveis erros
/v1/mdfe/{id}/close202 async202Close MDF-e asynchronously
Enfileira encerramento de MDF-e autorizado.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CloseMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/close' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"cUf": "33",
"cMun": "3304557",
"dtEnc": "2026-06-12"
}
EOFResponse
202 Encerramento enfileirado
Possíveis erros
/v1/mdfe/{id}/events/include-driver202 async202Include driver MDF-e event
Evento de inclusão de condutor.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
IncludeDriverMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/events/include-driver' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"payload": {
"condutor": {
"xNome": "Joao",
"CPF": "12345678901"
}
}
}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/mdfe/{id}/events/include-dfe202 async202Include DF-e MDF-e event
Evento de inclusão de DF-e no manifesto.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
IncludeDfeMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/events/include-dfe' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"payload": {
"infDoc": []
}
}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/mdfe/{id}/events/payment202 async202Payment MDF-e event
Evento 110116 — pagamento da operação de transporte.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
PaymentMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/events/payment' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"payload": {
"infPag": []
}
}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/mdfe/{id}/events/confirm-service202 async202Confirm service MDF-e event
Evento 110117 — confirmação do serviço de transporte.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
ConfirmServiceMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/events/confirm-service' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"payload": {
"infServico": {}
}
}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/mdfe/{id}/events/change-payment202 async202Change payment MDF-e event
Evento 110118 — alteração de pagamento do serviço.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
ChangePaymentMdfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/c3d4e5f6-a7b8-9012-cdef-123456789012/events/change-payment' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"payload": {
"infPag": []
}
}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/mdfe/dfe/sync202 async202Sync MDF-e DF-e documents
Sincroniza documentos MDF-e do Ambiente Nacional.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita sync duplicado |
Request body
SyncMdfeDfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/dfe/sync' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
EOFResponse
202 Sync enfileirado
Possíveis erros
/v1/mdfe/dfe/sync-state200Get MDF-e DF-e sync state
Estado de sincronização DF-e por empresa.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/dfe/sync-state?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Estado de sync
Possíveis erros
/v1/mdfe/dfe200List imported MDF-e DF-e documents
Lista documentos MDF-e importados via DF-e.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/dfe' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista paginada de DF-e
Possíveis erros
/v1/mdfe/dfe/consulta-chave200Consult MDF-e by key via DF-e
Consulta MDF-e por chave via distribuição DF-e.
Request body
ConsultMdfeDfeChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/mdfe/dfe/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199580010000000011234567890"
}
EOFResponse
200 Documento DF-e
Possíveis erros
/v1/mdfe/dfe/{id}200Get imported MDF-e DF-e document
Detalhe de documento MDF-e importado via DF-e.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento DF-e |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/mdfe/dfe/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento DF-e
Possíveis erros
CT-e
Integração externa via API Key em /v1/cte (scopes cte:read, cte:write, cte:cancel, cte:event, cte:inutilize). Emissão, cancelamento, CC-e e inutilização são assíncronos — a API responde 202 Accepted e o processamento ocorre via fila. Acompanhe com GET /v1/cte/{id} e GET /v1/cte/{id}/fiscal-requests. Modelos 57, 67 ou 64; infModal.modal define o XSD do payload rodoviário/aéreo/etc.
{
"event": "cte.authorized",
"id": "evt_c1t2e3f4",
"created_at": "2026-06-12T14: 30: 00Z",
"data": {
"document_id": "d4e5f6a7-b8c9-0123-def0-234567890123",
"provider": "svrs-cte",
"status": "authorized",
"chave_acesso": "35260612345678000199570010000000011234567890",
"protocolo": "135260000000002"
}
}/v1/cte202 async202Emit CT-e asynchronously
Enfileira emissão de CT-e (modelos 57, 67 ou 64) na SEFAZ.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita emissão duplicada |
Request body
CreateCteDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "57",
"ide": {
"cuf": "35",
"cfop": "6352",
"natOp": "PRESTACAO DE SERVICO DE TRANSPORTE",
"serie": "1",
"nct": "1",
"modal": "01",
"tpServ": "0",
"tpCTe": "0",
"dhEmi": "2026-06-12T10: 00: 00-03: 00",
"cMunEnv": "3550308",
"xMunEnv": "SAO PAULO",
"UFEnv": "SP",
"cMunIni": "3550308",
"xMunIni": "SAO PAULO",
"UFIni": "SP",
"cMunFim": "3304557",
"xMunFim": "RIO DE JANEIRO",
"UFFim": "RJ",
"retira": "0",
"toma3": {
"toma": "3"
}
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Transportadora Exemplo LTDA",
"enderEmit": {},
"ie": "123456789"
},
"vPrest": {
"vTPrest": 1500,
"vRec": 1500
},
"imp": {
"payload": {
"ICMS": {
"ICMS45": {
"CST": "40"
}
}
}
},
"infModal": {
"modal": "01",
"payload": {
"RNTRC": "12345678"
}
}
}
EOFResponse
202 Accepted — processamento assíncrono iniciado
{
"documentId": "d4e5f6a7-b8c9-0123-def0-234567890123",
"status": "pending",
"fiscalRequestId": "f2b3c4d5-e6f7-8901-bcde-f23456789012"
}Possíveis erros
/v1/cte/consulta-chave200Consult CT-e by access key
Consulta protocolo CT-e por chave de acesso.
Request body
ConsultCteChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199570010000000011234567890"
}
EOFResponse
200 Protocolo CT-e
Possíveis erros
/v1/cte/inutilize202 async202Inutilize CT-e numbering asynchronously
Enfileira inutilização de numeração CT-e (modelos 57 ou 67).
Operação assíncrona
Request body
InutilizeCteDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/inutilize' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "57",
"serie": "1",
"nCtIni": "1",
"nCtFin": "10",
"xJust": "Numeracao nao utilizada"
}
EOFResponse
202 Inutilização enfileirada
Possíveis erros
/v1/cte/{id}200Get CT-e document by id
Consulta documento CT-e pelo identificador.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento CT-e
Possíveis erros
/v1/cte/{id}/fiscal-requests200List fiscal requests for CT-e
Lista requisições fiscais vinculadas ao CT-e.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/fiscal-requests' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de fiscal requests
Possíveis erros
/v1/cte/{id}/protocol200Consult CT-e protocol at SEFAZ
Consulta protocolo do CT-e na SEFAZ.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/protocol' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Protocolo SEFAZ
Possíveis erros
/v1/cte/{id}/pdf200Get signed URL for DACTE PDF
Retorna URL assinada do DACTE. Query variant=authorized ou variant=cancelled.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
variant | string | Sim | — | — | authorized | cancelled |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/pdf?variant=value' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 { url } — URL assinada do PDF
Possíveis erros
/v1/cte/{id}/cancel202 async202Cancel CT-e asynchronously
Enfileira cancelamento de CT-e autorizado.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CancelCteDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/cancel' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"justificativa": "Cancelamento solicitado pelo emitente"
}
EOFResponse
202 Cancelamento enfileirado
Possíveis erros
/v1/cte/{id}/cce202 async202Send CT-e correction letter asynchronously
Enfileira carta de correção eletrônica (CC-e) do CT-e.
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
CceCteDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/cce' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"infCorrecao": [
{
"grupoAlterado": "ide",
"campoAlterado": "natOp",
"valorAlterado": "PRESTACAO DE SERVICO DE TRANSPORTE A"
}
]
}
EOFResponse
202 CC-e enfileirada
Possíveis erros
/v1/cte/{id}/vinc-pagamento202 async202Register CT-e payment link event
Evento de vínculo de pagamento (RTC).
Operação assíncrona
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento |
Request body
VincPagamentoCteDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/c3d4e5f6-a7b8-9012-cdef-123456789012/vinc-pagamento' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{}
EOFResponse
202 Evento enfileirado
Possíveis erros
/v1/cte/dfe/sync202 async202Sync CT-e DF-e documents
Sincroniza documentos CT-e do Ambiente Nacional.
Operação assíncrona
Headers
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
Idempotency-Key | string | Não | 1 | 512 | Evita sync duplicado |
Request body
SyncCteDfeDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/dfe/sync' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Idempotency-Key: idem_7f3a9c2e1b4d8f6a' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}
EOFResponse
202 Sync enfileirado
Possíveis erros
/v1/cte/dfe/sync-state200Get CT-e DF-e sync state
Estado de sincronização DF-e por empresa.
Query parameters
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | ID da empresa |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/dfe/sync-state?companyId=a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Estado de sync
Possíveis erros
/v1/cte/dfe200List imported CT-e DF-e documents
Lista documentos CT-e importados via DF-e.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/dfe' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista paginada de DF-e
Possíveis erros
/v1/cte/dfe/consulta-chave200Consult CT-e by key via DF-e
Consulta CT-e por chave via distribuição DF-e.
Request body
ConsultCteDfeChaveDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/cte/dfe/consulta-chave' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199570010000000011234567890"
}
EOFResponse
200 Documento DF-e
Possíveis erros
/v1/cte/dfe/{id}200Get imported CT-e DF-e document
Detalhe de documento CT-e importado via DF-e.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do documento DF-e |
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/cte/dfe/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Documento DF-e
Possíveis erros
Webhooks
/v1/webhooks201Create webhook subscription
Registra endpoint HTTPS para receber eventos fiscais.
Request body
CreateWebhookDtoExemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/webhooks' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx' \
-H 'Content-Type: application/json' \
-d @- <<'EOF'
{
"nome": "Webhook Producao",
"url": "https://example.com/webhooks/fisqal",
"eventos": [
"nfse.processing",
"nfse.authorized",
"nfse.rejected",
"nfse.failed",
"nfse.cancelled"
]
}
EOFResponse
201 Webhook criado com secret para validação HMAC
{
"id": "w1b2c3d4-e5f6-7890-abcd-ef1234567890",
"nome": "ERP Producao",
"url": "https://erp.example.com/webhooks/fisqal",
"eventos": [
"nfse.authorized",
"nfse.rejected",
"nfse.failed"
],
"secret": "a1b2c3d4e5f6789012345678901234567890abcdef1234567890abcdef123456"
}Possíveis erros
/v1/webhooks200List webhooks
Lista assinaturas de webhook do workspace.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/webhooks' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Lista de webhooks
[
{
"id": "w1b2c3d4-e5f6-7890-abcd-ef1234567890",
"nome": "ERP Producao",
"url": "https://erp.example.com/webhooks/fisqal",
"eventos": [
"nfse.authorized",
"nfse.rejected"
],
"ativo": true,
"created_at": "2026-05-16T10: 00: 00.000Z"
}
]Possíveis erros
/v1/webhooks/{id}200Delete webhook
Remove assinatura de webhook.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do webhook |
Exemplo de requisição
curl -X DELETE 'https://api.fisqal.com.br/v1/webhooks/c3d4e5f6-a7b8-9012-cdef-123456789012' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Webhook removido
{
"id": "w1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deleted": true
}Possíveis erros
/v1/webhooks/{id}/test200Replay webhook test delivery
Dispara entrega de teste para validar integração.
Parâmetros de path
| Nome | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
id | uuid | Sim | — | — | ID do webhook |
Exemplo de requisição
curl -X POST 'https://api.fisqal.com.br/v1/webhooks/c3d4e5f6-a7b8-9012-cdef-123456789012/test' \
-H 'Authorization: Bearer fisqal_live_xxx' \
-H 'X-API-Key: fisqal_live_xxx'Response
200 Entrega de teste enfileirada
{
"deliveryId": "d5e6f7a8-b9c0-1234-def0-567890123456",
"status": "queued"
}Possíveis erros
Eventos e assinatura HMAC
Eventos disparados após status terminal. Valide o header X-FISQAL-Signature: sha256=<hmac> usando o secret retornado no cadastro.
nfse.processingnfse.authorizednfse.rejectednfse.failednfse.cancellednfe.authorizednfe.rejectednfe.failednfe.cancellednfce.authorizednfce.rejectednfce.failednfce.cancelledmdfe.processingmdfe.authorizedmdfe.rejectedmdfe.failedmdfe.cancelledmdfe.closedmdfe.event_registeredcte.processingcte.authorizedcte.rejectedcte.failedcte.cancelledcte.event_registered{
"event": "nfse.authorized",
"id": "evt_a1b2c3d4",
"created_at": "2026-05-22T10: 00: 00Z",
"data": {
"document_id": "dps_uuid",
"provider": "sefin-nacional",
"municipio": "3550308",
"protocolo": "2026-05-22T10: 00: 00-03: 00",
"codigo_verificacao": "ABC123",
"status": "authorized",
"chave_acesso": "00000000000000000000000000000000000000000000000000"
}
}Healthcheck
/v1/health200API healthcheck
Verifica se a API está respondendo.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/health'Response
200 Serviço operacional
{
"service": "FISQAL",
"status": "ok",
"timestamp": "2026-05-16T10: 00: 00.000Z"
}/v1/health/database200PostgreSQL/Supabase healthcheck
Verifica conectividade com o banco de dados.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/health/database'Response
200 Database operacional
{
"dependency": "database",
"status": "ok",
"timestamp": "2026-05-16T10: 00: 00.000Z"
}/v1/health/redis200Redis/BullMQ healthcheck
Verifica conectividade com Redis e filas.
Exemplo de requisição
curl -X GET 'https://api.fisqal.com.br/v1/health/redis'Response
200 Redis operacional
{
"dependency": "redis",
"status": "ok",
"timestamp": "2026-05-16T10: 00: 00.000Z"
}Schemas
DTOs principais referenciados nos endpoints.
CreateNfseDpsDto
Payload para emissão assíncrona de NFS-e (DPS).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace (POST /v1/companies) |
idDps | string | Sim | 1 | 64 | Identificador único do DPS no sistema do emissor (até 64 caracteres) |
serieDps | string | Sim | 1 | 5 | Série do DPS/RPS (até 5 caracteres) |
numeroDps | string | Sim | 1 | 15 | Número sequencial do DPS/RPS (somente dígitos) |
codigoMunicipioEmissor | string | Sim | 7 | 7 | Código IBGE do município emissor (7 dígitos) |
tipoInscricaoPrestador | string | Sim | 1 | 1 | Tipo de inscrição do prestador: 1=CPF, 2=CNPJ |
inscricaoFederalPrestador | string | Sim | 1 | 14 | CPF ou CNPJ do prestador (sem formatação) |
inscricaoMunicipalPrestador | string | Não | 6 | 20 | Inscrição municipal do prestador. Opcional se já cadastrada na empresa; pode ser exigida pelo município |
dataCompetencia | date | Sim | — | — | Data de competência do serviço (YYYY-MM-DD) |
opSimpNac | string | Não | 1 | 1 | Opção Simples Nacional: 1=não optante, 2=MEI, 3=ME/EPP (XSD TSOpSimpNac) |
regApTribSN | string | Não | 1 | 1 | Regime apuração SN: 1|2|3. Obrigatório quando opSimpNac=3 (XSD TSRegimeApuracaoSimpNac) |
regEspTrib | string | Não | 1 | 1 | Regime especial tributação: 0|1|2|3|4|5|6|9 (XSD TSRegEspTrib) |
tomador | NfseTomadorDto | Sim | — | — | Dados do tomador do serviço |
servico | NfseServicoDto | Sim | — | — | Dados do serviço prestado (codigoNbs obrigatório desde 01/01/2026) |
valores | NfseValoresDto | Sim | — | — | Valores e tributação ISSQN |
salaoParceiro | NfseSalaoParceiroDto | Não | — | — | Dedução/redução Salão Parceiro (XSD TSIdeDedRed código 9 — Profissional parceiro). Opcional |
finalidadeEmissao | string | Não | 1 | 1 | Finalidade da emissão: 0=regular. Opcional |
indicadorDestinatario | string | Não | 1 | 1 | Indica destinatário distinto do tomador: 0=não, 1=sim. Opcional (RTC/Fortaleza) |
consumidorFinal | string | Não | 1 | 1 | Uso/consumo pessoal: 0=não, 1=sim. Opcional (RTC) |
tipoEnteGovernamental | string | Não | 1 | 1 | Tipo de ente governamental: 1|2|3|4. Opcional, quando aplicável (RTC) |
destinatarioRtc | FortalezaDestinatarioRtcDto | Não | — | — | Destinatário do serviço em cenários RTC (ex.: Fortaleza com indicadorDestinatario=1). Opcional |
imovelRtc | FortalezaImovelRtcDto | Não | — | — | Imóvel vinculado à operação (operações imobiliárias RTC). Opcional |
nfseReferenciadaRtc | FortalezaNfseReferenciadaRtcDto | Não | — | — | Chaves de NFS-e referenciadas (50 dígitos). Opcional (RTC) |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"idDps": "DPS355030812345678900019900000000001",
"serieDps": "900",
"numeroDps": "1",
"codigoMunicipioEmissor": "3550308",
"tipoInscricaoPrestador": "2",
"inscricaoFederalPrestador": "12345678000199",
"inscricaoMunicipalPrestador": "123456",
"dataCompetencia": "2026-05-01",
"opSimpNac": "1",
"regApTribSN": "1",
"regEspTrib": "0",
"tomador": {
"tipoInscricao": "2",
"inscricaoFederal": "12345678000199",
"inscricaoMunicipal": "12345678",
"razaoSocial": "Tomador Exemplo LTDA",
"email": "contato@tomador.com.br",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"complemento": "Sala 101",
"bairro": "Bela Vista",
"codigoMunicipio": "3550308",
"uf": "SP",
"cep": "01310100"
}
},
"servico": {
"codigoServico": "010101",
"codigoNbs": "115021000",
"municipioIncidencia": "3550308",
"discriminacao": "Consultoria em tecnologia da informacao",
"codigoTributacaoMunicipio": "010"
},
"valores": {
"valorServico": 1500,
"tribIssqn": "1",
"tpRetIssqn": "1",
"aliquotaIssqn": 5
},
"salaoParceiro": {
"documentos": [
{
"numeroDocumento": "contrato-parceria-001",
"dataEmissaoDocumento": "2026-05-01",
"valorDedutivel": 500,
"valorDeducao": 500,
"profissionalParceiro": {
"tipoInscricao": "1",
"inscricaoFederal": "12345678901",
"razaoSocial": "Profissional Parceiro"
}
}
]
}
}NfseSalaoParceiroProfissionalDto
Profissional parceiro (XSD fornec em docDedRed).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
tipoInscricao | string | Sim | 1 | 1 | 1 = CPF, 2 = CNPJ |
inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do profissional parceiro |
razaoSocial | string | Sim | 1 | 255 | Nome ou razão social do profissional parceiro |
inscricaoMunicipal | string | Não | 1 | 15 | Inscrição municipal do profissional. Opcional |
{
"tipoInscricao": "1",
"inscricaoFederal": "12345678901",
"razaoSocial": "Profissional Parceiro"
}NfseSalaoParceiroDocumentoDto
Documento de dedução Salão Parceiro (XSD docDedRed, tpDedRed=9).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
chaveNfse | string | Não | 1 | 50 | Chave NFS-e nacional |
chaveNfe | string | Não | 44 | 44 | Chave NF-e |
numeroDocumentoFiscal | string | Não | 1 | 255 | nDocFisc |
numeroDocumento | string | Não | 1 | 255 | nDoc (não fiscal) |
dataEmissaoDocumento | date | Sim | — | — | Data de emissão do documento de dedução |
valorDedutivel | number | Sim | — | — | Valor dedutível/referência do documento |
valorDeducao | number | Sim | — | — | Valor efetivo da dedução aplicada |
profissionalParceiro | NfseSalaoParceiroProfissionalDto | Não | — | — | Dados do profissional parceiro (obrigatório para tpDedRed=9) |
{
"numeroDocumento": "contrato-parceria-001",
"dataEmissaoDocumento": "2026-05-01",
"valorDedutivel": 500,
"valorDeducao": 500,
"profissionalParceiro": {
"tipoInscricao": "1",
"inscricaoFederal": "12345678901",
"razaoSocial": "Profissional Parceiro"
}
}NfseSalaoParceiroDto
Dedução/redução Salão Parceiro. Informe valorDeducao (vDR) ou documentos[], não ambos.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
valorDeducao | number | Não | — | — | Valor agregado (vDR) |
documentos | NfseSalaoParceiroDocumentoDto[] | Não | — | — | Lista docDedRed |
{
"valorDeducao": 500
}NfseCodigoTributacaoNacionalItemDto
Item do catálogo cTribNac (código + descrição + item LC 116).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigo | string | Sim | 6 | 6 | 6 dígitos (ex.: 010101) |
descricao | string | Sim | 1 | — | — |
itemLc116 | string | Sim | 1 | — | Item LC 116 (ex.: 1.01) |
{
"codigo": "010101",
"descricao": "Análise e desenvolvimento de sistemas.",
"itemLc116": "1.01"
}NfseCodigosTributacaoNacionalResponseDto
Catálogo oficial de códigos cTribNac (LC 116 + desdobro nacional).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
items | NfseCodigoTributacaoNacionalItemDto[] | Sim | — | — | — |
total | number | Sim | — | — | — |
{
"items": [
{
"codigo": "010101",
"descricao": "Análise e desenvolvimento de sistemas.",
"itemLc116": "1.01"
}
],
"total": 337
}NfseCodigoNbsItemDto
Item do catálogo NBS (Nomenclatura Brasileira de Serviços).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigo | string | Sim | 9 | 9 | — |
descricao | string | Sim | 1 | — | — |
{
"codigo": "115021000",
"descricao": "Serviços de projeto, desenvolvimento e instalação de aplicativos e programas não personalizados (não customizados)"
}NfseCodigosNbsResponseDto
Catálogo oficial NBS com filtro opcional por código de serviço (Anexo VIII).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
items | NfseCodigoNbsItemDto[] | Sim | — | — | — |
total | number | Sim | — | — | — |
{
"items": [
{
"codigo": "115021000",
"descricao": "Serviços de projeto, desenvolvimento e instalação de aplicativos e programas não personalizados (não customizados)"
}
],
"total": 5
}NfseServicoParametrosResponseDto
Elegibilidade de dedução/Salão Parceiro por município e código de serviço (Anexo I + ADN).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigoServico | string | Sim | 6 | 6 | — |
municipioIncidencia | string | Sim | 7 | 7 | — |
permiteSalaoParceiro | boolean | Sim | — | — | — |
permiteValorAgregado | boolean | Sim | — | — | — |
permiteDocumentos | boolean | Sim | — | — | — |
tpDedRedSalaoParceiro | string | Sim | 1 | 2 | 9 — Profissional parceiro (XSD TSIdeDedRed) |
motivosInelegibilidade | string[] | Sim | — | — | — |
tiposDeducaoAdmitidos | string[] | Não | — | — | — |
aliquotaIssqn | number | Não | — | — | — |
fonteParametros | string | Não | — | 32 | — |
{
"codigoServico": "060101",
"municipioIncidencia": "3550308",
"permiteSalaoParceiro": true,
"permiteValorAgregado": true,
"permiteDocumentos": true,
"tpDedRedSalaoParceiro": "9",
"motivosInelegibilidade": [],
"tiposDeducaoAdmitidos": [
"9"
],
"aliquotaIssqn": 5,
"fonteParametros": "adn"
}CancelNfseDto
Motivo do cancelamento de NFS-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
motivoCancelamento | string | Sim | 15 | 255 | — |
{
"motivoCancelamento": "Cancelamento solicitado pelo tomador"
}CreateNfeDto
Payload para emissão assíncrona de NF-e (modelo 55).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace (POST /v1/companies) |
ide | NfeIdeDto | Sim | — | — | Identificação da NF-e (grupo ide do XML) |
emit | NfeEmitDto | Sim | — | — | Dados do emitente (grupo emit) |
dest | NfeDestDto | Sim | — | — | Dados do destinatário (grupo dest) |
det | NfeItemDto[] | Sim | — | — | Itens da nota. Mínimo 1, máximo 990 (XSD leiauteNFe_v4.00) |
total | NfeTotalDto | Sim | — | — | Totais da NF-e (ICMS e, quando aplicável, IBS/CBS) |
transp | NfeTransportDto | Não | — | — | Transporte/frete (grupo transp). Opcional |
pag | NfePagamentoDto[] | Não | — | — | Formas de pagamento (detPag). Opcional, máximo 100 itens |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "35",
"natOp": "Venda de mercadoria",
"serie": "1",
"nnf": "8296",
"dhEmi": "2026-05-16T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "3550308",
"tpImp": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "9"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"enderEmit": {},
"ie": "123456789",
"crt": "2"
},
"dest": {
"cnpj": "98765432000111",
"xNome": "Destinatario Exemplo",
"enderDest": {},
"indIeDest": "9"
},
"det": [],
"total": {
"icmsTot": {}
}
}NfeTransportDto
Modalidade de frete (grupo transp do XML).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
modFrete | string | Sim | 1 | 1 | Modalidade do frete: 0=emitente, 1=destinatário, 2=terceiros, 3=próprio remetente, 4=próprio destinatário, 9=sem frete |
{
"modFrete": "9"
}NfePagamentoDto
Detalhe de pagamento (detPag do XML).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
tPag | string | Sim | 2 | 2 | Meio de pagamento (tabela SEFAZ: 01=dinheiro, 03=cartão crédito, 17=PIX, 99=outros) |
vPag | number | Sim | — | — | Valor do pagamento |
xPag | string | Não | 1 | 60 | Descrição do meio de pagamento. Obrigatório quando tPag=99 |
{
"tPag": "01",
"vPag": 100
}FiscalEnderecoDto
Endereço fiscal (TEndereco / TEnderEmi no XML NF-e/NFC-e).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
xLgr | string | Sim | — | — | Logradouro |
nro | string | Sim | — | — | Número |
xCpl | string | Não | — | — | Complemento. Opcional |
xBairro | string | Sim | — | — | Bairro |
cMun | string | Sim | — | — | Código IBGE do município (7 dígitos) |
xMun | string | Sim | — | — | Nome do município |
UF | string | Não | — | — | Sigla UF (2 letras). Aceita também uf |
uf | string | Não | — | — | Sigla UF (2 letras). Aceita também UF |
CEP | string | Não | — | — | CEP (8 dígitos). Aceita também cep |
cep | string | Não | — | — | CEP (8 dígitos). Aceita também CEP |
cPais | string | Não | — | — | Código país (1058=Brasil). Opcional |
xPais | string | Não | — | — | Nome do país. Opcional |
{
"xLgr": "Rua Exemplo",
"nro": "100",
"xBairro": "Centro",
"cMun": "3550308",
"xMun": "Sao Paulo",
"uf": "SP",
"cep": "01310100"
}FiscalIcmsTotDto
Totalizadores ICMS (grupo ICMSTot). Valores monetários com 2 decimais no XML.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
vBC | number | Não | — | — | Base de cálculo ICMS |
vICMS | number | Não | — | — | Valor total ICMS |
vICMSDeson | number | Não | — | — | Valor ICMS desonerado |
vFCP | number | Não | — | — | Valor FCP |
vBCST | number | Não | — | — | Base de cálculo ST |
vST | number | Não | — | — | Valor ICMS ST |
vProd | number | Sim | — | — | Valor total dos produtos |
vFrete | number | Não | — | — | Valor total frete |
vSeg | number | Não | — | — | Valor total seguro |
vDesc | number | Não | — | — | Valor total desconto |
vII | number | Não | — | — | Valor total II |
vIPI | number | Não | — | — | Valor total IPI |
vPIS | number | Não | — | — | Valor total PIS |
vCOFINS | number | Não | — | — | Valor total COFINS |
vOutro | number | Não | — | — | Outras despesas acessórias |
vNF | number | Sim | — | — | Valor total da NF-e/NFC-e |
vTotTrib | number | Não | — | — | Valor aproximado total de tributos |
{
"vBC": 0,
"vICMS": 0,
"vProd": 100,
"vNF": 100
}FiscalItemImpostoDto
Tributos do item (grupo imposto). Estrutura espelha o XML SEFAZ; grupos variam conforme CST/CSOSN.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
ICMS | object | Sim | — | — | Grupo ICMS (ex.: ICMS00, ICMSSN102). Informe orig, CST/CSOSN, bases e alíquotas |
PIS | object | Não | — | — | Grupo PIS (ex.: PISAliq, PISNT). Opcional conforme operação |
COFINS | object | Não | — | — | Grupo COFINS (ex.: COFINSAliq, COFINSNT). Opcional conforme operação |
IPI | object | Não | — | — | Grupo IPI. Opcional |
IBSCBS | object | Não | — | — | Grupo IBS/CBS (Reforma Tributária): CST, cClassTrib, gIBSCBS. Ver seção Reforma tributária |
{
"ICMS": {
"ICMSSN102": {
"orig": 0,
"CSOSN": "102"
}
},
"PIS": {
"PISNT": {
"CST": "07"
}
},
"COFINS": {
"COFINSNT": {
"CST": "07"
}
}
}NfeTotalDto
Totais da NF-e, incluindo ICMS e grupos da Reforma Tributária (IBS/CBS).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
icmsTot | FiscalIcmsTotDto | Sim | — | — | Totalizadores ICMS (grupo ICMSTot) |
ibsCbsTot | object | Não | — | — | Grupo IBSCBSTot no XML (opcional, Reforma Tributária): vBCIBSCBS, gIBS, gCBS |
vNfTot | number | Não | — | — | Campo vNFTot quando exigido pelo leiaute vigente (Reforma Tributária) |
{
"icmsTot": {
"vBC": 100,
"vICMS": 18,
"vProd": 100,
"vNF": 100
},
"ibsCbsTot": {
"vBCIBSCBS": 100,
"gIBS": {
"vIBS": 0.1
},
"gCBS": {
"vCBS": 0.9
}
}
}NfceTotalDto
Totais da NFC-e. icmsTot: valores monetários normalizados para 2 casas decimais no XML.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
icmsTot | FiscalIcmsTotDto | Sim | — | — | Totalizadores ICMS (grupo ICMSTot, 2 decimais no XML) |
ibsCbsTot | object | Não | — | — | Grupo IBSCBSTot no XML (opcional, Reforma Tributária): vBCIBSCBS, gIBS, gCBS |
vNfTot | number | Não | — | — | Campo vNFTot quando exigido pelo leiaute vigente (Reforma Tributária) |
{
"icmsTot": {
"vBC": 50,
"vICMS": 9,
"vProd": 50,
"vNF": 50
},
"ibsCbsTot": {
"vBCIBSCBS": 50,
"gIBS": {
"vIBS": 0.05
},
"gCBS": {
"vCBS": 0.45
}
}
}CancelNfeDto
Justificativa de cancelamento de NF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
justificativa | string | Sim | 15 | 255 | — |
{
"justificativa": "Cancelamento por solicitacao do cliente"
}InutilizeNfeDto
Inutilização de faixa de numeração NF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
serie | string | Sim | 1 | 3 | — |
nnfIni | string | Sim | 1 | 9 | — |
nnfFin | string | Sim | 1 | 9 | — |
xJust | string | Sim | 15 | 255 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie": "1",
"nnfIni": "1",
"nnfFin": "10",
"xJust": "Numeracao nao utilizada"
}NfceIdeDto
Identificação da NFC-e. Não envie tpAmb nem cNF (XML): ambiente vem da empresa/CSC; cNF é gerado na API (opcional: cnf).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cuf | string | Sim | 2 | 2 | Código IBGE da UF do emitente (2 dígitos, ex.: 35=SP) |
cnf | string | Não | 8 | 8 | Código numérico (8 dígitos). Opcional; a API gera se omitido. Não envie cNF |
natOp | string | Sim | 1 | 60 | Descrição da natureza da operação (ex.: Venda ao consumidor) |
serie | string | Sim | 1 | 3 | Série da NFC-e |
nnf | string | Sim | 1 | 9 | Número da NFC-e. Conflito 409 se série+nnf já consumidos no ambiente |
dhEmi | string | Sim | — | 35 | Data e hora de emissão em ISO 8601 com fuso |
tpNf | string | Sim | 1 | 1 | Tipo da NFC-e: 0=entrada, 1=saída (venda ao consumidor usa 1) |
idDest | string | Sim | 1 | 1 | Destino da operação: 1=interna, 2=interestadual, 3=exterior |
cMunFg | string | Sim | 7 | 7 | Código IBGE do município do fato gerador (7 dígitos) |
tpImp | string | Sim | 1 | 1 | Formato DANFE NFC-e: use 4 (obrigatório para modelo 65) |
tpEmis | string | Não | 1 | 1 | Tipo de emissão: 1=normal (default). Outros valores para contingência |
finNfe | string | Sim | 1 | 1 | Finalidade: 1=normal, 2=complementar, 3=ajuste, 4=devolução |
indFinal | string | Sim | 1 | 1 | Consumidor final: 0=não, 1=sim (NFC-e geralmente usa 1) |
indPres | string | Sim | 1 | 1 | Indicador de presença do comprador (tabela SEFAZ: 0–9) |
indIntermed | string | Não | 1 | 1 | Indicador de intermediador/marketplace: 0=sem, 1=com. Opcional |
procEmi | string | Não | 1 | 1 | Processo de emissão: 0=app contribuinte. Opcional |
verProc | string | Não | 1 | 20 | Versão do processo emissor (ex.: FISQAL-1.0). Opcional |
{
"cuf": "53",
"natOp": "Venda ao consumidor",
"serie": "1",
"nnf": "100",
"dhEmi": "2026-06-03T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "5300108",
"tpImp": "4",
"tpEmis": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "1",
"procEmi": "0",
"verProc": "FISQAL-1.0"
}NfceEmitDto
Emitente da NFC-e. enderEmit: use UF/CEP (ou uf/cep); se omitidos, a API usa uf/cep da empresa no XML (TEnderEmi).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Sim | 14 | 14 | CNPJ do emitente (14 dígitos, sem formatação) |
xNome | string | Sim | 1 | 255 | Razão social do emitente |
xFant | string | Não | 1 | 60 | Nome fantasia. Opcional |
enderEmit | FiscalEnderecoDto | Sim | — | — | Endereço do emitente. UF/CEP recomendados; fallback para dados da empresa na NFC-e |
ie | string | Sim | 1 | 14 | Inscrição estadual do emitente |
crt | string | Sim | 1 | 1 | Código de regime tributário: 1=Simples Nacional, 2=Simples excesso, 3=Normal |
{
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"xFant": "Emitente",
"enderEmit": {
"xLgr": "Rua Exemplo",
"nro": "100",
"xBairro": "Centro",
"cMun": "5300108",
"xMun": "Brasilia",
"uf": "DF",
"cep": "70000000"
},
"ie": "123456789",
"crt": "1"
}NfceDestDto
Destinatário opcional (consumidor identificado). Omita para venda sem identificação.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Não | 14 | 14 | CNPJ do consumidor identificado. Mutuamente exclusivo com cpf |
cpf | string | Não | 11 | 11 | CPF do consumidor identificado. Mutuamente exclusivo com cnpj |
xNome | string | Não | 2 | 60 | Nome do consumidor. Opcional |
enderDest | FiscalEnderecoDto | Não | — | — | Endereço do consumidor. Opcional |
indIeDest | string | Não | 1 | 1 | Indicador IE: 1=contribuinte, 2=isento, 9=não contribuinte. Opcional |
ie | string | Não | 1 | 20 | Inscrição estadual do consumidor. Opcional |
email | string | Não | 1 | 60 | E-mail do consumidor. Opcional |
{
"cpf": "12345678901",
"xNome": "Consumidor",
"indIeDest": "9"
}NfceItemDto
Item da NFC-e em JSON achatado. Não use o grupo prod do XML; envie cProd, ncm, cfop etc. neste nível.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nItem | number | Sim | — | — | Número sequencial do item (1, 2, 3...) |
cProd | string | Sim | 1 | 60 | Código interno do produto |
cEan | string | Não | — | 14 | GTIN/EAN ou "SEM GTIN". Opcional |
xProd | string | Sim | 1 | 120 | Descrição do produto |
ncm | string | Sim | 2 | 8 | Código NCM |
cfop | string | Sim | 4 | 4 | CFOP da operação (4 dígitos) |
uCom | string | Sim | 1 | 6 | Unidade comercial (ex.: UN) |
qCom | number | Sim | — | — | Quantidade comercial |
vUnCom | number | Sim | — | — | Valor unitário comercial |
vProd | number | Sim | — | — | Valor total do produto |
cEanTrib | string | Não | — | 14 | GTIN/EAN da unidade tributável. Opcional |
uTrib | string | Sim | 1 | 6 | Unidade tributável |
qTrib | number | Sim | — | — | Quantidade tributável |
vUnTrib | number | Sim | — | — | Valor unitário tributável |
indTot | string | Sim | 1 | 1 | Compõe total da NFC-e: 1=sim, 0=não |
imposto | FiscalItemImpostoDto | Sim | — | — | Tributos do item (ICMS, PIS, COFINS, IBSCBS) |
vItem | number | Não | — | — | Valor total do item com tributos (vItem, RTC). Opcional |
{
"nItem": 1,
"cProd": "P-1",
"cEan": "SEM GTIN",
"xProd": "Produto exemplo",
"ncm": "22021000",
"cfop": "5102",
"uCom": "UN",
"qCom": 1,
"vUnCom": 5.9,
"vProd": 5.9,
"uTrib": "UN",
"qTrib": 1,
"vUnTrib": 5.9,
"indTot": "1",
"imposto": {
"ICMS": {
"ICMSSN102": {
"orig": 0,
"CSOSN": "102"
}
},
"PIS": {
"PISNT": {
"CST": "07"
}
},
"COFINS": {
"COFINSNT": {
"CST": "07"
}
}
}
}NfcePagamentoDto
Pagamento (detPag). indPag opcional: 0=à vista, 1=a prazo.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
indPag | string | Não | 1 | 1 | Indicador de pagamento: 0=à vista, 1=a prazo. Opcional |
tPag | string | Sim | 2 | 2 | Meio de pagamento (tabela SEFAZ: 01=dinheiro, 03=cartão crédito, 17=PIX, 99=outros) |
vPag | number | Sim | — | — | Valor do pagamento |
xPag | string | Não | 1 | 60 | Descrição do meio de pagamento. Obrigatório quando tPag=99 |
{
"indPag": "0",
"tPag": "01",
"vPag": 5.9
}CreateNfceDto
Payload para emissão assíncrona de NFC-e (modelo 65). JSON achatado: a API monta prod/tpAmb/cNF no XML. Proibido: ide.tpAmb, ide.cNF, det[].prod. 409 se série+nnf já consumidos no ambiente.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | UUID da empresa emitente cadastrada no workspace |
ide | NfceIdeDto | Sim | — | — | Identificação da NFC-e. Requer CSC cadastrado (PUT .../csc) |
emit | NfceEmitDto | Sim | — | — | Dados do emitente |
dest | NfceDestDto | Não | — | — | Consumidor identificado. Opcional — omita para venda sem identificação |
det | NfceItemDto[] | Sim | — | — | Itens da nota. Mínimo 1, máximo 990 (XSD leiauteNFe_v4.00) |
total | NfceTotalDto | Sim | — | — | Totais da NFC-e (ICMS e, quando aplicável, IBS/CBS) |
pag | NfcePagamentoDto[] | Sim | — | — | Formas de pagamento. Obrigatório, mínimo 1, máximo 100 itens |
contingenciaOffline | boolean | Não | — | — | Indica emissão em contingência offline. Opcional |
contingenciaJustificativa | string | Não | 15 | 255 | Justificativa da contingência (15–255 caracteres). Obrigatória em contingência offline |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "53",
"natOp": "Venda ao consumidor",
"serie": "1",
"nnf": "100",
"dhEmi": "2026-06-03T10: 00: 00-03: 00",
"tpNf": "1",
"idDest": "1",
"cMunFg": "5300108",
"tpImp": "4",
"tpEmis": "1",
"finNfe": "1",
"indFinal": "1",
"indPres": "1",
"procEmi": "0",
"verProc": "FISQAL-1.0"
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Empresa Emitente LTDA",
"xFant": "Emitente",
"enderEmit": {
"xLgr": "Rua Exemplo",
"nro": "100",
"xBairro": "Centro",
"cMun": "5300108",
"xMun": "Brasilia",
"uf": "DF",
"cep": "70000000",
"cPais": "1058",
"xPais": "BRASIL"
},
"ie": "123456789",
"crt": "1"
},
"det": [
{
"nItem": 1,
"cProd": "P-1",
"cEan": "SEM GTIN",
"xProd": "Produto exemplo",
"ncm": "22021000",
"cfop": "5102",
"uCom": "UN",
"qCom": 1,
"vUnCom": 5.9,
"vProd": 5.9,
"uTrib": "UN",
"qTrib": 1,
"vUnTrib": 5.9,
"indTot": "1",
"imposto": {
"ICMS": {
"ICMSSN102": {
"orig": 0,
"CSOSN": "102"
}
},
"PIS": {
"PISNT": {
"CST": "07"
}
},
"COFINS": {
"COFINSNT": {
"CST": "07"
}
}
}
}
],
"total": {
"icmsTot": {
"vBC": 0,
"vICMS": 0,
"vICMSDeson": 0,
"vFCP": 0,
"vBCST": 0,
"vST": 0,
"vProd": 5.9,
"vFrete": 0,
"vSeg": 0,
"vDesc": 0,
"vII": 0,
"vIPI": 0,
"vPIS": 0,
"vCOFINS": 0,
"vOutro": 0,
"vNF": 5.9,
"vTotTrib": 0
}
},
"pag": [
{
"indPag": "0",
"tPag": "01",
"vPag": 5.9
}
]
}CancelNfceDto
Justificativa de cancelamento de NFC-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
justificativa | string | Sim | 15 | 255 | — |
{
"justificativa": "Cancelamento por solicitacao do cliente"
}MdfeInfMunCarregaDto
Município de carregamento (ide.infMunCarrega).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cMunCarrega | string | Sim | — | 7 | — |
xMunCarrega | string | Sim | 2 | 60 | — |
{
"cMunCarrega": "3550308",
"xMunCarrega": "SAO PAULO"
}MdfeInfPercursoDto
UF de percurso (ide.infPercurso).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
ufPer | string | Sim | — | 2 | — |
{
"ufPer": "MG"
}MdfeIdeDto
Identificação do MDF-e (ide). ide.modal: 1=rodoviário, 2=aéreo, 3=aquaviário, 4=ferroviário.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cuf | string | Sim | — | 2 | — |
cmdf | string | Não | — | 8 | — |
serie | string | Sim | — | 3 | — |
nmdf | string | Sim | — | 9 | — |
modal | string | Sim | — | 1 | 1–4 conforme XSD |
tpEmit | string | Sim | — | 1 | — |
tpTransp | string | Não | — | 1 | — |
dhEmi | string | Sim | — | 35 | — |
tpEmis | string | Não | — | 1 | — |
ufIni | string | Sim | — | 2 | — |
ufFim | string | Sim | — | 2 | — |
infMunCarrega | MdfeInfMunCarregaDto[] | Não | — | — | max 50 |
infPercurso | MdfeInfPercursoDto[] | Não | — | — | max 25 |
dhIniViagem | string | Não | — | 35 | — |
indCanalVerde | string | Não | — | 1 | — |
indCarregaPosterior | string | Não | — | 1 | — |
procEmi | string | Não | — | 1 | — |
verProc | string | Não | — | 20 | — |
{
"cuf": "35",
"serie": "1",
"nmdf": "1",
"modal": "1",
"tpEmit": "1",
"dhEmi": "2026-06-12T10: 00: 00-03: 00",
"ufIni": "SP",
"ufFim": "RJ",
"infMunCarrega": [
{
"cMunCarrega": "3550308",
"xMunCarrega": "SAO PAULO"
}
]
}MdfeEmitDto
Emitente do MDF-e (emit). Informe cnpj ou cpf.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Não | 14 | 14 | — |
cpf | string | Não | 11 | 11 | — |
xNome | string | Sim | 2 | 60 | — |
xFant | string | Não | 1 | 60 | — |
enderEmit | object | Sim | — | — | — |
ie | string | Sim | — | 14 | — |
{
"cnpj": "12345678000199",
"xNome": "Transportadora Exemplo LTDA",
"enderEmit": {},
"ie": "123456789"
}MdfeModalRodoviarioDto
Referência de infModal.payload quando ide.modal=1 (XSD mdfeModalRodoviario).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
infANTT | object | Não | — | — | — |
veicTracao | object | Sim | — | — | — |
veicReboque | object[] | Não | — | — | — |
lacRodo | object[] | Não | — | — | — |
{
"infANTT": {
"RNTRC": "12345678"
},
"veicTracao": {
"placa": "ABC1D23",
"tara": "8000",
"capKG": "25000",
"tpRod": "01",
"tpCar": "02",
"UF": "SP",
"condutor": [
{
"xNome": "Joao Silva",
"CPF": "12345678901"
}
]
}
}MdfeModalAereoDto
Referência de infModal.payload quando ide.modal=2 (XSD mdfeModalAereo).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nac | string | Sim | — | 4 | — |
matr | string | Sim | — | 6 | — |
nVoo | string | Sim | — | 9 | — |
cAerEmb | string | Sim | — | 4 | — |
cAerDes | string | Sim | — | 4 | — |
dVoo | string | Sim | — | 10 | — |
{
"nac": "BRA",
"matr": "PTABC",
"nVoo": "1234",
"cAerEmb": "SBGR",
"cAerDes": "SBGL",
"dVoo": "2026-06-12"
}MdfeModalAquaviarioDto
Referência de infModal.payload quando ide.modal=3 (XSD mdfeModalAquaviario).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
irin | string | Sim | — | 10 | — |
tpEmb | string | Sim | — | 2 | — |
cEmbar | string | Sim | — | 10 | — |
xEmbar | string | Sim | — | 60 | — |
nViag | string | Sim | — | 10 | — |
cPrtEmb | string | Sim | — | 5 | — |
cPrtDest | string | Sim | — | 5 | — |
prtTrans | string | Não | — | 60 | — |
tpNav | string | Não | — | 1 | — |
{
"irin": "1234567890",
"tpEmb": "01",
"cEmbar": "1234567890",
"xEmbar": "Embarcacao Exemplo",
"nViag": "001",
"cPrtEmb": "BRSP1",
"cPrtDest": "BRRJ1"
}MdfeModalFerroviarioDto
Referência de infModal.payload quando ide.modal=4 (XSD mdfeModalFerroviario).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
trem | object | Sim | — | — | — |
vag | object[] | Não | — | — | — |
{
"trem": {
"xPref": "12345678901234567890123456789012"
},
"vag": []
}MdfeInfModalDto
Modal de transporte (infModal). payload segue o XSD do modal em ide.modal (1–4). Namespace XML: http://www.portalfiscal.inf.br/mdfe.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | MdfeModalRodoviarioDto | MdfeModalAereoDto | MdfeModalAquaviarioDto | MdfeModalFerroviarioDto |
{
"payload": {
"infANTT": {
"RNTRC": "12345678"
},
"veicTracao": {
"placa": "ABC1D23",
"tara": "8000",
"capKG": "25000",
"tpRod": "01",
"tpCar": "02",
"UF": "SP",
"condutor": [
{
"xNome": "Joao Silva",
"CPF": "12345678901"
}
]
}
}
}MdfeInfDocItemDto
Chave de documento vinculado (CT-e, NF-e ou MDF-e).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
chave | string | Sim | 44 | 44 | — |
segundoCod | string | Não | — | 44 | — |
{
"chave": "3526051234567800019955001000082971234567890"
}MdfeInfDocDto
Documentos fiscais por município de descarga (infDoc).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cMunDescarga | string | Sim | — | 7 | — |
xMunDescarga | string | Sim | 2 | 60 | — |
infCTe | MdfeInfDocItemDto[] | Não | — | — | max 20000 |
infNFe | MdfeInfDocItemDto[] | Não | — | — | max 20000 |
infMDFeTransp | MdfeInfDocItemDto[] | Não | — | — | max 20000 |
{
"cMunDescarga": "3304557",
"xMunDescarga": "RIO DE JANEIRO",
"infNFe": [
{
"chave": "3526051234567800019955001000082971234567890"
}
]
}MdfeTotDto
Totais do MDF-e (tot).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
qCte | number | Não | — | — | — |
qNfe | number | Não | — | — | — |
qMdfe | number | Não | — | — | — |
vCarga | number | Sim | — | — | — |
cUnid | string | Sim | — | 2 | — |
qCarga | number | Sim | — | — | — |
{
"qNfe": 1,
"vCarga": 10000,
"cUnid": "01",
"qCarga": 5000
}MdfeAutXmlDto
Autorizado a baixar XML (autXML). Informe cnpj ou cpf.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Não | 14 | 14 | — |
cpf | string | Não | 11 | 11 | — |
{
"cnpj": "12345678000199"
}MdfeInfAdicDto
Informações adicionais (infAdic).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
infAdFisco | string | Não | — | 2000 | — |
infCpl | string | Não | — | 5000 | — |
{
"infCpl": "Observacao complementar"
}CreateMdfeDto
Payload para emissão assíncrona de MDF-e (modelo 58).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
ide | MdfeIdeDto | Sim | — | — | — |
emit | MdfeEmitDto | Sim | — | — | — |
infModal | MdfeInfModalDto | Sim | — | — | — |
infDoc | MdfeInfDocDto[] | Sim | — | — | — |
tot | MdfeTotDto | Sim | — | — | — |
seg | object[] | Não | — | — | — |
lacres | string[] | Não | — | 20 | — |
autXml | MdfeAutXmlDto[] | Não | — | — | — |
infAdic | MdfeInfAdicDto | Não | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"ide": {
"cuf": "35",
"serie": "1",
"nmdf": "1",
"modal": "1",
"tpEmit": "1",
"dhEmi": "2026-06-12T10: 00: 00-03: 00",
"ufIni": "SP",
"ufFim": "RJ",
"infMunCarrega": [
{
"cMunCarrega": "3550308",
"xMunCarrega": "SAO PAULO"
}
]
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Transportadora Exemplo LTDA",
"enderEmit": {},
"ie": "123456789"
},
"infModal": {
"payload": {
"infANTT": {
"RNTRC": "12345678"
},
"veicTracao": {
"placa": "ABC1D23",
"tara": "8000",
"capKG": "25000",
"tpRod": "01",
"tpCar": "02",
"UF": "SP",
"condutor": [
{
"xNome": "Joao Silva",
"CPF": "12345678901"
}
]
}
}
},
"infDoc": [
{
"cMunDescarga": "3304557",
"xMunDescarga": "RIO DE JANEIRO",
"infNFe": [
{
"chave": "3526051234567800019955001000082971234567890"
}
]
}
],
"tot": {
"qNfe": 1,
"vCarga": 10000,
"cUnid": "01",
"qCarga": 5000
}
}CancelMdfeDto
Justificativa de cancelamento de MDF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
justificativa | string | Sim | 15 | 255 | — |
{
"justificativa": "Cancelamento por solicitacao do transportador"
}CloseMdfeDto
Dados de encerramento de MDF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cUf | string | Sim | — | 2 | — |
cMun | string | Sim | — | 7 | — |
dtEnc | string | Sim | — | 10 | — |
indEncPorTerceiro | string | Não | — | 1 | — |
{
"cUf": "33",
"cMun": "3304557",
"dtEnc": "2026-06-12"
}IncludeDriverMdfeDto
Payload do evento de inclusão de condutor.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | — |
{
"payload": {
"condutor": {
"xNome": "Joao",
"CPF": "12345678901"
}
}
}IncludeDfeMdfeDto
Payload do evento de inclusão de DF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | — |
{
"payload": {
"infDoc": []
}
}PaymentMdfeDto
Payload do evento 110116 — pagamento da operação de transporte.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | — |
{
"payload": {
"infPag": []
}
}ConfirmServiceMdfeDto
Payload do evento 110117 — confirmação do serviço de transporte.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | — |
{
"payload": {
"infServico": {}
}
}ChangePaymentMdfeDto
Payload do evento 110118 — alteração de pagamento do serviço.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
payload | object | Sim | — | — | — |
{
"payload": {
"infPag": []
}
}ConsultMdfeChaveDto
Consulta de MDF-e por chave de acesso na SEFAZ.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199580010000000011234567890"
}ConsultMdfeNotClosedDto
Consulta MDF-e não encerrados na SEFAZ (query em GET /v1/mdfe/not-closed).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}SyncMdfeDfeDto
Dispara sincronização de DF-e MDF-e (Ambiente Nacional).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}ConsultMdfeDfeChaveDto
Consulta pontual de MDF-e por chave via DF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199580010000000011234567890"
}CreateCteDto
Emissão de CT-e (modelos 57, 67 ou 64). Namespace XML: http://www.portalfiscal.inf.br/cte.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
mod | string | Sim | — | — | 57 | 67 | 64 |
ide | CteIdeDto | Sim | — | — | — |
emit | CteEmitDto | Sim | — | — | — |
rem | CtePartyDto | Não | — | — | — |
dest | CtePartyDto | Não | — | — | — |
vPrest | CteVPrestDto | Sim | — | — | — |
imp | CteImpDto | Sim | — | — | — |
infCarga | CteInfCargaDto | Não | — | — | — |
infDoc | CteInfDocDto[] | Não | — | — | — |
infModal | CteInfModalDto | Sim | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "57",
"ide": {
"cuf": "35",
"cfop": "6352",
"natOp": "PRESTACAO DE SERVICO DE TRANSPORTE",
"serie": "1",
"nct": "1",
"modal": "01",
"tpServ": "0",
"tpCTe": "0",
"dhEmi": "2026-06-12T10: 00: 00-03: 00",
"cMunEnv": "3550308",
"xMunEnv": "SAO PAULO",
"UFEnv": "SP",
"cMunIni": "3550308",
"xMunIni": "SAO PAULO",
"UFIni": "SP",
"cMunFim": "3304557",
"xMunFim": "RIO DE JANEIRO",
"UFFim": "RJ",
"retira": "0",
"toma3": {
"toma": "3"
}
},
"emit": {
"cnpj": "12345678000199",
"xNome": "Transportadora Exemplo LTDA",
"enderEmit": {},
"ie": "123456789"
},
"vPrest": {
"vTPrest": 1500,
"vRec": 1500
},
"imp": {
"payload": {
"ICMS": {
"ICMS45": {
"CST": "40"
}
}
}
},
"infModal": {
"modal": "01",
"payload": {
"RNTRC": "12345678"
}
}
}CancelCteDto
Cancelamento de CT-e autorizado.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
justificativa | string | Sim | 15 | 255 | — |
{
"justificativa": "Cancelamento solicitado pelo emitente"
}CceCteDto
Carta de correção eletrônica do CT-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
infCorrecao | CteInfCorrecaoDto[] | Sim | — | — | — |
xCondUso | string | Não | — | 2000 | — |
{
"infCorrecao": [
{
"grupoAlterado": "ide",
"campoAlterado": "natOp",
"valorAlterado": "PRESTACAO DE SERVICO DE TRANSPORTE A"
}
]
}ConsultCteChaveDto
Consulta de CT-e por chave de acesso na SEFAZ.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199570010000000011234567890"
}InutilizeCteDto
Inutilização de faixa de numeração CT-e (modelos 57 ou 67).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
mod | string | Sim | — | — | 57 | 67 |
serie | string | Sim | — | 3 | — |
nCtIni | string | Sim | — | 9 | — |
nCtFin | string | Sim | — | 9 | — |
xJust | string | Sim | 15 | 255 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"mod": "57",
"serie": "1",
"nCtIni": "1",
"nCtFin": "10",
"xJust": "Numeracao nao utilizada"
}SyncCteDfeDto
Dispara sincronização de DF-e CT-e (Ambiente Nacional).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}ConsultCteDfeChaveDto
Consulta pontual de CT-e por chave via DF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199570010000000011234567890"
}InutilizeNfceDto
Inutilização de faixa de numeração NFC-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
serie | string | Sim | 1 | 3 | — |
nnfIni | string | Sim | 1 | 9 | — |
nnfFin | string | Sim | 1 | 9 | — |
xJust | string | Sim | 15 | 255 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serie": "1",
"nnfIni": "1",
"nnfFin": "10",
"xJust": "Numeracao nao utilizada"
}UpsertCompanyNfceCscDto
Configuração de CSC para QR Code NFC-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
tpAmb | string | Sim | 1 | 1 | 1=produção, 2=homologação |
cscId | string | Sim | 1 | 10 | — |
cscToken | string | Sim | 1 | 36 | — |
urlChave | string | Não | 1 | 500 | — |
{
"tpAmb": "2",
"cscId": "000001",
"cscToken": "CSC-TOKEN-SECRET"
}RegisterAccountDto
Cadastro de usuario do console antes do checkout.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nome | string | Sim | 1 | 160 | — |
email | string (email) | Sim | 1 | 255 | — |
password | string | Sim | 8 | 128 | — |
{
"nome": "Maria Silva",
"email": "maria@empresa.com.br",
"password": "senha-segura"
}CompleteFirstAccessDto
Definição de senha no primeiro acesso ao console.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
password | string | Sim | 8 | 128 | — |
{
"password": "senha-segura"
}CheckEmailDto
Verificacao de disponibilidade de e-mail para cadastro.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
email | string (email) | Sim | 1 | 255 | — |
{
"email": "maria@empresa.com.br"
}CreateCompanyDto
Body de POST /v1/companies e PATCH /v1/companies/{id}. CNPJ único por workspace e ambiente fiscal.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
razao_social | string | Sim | 1 | 255 | — |
nome_fantasia | string | Não | 1 | 255 | — |
cnpj | string | Sim | 14 | 14 | 14 digitos |
inscricao_municipal | string | Não | — | 30 | — |
inscricao_estadual | string | Não | — | 30 | — |
cnae | string | Não | — | 10 | — |
regime_tributario | string | Não | — | 40 | — |
logradouro | string | Não | — | 255 | — |
numero | string | Não | — | 20 | — |
complemento | string | Não | — | 120 | — |
bairro | string | Não | — | 120 | — |
cep | string | Não | 8 | 8 | — |
municipio | string | Não | — | 120 | — |
codigo_municipio | string | Não | 7 | 7 | IBGE 7 digitos |
uf | string | Não | 2 | 2 | UF com 2 letras |
email | string (email) | Não | 1 | 255 | — |
telefone | string | Não | — | 20 | — |
fiscal_ambiente | string | Não | — | — | homologacao | producao |
{
"razao_social": "Empresa Emitente LTDA",
"nome_fantasia": "Empresa Emitente",
"cnpj": "12345678000199",
"inscricao_municipal": "12345678",
"inscricao_estadual": "123456789",
"codigo_municipio": "3550308",
"municipio": "Sao Paulo",
"uf": "SP",
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"cep": "01310100",
"email": "contato@empresa.com.br",
"telefone": "1133334444",
"fiscal_ambiente": "producao"
}UpdateCompanyStatusDto
Ativacao ou desativacao de empresa.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
status | string | Sim | — | — | active | inactive |
{
"status": "inactive"
}CreateWebhookDto
Cadastro de assinatura de webhook.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nome | string | Sim | 1 | 160 | — |
url | string (url) | Sim | 1 | 500 | — |
eventos | string[] | Sim | — | — | Min 1, max 32 eventos; cada item max 120 caracteres |
{
"nome": "Webhook Producao",
"url": "https://example.com/webhooks/fisqal",
"eventos": [
"nfse.processing",
"nfse.authorized",
"nfse.rejected",
"nfse.failed",
"nfse.cancelled"
]
}FortalezaDestinatarioRtcDto
Destinatário do serviço em cenários RTC (ex.: Fortaleza com indicadorDestinatario=1).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
tipoInscricao | string | Sim | 1 | 1 | Tipo de inscrição: 1=CPF, 2=CNPJ |
inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do destinatário |
nif | string | Não | — | 40 | NIF do destinatário estrangeiro. Quando informado, use naoNif=0. Opcional |
naoNif | string | Sim | 1 | 1 | Motivo para não informar NIF: 0=não informado na origem (com NIF), 1=dispensado, 2=não exigência |
nome | string | Sim | 1 | 150 | Nome ou razão social do destinatário |
endereco | NfseTomadorEnderecoDto | Sim | — | — | Endereço do destinatário |
telefone | string | Não | — | 20 | Telefone do destinatário. Opcional |
email | string | Não | — | 80 | E-mail do destinatário. Obrigatório quando indicadorDestinatario=1 (Fortaleza) |
{
"tipoInscricao": "2",
"inscricaoFederal": "12345678000199",
"naoNif": "2",
"nome": "Destinatario do Servico LTDA",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"codigoMunicipio": "3550308",
"uf": "SP",
"cep": "01310100"
},
"email": "destinatario@email.com"
}FortalezaImovelRtcDto
Imóvel vinculado à operação (operações imobiliárias RTC).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
inscricaoImobiliariaFiscal | string | Não | — | 30 | Inscrição imobiliária fiscal do imóvel. Opcional conforme município |
codigoCib | string | Não | — | 8 | Código CIB (Cadastro Imobiliário Brasileiro). Opcional |
endereco | NfseTomadorEnderecoDto | Sim | — | — | Endereço do imóvel |
{
"inscricaoImobiliariaFiscal": "1234",
"endereco": {
"logradouro": "Rua Exemplo",
"numero": "100",
"bairro": "Centro",
"codigoMunicipio": "2304400",
"uf": "CE",
"cep": "60000000"
}
}FortalezaNfseReferenciadaRtcDto
NFS-e referenciadas em operações RTC (chaves de 50 dígitos).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
chavesNfseReferenciada | string[] | Sim | — | — | Lista de chaves NFS-e referenciadas (50 dígitos numéricos cada, 1–100 itens) |
{
"chavesNfseReferenciada": [
"00000000000000000000000000000000000000000000000000"
]
}NfseTomadorEnderecoDto
Endereço do tomador NFS-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
logradouro | string | Sim | 1 | 255 | Logradouro (rua, avenida etc.) |
numero | string | Sim | 1 | 20 | Número do imóvel |
complemento | string | Não | 1 | 120 | Complemento do endereço. Opcional |
bairro | string | Sim | 1 | 120 | Bairro |
codigoMunicipio | string | Sim | 7 | 7 | Código IBGE do município (7 dígitos) |
uf | string | Sim | 2 | 2 | Sigla da UF (2 letras) |
cep | string | Sim | 8 | 8 | CEP (8 dígitos, sem hífen) |
{
"logradouro": "QND 34",
"numero": "7",
"bairro": "TAGUATINGA NORTE",
"codigoMunicipio": "5300108",
"uf": "DF",
"cep": "72120340"
}NfseTomadorDto
Tomador da NFS-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
tipoInscricao | string | Sim | 1 | 1 | Tipo de inscrição: 1=CPF, 2=CNPJ |
inscricaoFederal | string | Sim | 1 | 14 | CPF ou CNPJ do tomador (sem formatação) |
razaoSocial | string | Sim | 1 | 255 | Nome ou razão social do tomador |
email | string | Não | 1 | 80 | E-mail do tomador. Opcional |
inscricaoMunicipal | string | Não | 1 | 15 | Inscrição municipal do tomador. Opcional |
endereco | NfseTomadorEnderecoDto | Não | — | — | Endereço do tomador. Opcional conforme município/regra |
{
"tipoInscricao": "2",
"inscricaoFederal": "12345678000199",
"razaoSocial": "Tomador Exemplo LTDA"
}NfseServicoDto
Serviço da NFS-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
codigoServico | string | Sim | 6 | 6 | Código cTribNac (6 dígitos — item + subitem LC 116 + desdobro nacional). Catálogo: GET /v1/nfse/codigos-tributacao |
municipioIncidencia | string | Sim | 7 | 7 | Código IBGE do município de incidência do ISSQN (7 dígitos) |
discriminacao | string | Sim | 1 | 2000 | Descrição detalhada do serviço prestado |
codigoNbs | string | Sim | 9 | 9 | Código NBS (9 dígitos). Obrigatório desde 01/01/2026. Catálogo: GET /v1/nfse/codigos-nbs |
codigoTributacaoMunicipio | string | Não | 3 | 9 | Código de tributação municipal (3–9 dígitos). Opcional, conforme município |
codigoIndicadorOperacao | string | Não | 6 | 6 | Indicador de operação RTC (6 dígitos, ex.: 050102). Opcional; exigido em cenários RTC |
ibsCbsSituacaoTributaria | string | Não | 3 | 3 | CST IBS/CBS (3 dígitos, ex.: 000). Opcional; exigido em cenários RTC |
ibsCbsClassificacaoTributaria | string | Não | 6 | 6 | Classificação tributária IBS/CBS (6 dígitos, ex.: 000001). Opcional; exigido em cenários RTC |
tipoOperacao | string | Não | 1 | 1 | Tipo de operação RTC (TipoOp): 1|2|3|4|5. Opcional; exigido em Fortaleza/RTC |
{
"codigoServico": "010101",
"codigoNbs": "115021000",
"municipioIncidencia": "3550308",
"discriminacao": "Consultoria em tecnologia da informacao"
}NfseValoresDto
Valores da NFS-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
valorServico | number | Sim | — | — | Valor bruto do serviço prestado |
tribIssqn | string | Não | 1 | 1 | Tributação ISSQN: 1|2|3|4 (XSD TSTribISSQN) |
tpRetIssqn | string | Não | 1 | 1 | Tipo retenção ISSQN: 1|2|3 (XSD TSTipoRetISSQN) |
aliquotaIssqn | number | Não | — | — | Alíquota ISSQN (%). XML pAliq. Omitir quando município parametrizado no SN NFS-e; obrigatório quando tribIssqn=1 e incidência não parametrizada |
valorPis | number | Não | — | — | Valor de PIS não retido (NT RPS 3.0 — ValorPis). Opcional |
valorCofins | number | Não | — | — | Valor de COFINS não retido (NT RPS 3.0 — ValorCofins). Opcional |
valorCsll | number | Não | — | — | Valor de CSLL retida (NT RPS 3.0 — ValorCsll). Opcional |
{
"valorServico": 1500,
"tribIssqn": "1",
"tpRetIssqn": "1",
"aliquotaIssqn": 5
}NfeIdeDto
Identificação da NF-e (grupo ide).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cuf | string | Sim | 2 | 2 | Código IBGE da UF do emitente (2 dígitos, ex.: 35=SP) |
cnf | string | Não | 8 | 8 | Código numérico da NF-e (8 dígitos). Opcional; a API gera se omitido |
natOp | string | Sim | 1 | 60 | Descrição da natureza da operação |
serie | string | Sim | 1 | 3 | Série da NF-e |
nnf | string | Sim | 1 | 9 | Número da NF-e |
dhEmi | string | Sim | — | 35 | Data e hora de emissão em ISO 8601 com fuso (ex.: 2026-05-16T10:00:00-03:00) |
dhSaiEnt | string | Não | — | 35 | Data e hora de saída ou entrada da mercadoria. Opcional |
tpNf | string | Sim | 1 | 1 | Tipo da NF-e: 0=entrada, 1=saída |
idDest | string | Sim | 1 | 1 | Destino da operação: 1=interna, 2=interestadual, 3=exterior |
cMunFg | string | Sim | 7 | 7 | Código IBGE do município do fato gerador do ICMS (7 dígitos) |
tpImp | string | Sim | 1 | 1 | Formato DANFE: 1=retrato (padrão NF-e), 2=paisagem |
tpEmis | string | Não | 1 | 1 | Tipo de emissão: 1=normal (default). Outros valores para contingência |
finNfe | string | Sim | 1 | 1 | Finalidade: 1=normal, 2=complementar, 3=ajuste, 4=devolução |
indFinal | string | Sim | 1 | 1 | Consumidor final: 0=não, 1=sim |
indPres | string | Sim | 1 | 1 | Indicador de presença do comprador (tabela SEFAZ: 0–9) |
indIntermed | string | Não | 1 | 1 | Indicador de intermediador/marketplace: 0=sem, 1=com. Opcional |
procEmi | string | Não | 1 | 1 | Processo de emissão: 0=app contribuinte, 1=avulsa Fisco, 3=app certificado. Opcional |
verProc | string | Não | 1 | 20 | Versão do processo emissor (ex.: FISQAL-1.0). Opcional |
{
"cuf": "35",
"natOp": "Venda",
"serie": "1",
"nnf": "1"
}NfeEmitDto
Emitente da NF-e (grupo emit).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Sim | 14 | 14 | CNPJ do emitente (14 dígitos, sem formatação) |
xNome | string | Sim | 1 | 255 | Razão social do emitente |
xFant | string | Não | 1 | 60 | Nome fantasia. Opcional |
enderEmit | FiscalEnderecoDto | Sim | — | — | Endereço do emitente (TEnderEmi) |
ie | string | Sim | 1 | 14 | Inscrição estadual do emitente |
crt | string | Sim | 1 | 1 | Código de regime tributário: 1=Simples Nacional, 2=Simples excesso, 3=Normal |
{
"cnpj": "12345678000199",
"xNome": "Emitente",
"ie": "123",
"crt": "2"
}NfeDestDto
Destinatário da NF-e (grupo dest). Informe cnpj ou cpf.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
cnpj | string | Não | 14 | 14 | CNPJ do destinatário (14 dígitos). Mutuamente exclusivo com cpf |
cpf | string | Não | 11 | 11 | CPF do destinatário (11 dígitos). Mutuamente exclusivo com cnpj |
xNome | string | Sim | 2 | 60 | Nome ou razão social do destinatário |
enderDest | FiscalEnderecoDto | Sim | — | — | Endereço do destinatário (TEndereco) |
indIeDest | string | Sim | 1 | 1 | Indicador IE destinatário: 1=contribuinte, 2=isento, 9=não contribuinte |
ie | string | Não | 1 | 20 | Inscrição estadual. Obrigatória quando indIeDest=1. Opcional |
email | string | Não | 1 | 60 | E-mail do destinatário para envio do XML/DANFE. Opcional |
{
"xNome": "Destinatario",
"enderDest": {},
"indIeDest": "9"
}NfeItemDto
Item da NF-e (grupo det/prod + imposto).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nItem | number | Sim | — | — | Número sequencial do item (1, 2, 3...) |
cProd | string | Sim | 1 | 60 | Código interno do produto ou serviço |
cEan | string | Não | — | 14 | GTIN/EAN do produto ou "SEM GTIN". Opcional |
xProd | string | Sim | 1 | 120 | Descrição do produto ou serviço |
ncm | string | Sim | 2 | 8 | Código NCM (Nomenclatura Comum do Mercosul) |
cfop | string | Sim | 4 | 4 | CFOP da operação (4 dígitos) |
uCom | string | Sim | 1 | 6 | Unidade comercial (ex.: UN, KG, CX) |
qCom | number | Sim | — | — | Quantidade comercial |
vUnCom | number | Sim | — | — | Valor unitário comercial |
vProd | number | Sim | — | — | Valor total do produto (qCom × vUnCom, descontos aplicados) |
cEanTrib | string | Não | — | 14 | GTIN/EAN da unidade tributável. Opcional |
uTrib | string | Sim | 1 | 6 | Unidade tributável |
qTrib | number | Sim | — | — | Quantidade tributável |
vUnTrib | number | Sim | — | — | Valor unitário tributável |
indTot | string | Sim | 1 | 1 | Compõe total da NF-e: 1=sim, 0=não |
imposto | FiscalItemImpostoDto | Sim | — | — | Tributos do item (ICMS, PIS, COFINS, IPI, IBSCBS) |
vItem | number | Não | — | — | Valor total do item com tributos (vItem, RTC). Opcional |
{
"nItem": 1,
"cProd": "P1",
"xProd": "Produto",
"ncm": "22021000",
"cfop": "5102",
"uCom": "UN",
"qCom": 1,
"vUnCom": 10,
"vProd": 10,
"uTrib": "UN",
"qTrib": 1,
"vUnTrib": 10,
"indTot": "1",
"imposto": {}
}ConsultNfseChaveDto
Consulta NFS-e externa por chave ou idDps.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Não | — | 50 | — |
idDps | string | Não | — | 64 | — |
codigoMunicipioIbge | string | Não | 7 | 7 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "CHAVE"
}SyncNfseExternalDto
Sincronização NFS-e externa.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
codigoMunicipioIbge | string | Sim | 7 | 7 | — |
mode | string | Sim | — | — | prestado | tomado | faixa |
dataInicio | date | Não | — | — | — |
dataFim | date | Não | — | — | — |
numeroInicial | string | Não | — | 15 | — |
numeroFinal | string | Não | — | 15 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"codigoMunicipioIbge": "3550308",
"mode": "prestado"
}SyncNfeDfeDto
Sincronização NF-e DF-e.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}ConsultNfeDfeChaveDto
Consulta NF-e DF-e por chave.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "35260612345678000199550010000082961000082961"
}ConsultNfceChaveDto
Consulta NFC-e por chave.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
companyId | uuid | Sim | — | — | — |
chaveAcesso | string | Sim | 44 | 44 | — |
{
"companyId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"chaveAcesso": "65260612345678000199650010000001001000001001"
}CreateConsoleApiKeyDto
Criação de API key no console.
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nome | string | Sim | 1 | 160 | — |
scopes | string[] | Sim | — | — | Min 1, max 16 scopes fiscais |
{
"nome": "Integração ERP",
"scopes": [
"nfse:read",
"nfse:write"
]
}UploadCertificateDto
Upload de certificado A1 (multipart).
| Campo | Tipo | Obrigatório | Mín | Máx | Descrição |
|---|---|---|---|---|---|
nome | string | Sim | 1 | 160 | — |
password | string | Sim | 1 | 255 | — |
file | file | Sim | — | — | — |
{
"nome": "Certificado Producao",
"password": "senha-certificado"
}Erros padronizados
Respostas de erro seguem formato JSON consistente:
{
"code": "NFSE_REJECTED",
"message": "Documento rejeitado pela prefeitura.",
"details": {},
"request_id": "req_abc123"
}| Código | HTTP | Mensagem |
|---|---|---|
UNAUTHORIZED | 401 | API key inválida ou ausente. |
FORBIDDEN | 403 | Sem permissão para executar esta operação. |
NOT_FOUND | 404 | Recurso não encontrado. |
CONFLICT | 409 | Conflito com o estado atual (ex.: número da NFC-e/série já utilizado no ambiente; emissão duplicada em processamento). |
VALIDATION_ERROR | 400 | Payload inválido; mensagens de validação retornadas em português. |
UNPROCESSABLE_ENTITY | 422 | Requisição válida, porém não processável (regra de negócio ou fiscal). |
CERTIFICATE_INVALID | 422 | Certificado inválido, expirado ou senha incorreta. |
FISCAL_PROVIDER_ERROR | 502 | Falha na comunicação com autoridade fiscal. |
E0039 | 422 | Municipio sem emissor nacional SEFIN parametrizado. |
E0040 | 422 | Sem cobertura SEFIN, GINFES, ABRASF 2.04 (issnet-abrasf-204) nem ISS.Net nacional (issnet-nacional) para emissao. |
E0041 | 503 | Certificado ADN (NFSE_SYNC_CERT_PATH/PASSWORD) ausente ao atualizar cobertura sob demanda. |
E0042 | 503 | Falha ao consultar ADN para atualizar cobertura do municipio. |
NFSE_REJECTED | 422 | Documento rejeitado pela prefeitura. |
NFE_REJECTED | 422 | NF-e rejeitada pela SEFAZ. |
NFCE_REJECTED | 422 | NFC-e rejeitada pela SEFAZ. |
PLAN_FORBIDDEN | 403 | Feature ou limite do plano não permite a operação. |
COMPANY_PLAN_LIMIT | 403 | Este CNPJ excede o limite do plano. Desative outra empresa ou faça upgrade. |
COMPANY_INACTIVE | 403 | Empresa inativa. Reative a empresa para emitir documentos fiscais. |
SUBSCRIPTION_INACTIVE | 403 | Assinatura da FISQAL inativa. Regularize o pagamento para continuar. |
BILLING_UNAVAILABLE | 503 | Pagamento indisponível no momento. Tente novamente em instantes. |
RATE_LIMITED | 429 | Limite de requisições excedido. |
INTERNAL_ERROR | 500 | Erro interno inesperado. |