Documentação da API

v1.1.0 Atualizado em:

Visão Geral e Primeiros Passos

Bem-vindo à API do Emissor NF-e. Nossa arquitetura RESTful permite que você integre a emissão de documentos fiscais (NF-e, NFC-e, NFS-e) diretamente em sua aplicação de forma transparente e segura.

Pré-requisitos Obrigatórios

Antes de realizar qualquer requisição via API, é necessário realizar a configuração inicial da conta:

  1. Acesse o painel do emissor em emissor.rpvtecnologia.com.br.
  2. Complete 100% do Checklist de Inicialização (dados da empresa, regime tributário, etc).
  3. Acesse o menu > Configurações da API para gerar a sua API Secret.

Somente com o checklist concluído e a credencial gerada, você poderá autenticar suas requisições e usufruir da API tranquilamente.

Autenticação

Nossa API utiliza um modelo seguro de Tokens JWT Temporários (Bearer). Para realizar qualquer operação, você deve primeiro obter um token válido consumindo o endpoint de Autenticação (Login).

Em todas as requisições subsequentes, envie os seguintes cabeçalhos (Headers):

Authorization: Bearer <SEU_TOKEN_TEMPORARIO>
Api-Secret: <SUA_API_SECRET>

Ambientes (Base URL)

A API disponibiliza dois ambientes. Nos endpoints abaixo, substitua {{URL_BASE}} pela URL do ambiente desejado:

// Produção (Validade Jurídica)
URL_BASE: https://api.rpvtecnologia.com.br

// Sandbox (Testes - Sem valor fiscal)
URL_BASE: https://sandbox.rpvtecnologia.com.br

Autenticação

POST {{URL_BASE}}/emissor/auth/

Gerar Token de Acesso

Gera um Token JWT Temporário (válido por 60 minutos) necessário para consumir os endpoints do sistema.

Você deve enviar o usuário e a senha da sua conta.
Atenção: A sua conta já deve possuir uma API Secret gerada no painel (Menu > Configurações da API) para que a requisição seja autorizada.

Headers Obrigatórios:

  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "usuario": "email@suaempresa.com",
  "senha": "sua_senha_de_acesso"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "token": "eyJ0eXAiOiJKV1QiLCJ...",
  "expira_em": 3600,
  "tipo": "Bearer"
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 sucesso Token JWT gerado e retornado.
400 Usuário e senha são obrigatórios Faltou enviar usuário ou senha no JSON.
401 Credenciais inválidas Usuário ou senha incorretos.
403 Você precisa gerar uma API Secret... A integração não foi ativada na Área do Cliente / Emissor.
404 Cliente não encontrado no sistema A conta foi deletada da base principal.

Tomadores

GET {{URL_BASE}}/emissor/tomadores/listar/

Listar Tomadores

Retorna a lista de tomadores já cadastrados na sua conta.
Utilize este endpoint para buscar o id de um cliente e usá-lo no campo id_tomador nas emissões de NF-e e NFS-e, evitando a necessidade de reenviar todos os dados cadastrais (endereço, bairro, etc) a cada nova nota.

Autenticação no GET:

Como esta é uma requisição GET, recomendamos enviar o Token e a Api-Secret através do Cabeçalho (Header) da requisição.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Resposta de Sucesso (200 OK)
{
  "total": 2,
  "tomadores": [
    {
      "id": 105,
      "nome_razao_social": "Empresa Cliente LTDA",
      "cpf_cnpj": "12345678000199"
    },
    {
      "id": 108,
      "nome_razao_social": "Fulano de Tal",
      "cpf_cnpj": "11122233344"
    }
  ]
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 {"total": X, "tomadores": [...]} Listagem realizada com sucesso.
400 Token não enviado (header ou JSON) A credencial Token não foi encontrada na requisição.
400 API Secret não enviada (header ou JSON) A credencial Api-Secret não foi encontrada na requisição.
401 Token ou API Secret inválidos As credenciais informadas não correspondem a nenhum cliente ativo.
405 Apenas GET é permitido Foi utilizado um método HTTP incorreto (ex: POST ou PUT).
500 Erro interno ao validar token Falha na conexão com nossa base de dados durante a autenticação.
500 Erro interno ao buscar tomadores Falha na execução da query de busca dos tomadores.
POST {{URL_BASE}}/emissor/tomadores/cadastrar/

Cadastrar Tomador

Cadastra um novo cliente/tomador na base de dados.
Ao realizar o cadastro, a API retorna o id interno deste tomador, que poderá ser utilizado nas emissões de nota para evitar o preenchimento repetitivo dos dados de endereço e contato.

Exemplo de Requisição (JSON)
{
  "nome_razao_social": "João da Silva LTDA",
  "cpf_cnpj": "12345678000199",
  "email": "joao@email.com",
  "telefone": "11999998888",
  "tipo_pessoa": "J",
  "cep": "01001000",
  "logradouro": "Praça da Sé",
  "numero": "10",
  "complemento": "Sala 5",
  "bairro": "Sé",
  "cidade": "São Paulo",
  "uf": "SP",
  "ibge_cidade": "3550308",
  "inscricao_estadual": "ISENTO",
  "indicador_ie": "9"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "message": "Tomador cadastrado com sucesso.",
  "id": 154
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Tomador cadastrado com sucesso Cadastro realizado. O ID retornado pode ser usado para emitir notas.
400 Campos obrigatórios faltando: [lista] Faltou enviar dados essenciais (Ex: cpf_cnpj, nome, cep, ibge_cidade).
400 JSON inválido O corpo da requisição não está formatado corretamente.
401 Token ou Api-Secret inválidos Credenciais incorretas ou não enviadas no Header/JSON.
405 Apenas o método POST é permitido Foi realizada uma requisição GET, PUT ou DELETE.
500 Erro ao cadastrar tomador Falha interna na base de dados (ex: CPF/CNPJ duplicado ou falha de conexão).

NFC-e (Consumidor)

POST {{URL_BASE}}/emissor/nfce/emitir/

Emitir NFC-e

Endpoint para emissão síncrona de Nota Fiscal de Consumidor Eletrônica (Modelo 65).

Atenção à Estrutura: O payload deve ser enviado sempre como uma Lista (Array) de objetos JSON, mesmo que você esteja emitindo apenas uma nota por vez.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Exemplo de Requisição (JSON)
[
  {
    "natureza": "Venda de mercadoria",
    "presencial": true,
    "consumidorFinal": true,
    
    "emitente": {
      "cpfCnpj": "07945469000142",
      "inscricaoEstadual": "ISENTO"
    },

    "destinatario": {
      "cpfCnpj": "84965231000125",
      "email": "cliente@teste.com",
      "endereco": {
        "cep": "18550015",
        "logradouro": "Rua José Vitiello",
        "numero": "88",
        "bairro": "Centro",
        "codigoCidade": "3507001",
        "descricaoCidade": "Boituva",
        "estado": "SP"
      }
    },

    "itens": [
      {
        "codigo": "2",
        "descricao": "Teclado 70%",
        "ncm": "84716052",
        "cest": "0123456",
        "cfop": "5102",
        "valor": 220.00,
        "valorUnitario": {
          "comercial": 220.00,
          "tributavel": 220.00
        },
        "tributos": {
          "pis": { 
            "cst": "99", 
            "valor": 0, 
            "aliquota": 0,
            "baseCalculo": {
                "valor": 0,
                "quantidade": 0
            }
          },
          "cofins": { 
            "cst": "07", 
            "valor": 0, 
            "aliquota": 0,
            "baseCalculo": {
                "valor": 0
            }
          },
          "icms": { 
            "cst": "00", 
            "origem": "0", 
            "valor": 0, 
            "aliquota": 0,
            "baseCalculo": {
                "valor": 0,
                "quantidade": 0
            }
          }
        }
      }
    ],

    "pagamentos": [
      {
        "meio": "01",
        "valor": 220.00,
        "aVista": true
      }
    ],

    "responsavelTecnico": {
      "nome": "Minha Software House",
      "email": "dev@soft.com",
      "cpfCnpj": "88947125602",
      "telefone": { "ddd": "88", "numero": "88888888" }
    }
  }
]
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "codigo_http": 200,
  "resposta": {
    "mensagem": "NFC-e enviada com sucesso",
    "idNota": "NFCe_6751ad3..."
  }
}

Tabela de Retornos

Status Mensagem de Erro Causa Provável
200 NFC-e enviada com sucesso Nota autorizada pela SEFAZ.
400 JSON inválido O corpo da requisição não é um JSON válido ou está mal formatado.
400 Token ou API Secret ausentes As credenciais não foram encontradas nem no Header e nem no Body JSON.
400 Campos obrigatórios ausentes... Faltam dados essenciais como emitente, destinatario, itens ou pagamentos.
401 Token ou API Secret inválidos As credenciais enviadas não correspondem a nenhum cliente ativo na nossa base de dados.
403 Nenhum certificado ativo encontrado... O cliente não possui um certificado A1 válido, expirou ou não está ativo.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.
POST {{URL_BASE}}/emissor/nfce/consultar/

Consultar NFC-e

Consulta os detalhes e o status atual de uma NFC-e utilizando o ID ou NUMERO da nota.
Utilize este recurso para verificar se uma nota foi autorizada ou rejeitada após o envio.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "idNota": "NFCe_69307838171da"
}
Exemplo de Requisição (JSON)
{
  "numero": "1000013"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "nota": {
    "idIntegracao": "NFCe_69307838171da",
    "numero": "502",
    "valor_total": "150.00",
    "status": "emitida"
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Sucesso Nota encontrada e retornada.
400 Credenciais ausentes Token ou API Secret não informados.
400 idNota é obrigatório O campo idNota não foi enviado no JSON.
401 Token ou Api-Secret inválidos Credenciais incorretas.
403 Esta nota não pertence ao cliente... Tentativa de acessar uma nota de outra empresa/conta.
404 Nota não encontrada O ID informado não existe em nossa base de dados.
405 Apenas POST é permitido Foi utilizado um método HTTP incorreto (ex: GET ou PUT).
POST {{URL_BASE}}/emissor/nfce/cancelar/

Cancelar NFC-e

Solicita o cancelamento de uma nota fiscal de consumidor previamente autorizada.
O sistema realizará uma busca automática pelo número da nota vinculado ao token do cliente para encontrar o registro e processar o cancelamento na SEFAZ.

Regras de Cancelamento:
  • Prazo: Máximo de 30 minutos após a autorização.
  • Justificativa: Obrigatório no mínimo 15 caracteres.
  • Status: A nota não pode estar averbada (circulação de mercadoria iniciada).

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "numero": "1050",
  "justificativa": "Erro operacional na digitação dos valores do item"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "mensagem": "Cancelamento efetuado com sucesso",
  "resposta": {
    "message": "Cancelamento em processamento"
  }
}

Tabela de Retornos

Status Mensagem de Erro Causa Provável
200 Cancelamento efetuado com sucesso O evento de cancelamento foi homologado pela SEFAZ.
400 Requisição inválida... JSON mal formatado ou corpo vazio.
400 Campos obrigatórios faltando O JSON não contém token, numero ou justificativa.
400 A justificativa deve ter no mínimo 15 caracteres O texto enviado em justificativa é muito curto.
400 Esta nota já consta como cancelada Tentativa de cancelar uma nota que já foi cancelada anteriormente.
401 Token ou API Secret inválidos Credenciais incorretas.
404 Nota fiscal número X não encontrada Não existe nota com este número vinculada a este cliente na nossa base de dados.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.

NF-e (Mercantil)

POST {{URL_BASE}}/emissor/nfe/emitir/

Emitir NF-e

Endpoint para emissão de Nota Fiscal Eletrônica (Modelo 55). Utilizada para operações de venda, devolução e transferência entre empresas ou entregas.
A validação dos campos é rigorosa. Certifique-se de enviar os dados tributários (ICMS, PIS, COFINS) e de endereço corretos para evitar rejeição da SEFAZ.

Exemplo de Requisição (JSON)
{
  "id_tomador": 123, 
  
  "emitente": {
    "cpfCnpj": "07945469000142"
  },
  
  "destinatario": {
    "cpfCnpj": "78656454500",
    "endereco": {
      "logradouro": "Rua Exemplo",
      "numero": "100",
      "bairro": "Centro",
      "cep": "12345678",
      "codigoCidade": "3550308",
      "estado": "SP",
      "tipoLogradouro": "Rua"
    }
  },

  "itens": [
    {
      "descricao": "Produto Teste",
      "ncm": "61091000",
      "cfop": "5102",
      "quantidade": 1,
      "valorUnitario": {
        "comercial": 50.00,
        "tributavel": 50.00
      }
    }
  ],

  "pagamentos": [
    {
      "meio": "01",
      "valor": 50.00,
      "aVista": true
    }
  ]
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "codigo_http": 200,
  "resposta": {
    "mensagem": "NF-e enviada com sucesso",
    "idNota": "NFe_6751ad3b..."
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 NF-e enviada com sucesso NF-e enviada com sucesso. Nota autorizada pela SEFAZ.
400 JSON inválido Erro de sintaxe no JSON enviado.
400 Token ou API Secret ausentes Credenciais não enviadas (Header ou Body).
400 Campos obrigatórios ausentes no payload Falta itens ou pagamentos na raiz do JSON.
400 Campo 'itens' deve ser um array Formato incorreto da lista de produtos.
400 O campo 'pagamentos' deve ser um array... Formato incorreto da lista de pagamentos.
400 pagamentos[X].valor é obrigatório Um dos objetos de pagamento está sem o valor definido.
401 Token ou API Secret inválidos Credenciais incorretas ou cliente inativo.
403 Nenhum certificado ativo encontrado... O cliente não possui um certificado A1 válido, expirou ou não está ativo.
500 Erro interno ao validar token Falha na conexão com nossa base de dados.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.
POST {{URL_BASE}}/emissor/nfe/consultar/

Consultar NF-e

Consulta os detalhes e o status atual de uma NF-e utilizando o ID ou NUMERO da nota.
Utilize este recurso para verificar se uma nota foi autorizada, cancelada ou rejeitada após o envio.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "idNota": "NFe_6751ad3b..."
}
Exemplo de Requisição (JSON)
{
  "numero": "1000013"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "nota": {
    "idIntegracao": "NFe_6751ad3b...",
    "numero": "5020",
    "valor_total": "1500.00",
    "status": "emitida"
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Sucesso Nota encontrada e retornada.
400 Credenciais ausentes Token ou API Secret não informados.
400 idNota é obrigatório O campo idNota não foi enviado no JSON.
401 Token ou Api-Secret inválidos Credenciais incorretas.
403 Esta nota não pertence ao cliente... Tentativa de acessar uma nota de outra empresa/conta.
404 Nota não encontrada O ID informado não existe na tabela de NF-e emitidas.
405 Apenas POST é permitido Foi utilizado um método HTTP incorreto (ex: GET ou PUT).
POST {{URL_BASE}}/emissor/nfe/cancelar/

Cancelar NF-e

Solicita o cancelamento de uma NF-e modelo 55.
Informe o número da nota e a justificativa. O sistema localizará o ID interno automaticamente.

Regras de Negócio:
  • Prazo Legal: Geralmente até 24 horas (varia por UF).
  • Justificativa: Mínimo de 15 caracteres.
  • Circulação: A mercadoria não pode ter saído do estabelecimento.
Exemplo de Requisição (JSON)
{
  "numero": "5020",
  "justificativa": "Dados do destinatário preenchidos incorretamente"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "mensagem": "Cancelamento efetuado com sucesso",
  "resposta": {
    "message": "Cancelamento em processamento"
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Cancelamento efetuado com sucesso O evento de cancelamento foi homologado pela SEFAZ.
400 Requisição inválida... JSON mal formatado ou vazio.
400 Token ou API Secret ausentes Credenciais não enviadas.
400 Campos obrigatórios ausentes no payload Falta numero ou justificativa.
400 A justificativa deve ter no mínimo 15 caracteres Texto muito curto.
400 Esta nota já consta como cancelada... Tentativa de cancelar uma nota que já está cancelada no sistema.
401 Token ou API Secret inválidos Credenciais incorretas.
404 Nota fiscal número X não encontrada... O número informado não existe para este cliente no banco.
404 Log de emissão não encontrado... Nota existe, mas não há registro do ID externo (inconsistência de dados).
500 Erro na operação. O JSON de retorno da emissão está corrompido ou ilegível.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.

NFS-e (Serviços)

POST {{URL_BASE}}/emissor/nfse/emitir/

Emitir NFS-e

Endpoint unificado para emissão de Notas de Serviço.
Nossa API abstrai as diferenças técnicas entre as prefeituras. Você envia um JSON padrão e nós convertemos para o layout específico do município do prestador (padrão ABRASF ou proprietário).

Exemplo de Requisição (JSON)
{
  "prestador": {
    "cpfCnpj": "07945469000142",
    "inscricaoMunicipal": "12345678"
  },

  "tomador": {
    "cpfCnpj": "55222111000199",
    "razaoSocial": "Cliente Exemplo LTDA",
    "email": "financeiro@cliente.com",
    "endereco": {
       "cep": "01001000",
       "logradouro": "Praça da Sé",
       "numero": "10",
       "codigoCidade": "3550308"
    }
  },

  "servico": {
    "codigo": "12.24",
    "discriminacao": "Desenvolvimento de software customizado ref. Projeto X",
    "iss": {
      "aliquota": 5.00,
      "retido": false
    },
    "valor": {
      "servico": 1500.00
    }
  }
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "codigo_http": 200,
  "resposta": {
    "mensagem": "NFS-e enviada com sucesso",
    "idNota": "NFSe_6751ad3b..."
  }
}

Tabela de Retornos

Status Mensagem / Erro Descrição / Causa
200 NFS-e enviada com sucesso NFS-e enviada com sucesso. Nota autorizada pela SEFAZ.
400 JSON inválido Corpo da requisição mal formatado.
400 Token ou API Secret ausentes... Credenciais não enviadas (Header ou Body).
400 Campo obrigatório ausente: [campo] Faltam dados raiz como prestador ou servico.
400 Campo obrigatório ausente: prestador.cpfCnpj Falta o documento do prestador.
400 Campo obrigatório ausente em servico... Falta discriminacao ou o valor do serviço em servico.valor.servico.
401 Token ou API Secret inválidos Credenciais incorretas ou cliente inativo.
403 Nenhum certificado ativo encontrado... O cliente não possui um certificado A1 válido ou ele não está ativado no painel.
500 Erro interno ao validar token Falha na conexão com nossa base de dados.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.
POST {{URL_BASE}}/emissor/nfse/consultar/

Consultar NFS-e

Consulta os detalhes e o status atual de uma NFS-e utilizando o ID ou NUMERO da nota.
Utilize este recurso para verificar se uma nota foi autorizada, cancelada ou rejeitada após o envio.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_temporario>
  • Api-Secret Sua chave secreta de validação.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "idNota": "NFSe_6751ad3b..."
}
Exemplo de Requisição (JSON)
{
  "numero": "1000013"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "nota": {
    "idIntegracao": "NFSe_6751ad3b...",
    "numero": "2024",
    "valor": "1500.00",
    "status": "emitida"
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Sucesso Nota encontrada e retornada.
400 Credenciais ausentes Token ou API Secret não informados.
400 idNota é obrigatório O campo idNota não foi enviado no JSON.
401 Token ou Api-Secret inválidos Credenciais incorretas.
403 Esta nota não pertence ao cliente... Tentativa de acessar uma nota de outra empresa/conta.
404 Nota não encontrada O ID informado não existe em nossa base de dados.
405 Apenas POST é permitido Foi utilizado um método HTTP incorreto (ex: GET ou PUT).
POST {{URL_BASE}}/emissor/nfse/cancelar/

Cancelar NFS-e

Solicita o cancelamento da nota de serviço junto à prefeitura.
Informe o número da nota e a justificativa. O sistema localizará o registro interno e comunicará o município.

Atenção:

Diferente da NF-e, o cancelamento de NFS-e nem sempre é instantâneo. Algumas prefeituras exigem análise de um fiscal ou não permitem cancelamento via API se a guia de ISS já tiver sido gerada.

Exemplo de Requisição (JSON)
{
  "numero": "2024",
  "justificativa": "Serviço não prestado devido a desacordo comercial"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "mensagem": "Cancelamento efetuado com sucesso",
  "resposta": {
    "message": "Cancelamento em processamento"
  }
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 Cancelamento efetuado com sucesso O evento de cancelamento foi homologado pela SEFAZ.
400 Requisição inválida... JSON mal formatado ou vazio.
400 Token ou API Secret ausentes Credenciais não enviadas.
400 Campos obrigatórios faltando Falta numero ou justificativa.
400 A justificativa deve ter no mínimo 15 caracteres Texto muito curto.
400 Esta nota já consta como cancelada... Tentativa de cancelar uma nota que já está cancelada no sistema.
401 Token ou API Secret inválidos Credenciais incorretas.
404 Nota fiscal número X não encontrada... O número informado não existe para este cliente no banco.
404 Log de emissão não encontrado... Nota existe, mas não há registro do ID externo (inconsistência).
500 Erro na operação. O JSON de retorno da emissão está corrompido ou ilegível.
500 Falha de comunicação Erro interno ao tentar conectar com o servidor da SEFAZ.

Webhooks

Webhooks são notificações automáticas enviadas pela nossa API para o seu servidor sempre que um evento ocorre (ex: Nota Autorizada, Erro na SEFAZ).
Você pode configurar múltiplas URLs para receber estas notificações simultaneamente.

O que você vai receber?

Sempre que houver uma atualização no status da nota, faremos uma requisição nas URLs cadastradas enviando o seguinte JSON:

Exemplo enviado pela API (JSON)
{
  "id": "NFe_69319a5bcdcbe",
  "emissao": "04/12/2025",
  "status": "CONCLUIDO",
  "emitente": "07945469000142",
  "destinatario": "78656454500",
  "valor": 150.00,
  "numero": "1000013",
  "serie": "1",
  "dataAutorizacao": "04/12/2025",
  "mensagem": "Autorizado o uso da NF-e",
  "pdf": "JVBERi0xLjQKJ...", // Arquivo PDF em Base64
  "xml": "PD94bWwgdmVy..."  // Arquivo XML em Base64
}
GET {{URL_BASE}}/emissor/webhook/consultar/

Consultar Configurações de Webhook

Retorna todas as URLs de webhook configuradas para o cliente autenticado.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_jwt>
  • Api-Secret Sua chave secreta da API.
  • Content-Type application/json
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "cliente": "07945469000142",
  "webhooks": [
    {
      "id": 1,
      "url": "https://sistema.com.br/notas",
      "method": "POST"
    },
    {
      "id": 2,
      "url": "https://erp.com/receber",
      "method": "POST"
    }
  ]
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 sucesso Webhooks encontrados e retornados com sucesso.
401 Credenciais de autenticação ausentes Headers Authorization ou Api-Secret não enviados.
401 Token JWT inválido ou expirado O token enviado expirou ou é inválido.
401 API Secret inválida ou não autorizada A chave enviada não corresponde ao cliente autenticado.
404 Nenhum webhook configurado O cliente ainda não possui webhooks cadastrados.
405 Apenas o método GET é permitido Foi utilizado POST, PUT, DELETE ou outro método não permitido.
413 Payload muito grande O tamanho da requisição excedeu o limite permitido.
429 Muitas consultas Limite de requisições excedido temporariamente.
500 Erro interno ao consultar as configurações de webhook Falha interna inesperada no servidor.
POST {{URL_BASE}}/emissor/webhook/cadastrar/

Cadastrar Webhook

Registra uma nova URL de webhook para receber notificações automáticas de eventos e alterações de status.
Observação: O sistema permite múltiplos webhooks por cliente, desde que a URL não esteja duplicada.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_jwt>
  • Api-Secret Sua chave secreta da API.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "url": "https://seusistema.com.br/callback",
  "method": "POST"
}
Resposta de Sucesso (201 Created)
{
  "status": "sucesso",
  "cliente": "07945469000142",
  "url": "https://seusistema.com.br/callback",
  "method": "POST"
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
201 sucesso Webhook cadastrado com sucesso.
400 O JSON deve conter: url e method O payload enviado está incompleto.
400 Método inválido O campo method deve ser GET, POST, PUT ou PATCH.
400 URL inválida A URL enviada não possui formato válido.
401 Credenciais de autenticação ausentes Headers Authorization ou Api-Secret não enviados.
401 Token JWT inválido ou expirado O token informado expirou ou é inválido.
401 API Secret inválida ou não autorizada A chave enviada não pertence ao cliente autenticado.
405 Apenas o método POST é permitido Foi utilizado GET, PUT, DELETE ou outro método inválido.
409 Esta URL de webhook já está cadastrada A URL informada já existe para este cliente.
413 Payload muito grande O tamanho da requisição excedeu o limite permitido.
429 Limite de requisições excedido Muitas tentativas em curto período de tempo.
500 Erro interno ao cadastrar o webhook Falha interna inesperada no servidor.
PUT {{URL_BASE}}/emissor/webhook/alterar/

Alterar Webhook

Atualiza a URL ou o método HTTP de um webhook já cadastrado.
É necessário informar o ID do webhook que será alterado.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_jwt>
  • Api-Secret Sua chave secreta da API.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "id": 1,
  "url": "https://nova-url.com.br/callback",
  "method": "POST"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "cliente": "07945469000142",
  "url": "https://nova-url.com.br/callback",
  "method": "POST"
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 sucesso Webhook atualizado com sucesso.
400 O JSON deve conter: id, url e method O payload enviado está incompleto.
400 Método inválido O campo method deve ser GET, POST, PUT ou PATCH.
400 URL inválida A URL enviada não possui formato válido.
401 Credenciais de autenticação ausentes Headers Authorization ou Api-Secret não enviados.
401 Token JWT inválido ou expirado O token informado expirou ou é inválido.
401 API Secret inválida ou não autorizada A chave enviada não pertence ao cliente autenticado.
404 Webhook não encontrado O webhook informado não existe ou não pertence ao cliente autenticado.
405 Apenas o método PUT é permitido Foi utilizado GET, POST, DELETE ou outro método inválido.
413 Payload muito grande O tamanho da requisição excedeu o limite permitido.
429 Limite de alterações excedido Muitas alterações realizadas em curto período de tempo.
500 Erro interno ao atualizar as configurações de webhook Falha interna inesperada no servidor.
DELETE {{URL_BASE}}/emissor/webhook/remover/

Remover Webhook

Remove um webhook previamente cadastrado da conta autenticada.
Após a remoção, sua aplicação deixará de receber notificações automáticas relacionadas às notas fiscais.

Headers Obrigatórios:

  • Authorization Bearer <seu_token_jwt>
  • Api-Secret Sua chave secreta da API.
  • Content-Type application/json
Exemplo de Requisição (JSON)
{
  "url": "https://seusistema.com.br/callback"
}
Resposta de Sucesso (200 OK)
{
  "status": "sucesso",
  "cliente": "07945469000142",
  "mensagem": "Webhook removido com sucesso."
}

Tabela de Retornos

Status Mensagem / Erro Causa Provável
200 sucesso Webhook removido com sucesso.
400 Informe a 'url' que deseja remover O campo url não foi enviado no JSON.
401 Credenciais de autenticação ausentes Headers Authorization ou Api-Secret não enviados.
401 Token JWT inválido ou expirado O token informado expirou ou é inválido.
401 API Secret inválida ou não autorizada A chave enviada não pertence ao cliente autenticado.
404 Nenhum webhook encontrado com esta URL Não existe webhook cadastrado com esta URL para o cliente autenticado.
405 Método não permitido. Use DELETE Foi utilizado GET, POST, PUT ou outro método inválido.
413 Payload muito grande O tamanho da requisição excedeu o limite permitido.
429 Muitas tentativas de remoção Muitas solicitações realizadas em curto período de tempo.
500 Erro interno ao tentar remover o webhook Falha interna inesperada no servidor.