Documentação

API Dataqube

A API Dataqube é uma REST API que permite emitir NF-e, NFS-e e NFC-e de forma programática. Use-a para integrar emissão fiscal ao seu ERP, e-commerce, sistema de gestão ou qualquer aplicação.

REST API

JSON sobre HTTPS

Tempo real

Respostas em segundos

Segura

TLS 1.2+ em todas as chamadas

Autenticação

Todas as requisições precisam ser autenticadas com uma API Key obtida no painel em Desenvolvedores → API Keys. Envie a chave no cabeçalho Authorization.

# Exemplo com curl
curl -X POST https://nfe.dataqube.online/v1/invoices \
  -H "Authorization: Bearer SUA_API_KEY_AQUI" \
  -H "Content-Type: application/json" \
  -d '{ ... }'

Nunca exponha sua API Key em código front-end ou repositórios públicos. Armazene-a como variável de ambiente no servidor.

Ambientes

A Dataqube opera em dois ambientes independentes. Use Homologação para testes — as notas não têm valor fiscal.

Produção

Notas com validade fiscal. Use apenas dados reais.

NF-e: https://nfe.dataqube.online

NFS-e: https://nfs.dataqube.online

Homologação

Testes sem validade fiscal. SEFAZ em modo de teste.

NF-e: https://nfe-hml.dataqube.online

NFS-e: https://nfs-hml.dataqube.online

NF-e — Endpoints

NFC-e (modelo 65) é emitida via POST /v1/invoices/nfce, usando a mesma autenticação e o mesmo host base da NF-e. Se a SEFAZ/internet estiverem indisponíveis no momento da venda, a NFC-e é emitida em modo de contingência off-line (status AUTHORIZED_CONTINGENCY) e retransmitida automaticamente até o final do primeiro dia útil subsequente — veja a seção de Webhooks para o evento de alerta caso esse prazo se esgote. A NFC-e possui cota mensal própria, independente da cota de NF-e do mesmo tenant/certificado — esgotar uma não bloqueia a outra.

POST/v1/invoicesEmitir NF-e

Envia a NF-e para a fila de processamento. O retorno é imediato (202) com o invoiceId. Use o endpoint de consulta para acompanhar o status.

{
  "referenceId": "PEDIDO-001",
  "natOp": "Venda de Mercadoria",
  "dest": {
    "document": "12345678000100",
    "xNome": "Empresa Destinatária Ltda",
    "indIEDest": "1",
    "address": {
      "zipCode": "01310-100",
      "street": "Avenida Paulista",
      "number": "100",
      "neighborhood": "Bela Vista",
      "cityIbge": "3550308",
      "cityName": "São Paulo",
      "uf": "SP"
    }
  },
  "items": [
    {
      "cProd": "PROD001",
      "xProd": "Produto de Exemplo",
      "NCM": "84713012",
      "CFOP": "5102",
      "uCom": "UN",
      "qCom": 2,
      "vUnCom": 150.00,
      "vProd": 300.00
    }
  ],
  "pag": [{ "tPag": "01", "vPag": 300.00 }],
  "transp": { "modFrete": "9" }
}

Resposta 202: { "invoiceId": "inv_xxx", "status": "PROCESSING" }

GET/v1/invoices/:idConsultar NF-e

Retorna os detalhes e status atual de uma NF-e pelo seu ID interno ou pelo referenceId.

{
  "id": "inv_abc123",
  "status": "AUTHORIZED",
  "chaveAcesso": "35260500000000000000550010000000011000000010",
  "nProt": "135240000000001",
  "dhRecbto": "2026-05-19T14:30:00-03:00",
  "referenceId": "PEDIDO-001"
}
GET/v1/invoicesListar NF-e

Lista as notas emitidas com paginação. Parâmetros de query disponíveis:

pagePágina (padrão: 1)
limitItens por página (máx. 100)
statusFiltrar por status (AUTHORIZED, REJECTED...)
referenceIdFiltrar por ID de referência
orderByCampo de ordenação (createdAt, updatedAt)
orderasc ou desc
POST/v1/invoices/:id/cancelCancelar NF-e

Solicita o cancelamento de uma NF-e autorizada. Prazo padrão: 24h após autorização.

{ "justificativa": "Venda cancelada a pedido do cliente." }
GET/v1/invoices/:id/xmlBaixar XML da NF-e (ou XML de cancelamento)
GET/v1/invoices/:id/pdfBaixar DANFE em PDF

NFS-e — Endpoints

A API NFS-e usa a mesma estrutura de autenticação. O host base é nfs.dataqube.online.

POST/v1/invoicesEmitir NFS-e
{
  "referenceId": "OS-0042",
  "tomador": {
    "documento": "98765432000100",
    "razaoSocial": "Tomador Exemplo Ltda",
    "email": "financeiro@tomador.com.br",
    "endereco": {
      "cep": "01310-100",
      "logradouro": "Av. Paulista",
      "numero": "200",
      "bairro": "Bela Vista",
      "codigoCidade": "3550308",
      "uf": "SP"
    }
  },
  "servico": {
    "codigoServico": "1.07",
    "descricao": "Desenvolvimento de software sob encomenda",
    "valorServico": 5000.00,
    "aliquotaIss": 2.0,
    "issRetido": false
  }
}

Os demais endpoints (GET /:id, GET /, cancel, xml, pdf) seguem a mesma estrutura da API NF-e.

Eventos (CC-e, Manifestação, Inutilização)

POST/v1/invoices/:id/cceCarta de Correção
{ "correcao": "Onde se lê: Rua X — Leia-se: Rua Y" }
POST/v1/invoices/:id/manifestacaoManifestação do Destinatário
{ "tipoEvento": "210210", "justificativa": "Mercadoria recebida conforme." }
GET/v1/invoices/reconciliacaoLacunas de numeração para inutilizar
// Cruza o último número emitido com as notas registradas.
// A SEFAZ não lista numeração — toda consulta é por chave de acesso,
// e a chave embute um cNF aleatório que não se reconstrói a partir do nNF.
GET /v1/invoices/reconciliacao?modelo=55

{
  "ultimoNumero": 37,
  // Nunca chegaram à SEFAZ — seguras para inutilizar direto
  "faixasParaInutilizar": [{ "nNFIni": 34, "nNFFin": 35 }],
  // Foram transmitidas: podem estar autorizadas sem o protocolo ter voltado.
  // Rode com ?consultarSefaz=true antes de inutilizar estas.
  "precisamConsulta": [{ "nNF": 36, "status": "REJECTED" }],
  // A SEFAZ confirmou como autorizadas — NÃO inutilizar
  "divergencias": []
}
POST/v1/invoices/inutilizacaoInutilização de numeração
{ "modelo": "55", "serie": "1", "nNFIni": 10, "nNFFin": 15, "reason": "Numeros nao utilizados por falha no sistema emissor." }

Webhooks

Configure um endpoint no painel para receber notificações automáticas quando uma nota muda de status. O Dataqube envia um POST para a URL cadastrada com o seguinte payload:

{
  "event": "invoice.authorized",
  "invoiceId": "inv_abc123",
  "referenceId": "PEDIDO-001",
  "status": "AUTHORIZED",
  "chaveAcesso": "35260500000000000000550010000000011000000010",
  "nProt": "135240000000001",
  "timestamp": "2026-05-19T14:30:00.000Z"
}
invoice.authorized

Nota autorizada pela SEFAZ

invoice.rejected

Nota rejeitada

invoice.cancelled

Cancelamento confirmado

invoice.processing

Nota em processamento

invoice.authorized_contingency

NFC-e emitida em modo de contingência off-line, aguardando confirmação da SEFAZ

invoice.contingency_deadline_exceeded

NFC-e em contingência ultrapassou o prazo legal de retransmissão — requer ação manual

Seu endpoint deve responder com HTTP 200 em até 5 segundos. Em caso de falha, o Dataqube tenta reenviar até 3 vezes com backoff exponencial.

Erros

A API usa códigos HTTP padrão. O corpo do erro sempre retorna JSON com message e opcionalmente code.

CódigoSignificado
200Sucesso — GET com dados retornados
202Aceito — nota enviada para processamento
400Requisição inválida — verifique os campos
401Não autorizado — API Key inválida ou ausente
403Sem permissão — operação não permitida
404Não encontrado — recurso inexistente
422Erro de validação — dados fiscais inconsistentes
429Rate limit atingido — aguarde antes de tentar
500Erro interno — tente novamente em instantes

Rate Limits

Os limites são aplicados por API Key. Quando atingido, a API retorna 429 Too Many Requests com o cabeçalho Retry-After indicando quantos segundos aguardar.

Trial

30 req/min

Starter

60 req/min

Professional

120 req/min

Pronto para integrar?

Crie sua conta gratuitamente e gere sua API Key em minutos.