Só o primeiro passo depende de nós.
A API entra em parte dos planos. O suporte confirma o seu e libera a empresa.
Authorization: Bearer ext_sk_… e um POST em /v1/nfse. Comece pela chave de teste — o código é o mesmo.
| POST | /v1/nfse | Emite uma NFS-e. Responde 202 com Location e Retry-After. Chave de teste responde livemode: false. |
| GET | /v1/nfse?reference= | Busca a nota pela SUA referência. A query é obrigatória — não é listagem. Devolve um envelope de lista com no máximo uma nota; sem resultado, 200 com data vazio. |
| GET | /v1/nfse/{id} | Consulta a nota inteira, incluindo o erro. |
| GET | /v1/activities | Lista as atividades em que a empresa pode emitir — o cnae e o service_code que o POST aceita. |
| POST | /v1/nfse/{id}/cancel | Cancela a nota, dentro do mês da emissão. Responde 202 — acompanhe o objeto cancellation. É irreversível: não repita o POST. |
| GET | /v1/nfse/{id}/pdf | Baixa o PDF da nota (DANFSe). |
| GET | /v1/nfse/{id}/xml | Baixa o XML autorizado. |
Gerados do código a cada montagem, sem chave para ler. Aponte o seu agente ou o gerador de cliente para eles, não para esta página.
amount_in_cents e description. Competência, tributação, certificado, XML assinado e PDF da nota ficam fora do seu backend — é o mesmo pipeline que já emite as suas notas.
A Ext resolve o que a nota declara
Tributação pelo CNAE
O código de tributação da nota sai do CNAE — o principal da empresa, ou o que você mandar em cnae.
Alíquota calculada
A efetiva do Simples Nacional, pelo faturamento dos últimos 12 meses. Optante não destaca ISS na nota: ele é apurado no imposto mensal.
Município pelo cadastro
Cidade e UF viram código IBGE contra a tabela oficial dos 5.571 municípios.
Tomador pelo CNPJ
Mande só o documento — o nome sai do cadastro. Ou omita customer: sai nota sem destinatário.
A DPS é montada, assinada e transmitida
Certificado no cofre
O e-CNPJ assina o XML e faz o TLS mútuo com o SEFIN. Sem upload, sem senha no seu código.
XML assinado
DPS 1.01 na ordem do XSD, assinada com XMLDSig/RSA-SHA256 e transmitida ao Emissor Nacional.
Sequencial sem colisão
O número da DPS é reservado atomicamente por empresa.
O que a nota disponibiliza
PDF da nota (DANFSe)
Gerado do XML autorizado, com o QR code oficial. Vem como bytes na resposta, não como link.
XML autorizado e access_key
Os dois saem pela API assim que a nota chega a issued.
A mesma nota do painel
A mesma entidade da tela: aparece na sua lista e aceita cancelar, substituir e baixar. A de teste também, marcada e com prazo, em coleção separada — fora de faturamento e imposto.
/v1/mcp é um servidor MCP: as operações desta página publicadas como ferramentas. A chave é a que você já tem, e o catálogo sai do mesmo contrato — rota nova na API vira ferramenta sem release do seu lado.
issue_nfse
Emite a nota. Devolve o mesmo 202 do POST — o agente consulta antes de anunciar que saiu.
get_nfse
Consulta a nota inteira pelo id, incluindo o erro quando houver.
find_nfse_by_reference
Reencontra a nota pela sua referência, sem guardar o id da Ext.
cancel_nfse
Cancela a nota, dentro do mês da emissão. É irreversível.
list_activities
Lista as atividades em que a empresa pode emitir.
claude mcp add --transport http --scope user ext \
https://api.extcontabilidade.com.br/v1/mcp \
--header "Authorization: Bearer SUA_CHAVE"Roda no terminal. Com --scope user o conector vale em qualquer diretório, não só no atual.
Em clientes que aceitam header de autenticação — os cinco das abas acima. Claude na web, no celular e o ChatGPT só instalam conector por OAuth, que ainda não publicamos: até lá, a conexão é local.
Nenhuma delas se desfaz com um retry.
Documento fiscal já no primeiro POST, sem confirmação e sem desfazer. Integre com ext_sk_test_ (mesmo código, livemode: false) e vá a produção trocando a variável de ambiente.
Competência é o mês fiscal da nota, e você não a envia: é a data da chamada. Não há emissão retroativa — mês fechado obrigaria a retificar a declaração daquele mês, e o SEFIN rebaixa em silêncio competência posterior à emissão.
A janela é o mês-calendário da emissão: nota de 31/07 percebida em 01/08 já está fora. Dentro dela, POST /v1/nfse/{id}/cancel; fora dela, é o suporte. Substituir continua fora do v1 — só pelo painel ou pelo suporte.
O ISS sai sempre como não retido, e o regime vem do cadastro da empresa. Operação com retenção na fonte, ou empresa MEI, não sai representada corretamente.
Serviço prestado ao exterior sai por aqui, mas só quando declarado: customer.type "foreign", com o endereço completo do tomador, a identificação fiscal dele (ou o motivo da ausência) e o valor na moeda do faturamento. Sem isso a nota é tratada como doméstica — e a divergência só aparece na apuração.
Em failed nada foi emitido: corrigir e reemitir é seguro. Em indeterminate pode existir NFS-e autorizada na prefeitura sem registro aqui — nunca reemita automaticamente, porque nota em duplicidade só se desfaz com cancelamento formal, e cancelamento tem prazo.
O suporte é pelos canais que você já usa com a Ext.
O que costuma aparecer antes da primeira chamada — e depois dela.
Sim. A emissão usa o certificado e-CNPJ que a Ext custodia e a habilitação da empresa no Emissor Nacional — os dois só existem para quem já é cliente. Não é um gateway aberto de notas.
A API entra em parte dos planos, e quem confirma e libera a empresa é o suporte. Liberada, você cria e revoga as chaves em Minha conta → API, escolhendo produção (ext_sk_live_) ou teste (ext_sk_test_).
São até cinco chaves ativas por modo, não cinco no total. A chave aparece uma única vez, na criação.
Dá, e é o caminho recomendado: os três arquivos são gerados do próprio código a cada montagem, então não envelhecem como um trecho copiado desta página.
llms.txt traz o resumo na convenção llmstxt.org; llms-full.txt traz campo a campo, operação a operação; openapi.json é o documento OpenAPI 3.1 completo, que também abre em Postman, Insomnia ou num gerador de cliente.
Os três são públicos e não exigem chave para ler.
Não. A emissão pela API é benefício do plano: contabilizada, não cobrada. Nenhuma quota bloqueia emissão — barrar a nota de um serviço prestado atrapalharia uma obrigação sua.
Entra, pelo mesmo caminho de qualquer NFS-e sua — é a mesma nota que a Ext emitiria pela tela. Ela é capturada do ambiente nacional e alimenta a sua apuração de impostos junto com as demais, sem nada a fazer do seu lado.
Pelos canais que você já usa com a Ext. Ao abrir chamado, cite o request_id: ele vem no corpo de toda falha e no header Request-Id das rotas de /v1/nfse, e é o que localiza a requisição exata nos nossos logs.
A referência é aberta, sem cadastro.