DACE e XML da DC-e
A DC-e tem dois artefatos de download, cada um com sua própria rota. A consulta não traz URL de download — ela diz, no objeto artifacts, se cada arquivo já existe.
Já dá para baixar? Veja artifacts
O GET {id} traz sempre o objeto artifacts:
"artifacts": { "hasFull": true, "hasSummary": true, "hasXml": true }
| Campo | Arquivo | Rota |
|---|---|---|
hasFull | DACE completa (PDF) | GET {id}/pdf ou GET {id}/pdf?layout=full |
hasSummary | DACE resumida (PDF) | GET {id}/pdf?layout=summary |
hasXml | XML autorizado | GET {id}/xml |
Consulte artifacts antes de chamar a rota de download. Um 404 nas rotas de download não distingue "documento inexistente" de "arquivo ainda não gerado", e o status sozinho também não responde: um documento Authorized pode ainda não ter os PDFs, porque a DACE é gerada depois da autorização. Quando o campo correspondente é true, o download está disponível.
Baixar a DACE (PDF)
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/pdf?layout=full
DACE é o documento auxiliar da DC-e — representação visual, não o documento fiscal em si. Dois layouts:
layout | Conteúdo |
|---|---|
full (padrão) | Completo |
summary | Resumido |
Qualquer valor diferente de summary devolve o layout completo.
Em homologação, a DACE sai com a tarja "EMITIDO EM HOMOLOGAÇÃO — SEM VALOR FISCAL".
Baixar o XML autorizado
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/xml
É o arquivo a guardar para fins fiscais — o XML é o documento; o PDF da DACE é só representação.
Os dois respondem com redirecionamento temporário
302 Found
Location: https://<url-pré-assinada>
Por padrão, a resposta de ambos os endpoints é um 302 para uma URL temporária, válida por 5 minutos — use-a para baixar na hora, não a guarde nem a repasse. A maioria dos clientes HTTP segue o redirecionamento sozinha; se o seu não segue, leia o cabeçalho Location.
Prefere JSON? ?format=uri
GET /v1/subscriptions/{subscriptionId}/taxpayers/{taxpayerId}/contentdeclarations/{id}/pdf?format=uri&layout=full
{
"uri": "https://<url-pré-assinada>"
}
É o mesmo corpo que as outras APIs da NFE.io devolvem para download, e o caminho certo para um navegador ou para quem não quer seguir redirecionamento. format=redirect é o padrão e equivale a omitir o parâmetro; qualquer outro valor responde 400. layout continua valendo junto de format=uri.
Diferente de outros documentos da NFE.io, a consulta de uma DC-e não traz nenhum campo de URL do PDF ou XML. Chame GET {id}/pdf ou GET {id}/xml diretamente, usando o id que você já tem.
Erros
| Código | O que significa |
|---|---|
400 | format com valor que não é redirect nem uri |
401 | Token ausente, inválido ou expirado — peça um novo token (veja Autenticação) |
403 | A assinatura da URL não é a do token nem uma que o usuário acessa (type termina em subscription-scope-undetermined) |
404 | Empresa da URL inexistente ou fora da assinatura (company-not-in-subscription), documento inexistente nessa empresa, ou o arquivo ainda não foi gerado — confira artifacts no GET {id} |