Pular para o conteúdo principal

Autenticação da DC-e

A DC-e se integra por token Bearer: toda requisição leva Authorization: Bearer <token>. O token é um JWT emitido pelo provedor de identidade da NFE.io, a partir de uma credencial da sua assinatura.

As bibliotecas oficiais não atendem a DC-e

As bibliotecas oficiais (Node.js, PHP, Ruby) autenticam de outra forma e não servem para a DC-e. A integração é feita direto na API, com o token descrito nesta página — a coleção Postman ajuda a começar.

O token​

Emissorhttps://idx.nfe.io/realms/nfeio
Audiência e escoposjá vêm configurados na credencial — você não precisa pedir escopo
Validade20 minutos (expires_in)
Assinatura do tokenclaim client_sub — é o valor que vai em {subscriptionId} na URL
Tokens de API criados no painel ainda não servem para a DC-e

O painel tem um catálogo de tokens de API, mas a DC-e ainda não os aceita. Use o token obtido como descrito abaixo.

Como obter o token​

São dois passos: pedir a credencial uma vez, e trocá-la por token sempre que precisar.

1. Peça a credencial ao suporte​

A credencial é um par client_id e client_secret vinculado à sua assinatura. Hoje ela é provisionada pela equipe da NFE.io: fale com o suporte informando a assinatura que vai integrar com a DC-e.

Guarde o client_secret como segredo — em cofre ou variável de ambiente, nunca no código-fonte nem no navegador. Quem tem o par emite documento fiscal em nome da assinatura.

2. Troque a credencial por um token​

Faça um POST no endpoint de token, com corpo application/x-www-form-urlencoded e o fluxo client_credentials:

curl -X POST "https://idx.nfe.io/realms/nfeio/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=SEU_CLIENT_ID" \
-d "client_secret=SEU_CLIENT_SECRET"

A resposta segue o padrão OAuth 2.0:

{
"access_token": "eyJhbGciOi...",
"expires_in": 1200,
"token_type": "Bearer"
}

Use o access_token no cabeçalho de toda requisição à DC-e:

curl "https://api.nfe.io/v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations" \
-H "Authorization: Bearer <access_token>"

Validade e renovação​

O token vale 20 minutos — o expires_in da resposta diz quanto, em segundos. Não há renovação: quando ele expira, peça um token novo com a mesma credencial. Uma requisição com token vencido responde 401; trate o 401 pedindo um token novo e repetindo a chamada uma vez.

Para não pedir um token a cada requisição, guarde o token em memória e reaproveite-o até perto do fim da validade.

Erros comuns na obtenção​

Resposta do endpoint de tokenO que houve
401 com "error": "invalid_client"client_id ou client_secret errado. Confira o par recebido do suporte
400 com "error": "unsupported_grant_type"grant_type ausente ou diferente de client_credentials, ou corpo enviado como JSON em vez de form-urlencoded

Acesso ao produto​

Um token válido não basta para emitir. O acesso à DC-e depende de duas condições comerciais, e cada uma tem a sua recusa, em application/problem+json:

RecusatypeO que fazer
403https://docs.nfe.io/errors/dce/product-not-contractedA DC-e não está contratada na assinatura. Fale com o time comercial
403https://docs.nfe.io/errors/dce/issuance-not-releasedA emissão de DC-e é liberada por empresa, e esta empresa ainda não está liberada neste ambiente. Fale com o suporte

Leia o type, não o texto da mensagem, para distinguir um caso do outro.

O endereço​

A DC-e responde em https://api.nfe.io, o host compartilhado da plataforma — ela se distingue pelo caminho, não pelo host. Há um host só, para os dois ambientes da SEFAZ.

O ambiente vem do cadastro da empresa, não do host nem da assinatura. O environment que você envia na emissão (1 produção, 2 homologação) tem de coincidir com o ambiente da DC-e cadastrado na empresa; divergente, a resposta é 422 com a regra B10-10. Para homologar sua integração, use uma empresa em homologação e envie environment: 2 — no mesmo https://api.nfe.io.

Assinatura e contribuinte: os dois vão na URL​

Toda rota da DC-e carrega a assinatura e o contribuinte emitente, nesta ordem e em minúsculas:

/v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations…

O isolamento dos documentos é pela assinatura do caminho. São duas dimensões distintas: a assinatura diz de quem são os documentos; o taxpayerId diz qual contribuinte emite (a empresa cujo certificado assina o documento). Nenhum cabeçalho de assinatura é lido.

taxpayers na URL, companyId no corpo

Dentro da plataforma o contribuinte se chama empresa. Por isso o campo companyId que a consulta em lista devolve carrega exatamente o valor que você pôs em {taxpayerId}.

Parte do caminhoRegraFora da regra
{subscriptionId}A assinatura do próprio token (claim client_sub). Aceita com ou sem o prefixo sub_403, type https://docs.nfe.io/errors/dce/subscription-scope-undetermined
{taxpayerId}Uma empresa cadastrada nessa assinatura404, type https://docs.nfe.io/errors/dce/company-not-in-subscription — em todas as rotas, leitura ou escrita

Veja também​

NFE.io

A NFE.io é uma empresa de tecnologia que fornece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas. Com suas ferramentas, as empresas podem economizar tempo e reduzir erros, aumentando a eficiência e precisão do processo de emissão de notas fiscais.

Um dos principais cases de sucesso da NFE.io é a implementação da solução na empresa de transporte Rodonaves. Com a automatização da emissão e gestão de notas fiscais eletrônicas, a Rodonaves conseguiu reduzir em até 80% o tempo gasto nesse processo, o que se traduziu em uma significativa melhoria na eficiência operacional. Além disso, a empresa também conseguiu eliminar erros e atrasos na emissão de notas fiscais, o que melhorou a relação com seus clientes e aumentou a confiança dos órgãos fiscais.

Outro exemplo é a implementação da NFE.io na empresa de comércio eletrônico, a Loja Integrada. Com a automatização da emissão de notas fiscais, a Loja Integrada conseguiu aumentar a velocidade de emissão de notas em até 10 vezes, o que permitiu que a empresa atendesse a uma maior quantidade de clientes e, consequentemente, aumentar as suas vendas.

Além desses exemplos, a NFE.io também tem outros cases de sucesso com empresas de setores como indústria, construção, varejo e serviços, mostrando a versatilidade e eficácia da sua solução.

Em resumo, a NFE.io é uma empresa de tecnologia que oferece soluções para automatizar e simplificar a emissão e gestão de notas fiscais eletrônicas, ajudando as empresas a economizar tempo e reduzir erros, melhorando a eficiência e precisão do processo. Com cases de sucesso em diferentes setores, a NFE.io tem se destacado como uma empresa líder em automação fiscal.