API de Notas Fiscais (NF-e) — Tray
Documentação oficial: https://developers.tray.com.br/#api-de-nota-fiscal
Endpoints
| Método |
Endpoint |
Descrição |
| GET |
/invoices |
Listagem de notas fiscais com paginação e filtros |
| GET |
/invoices/:id |
Consultar nota fiscal por ID |
| GET |
/orders/:order_id/invoices |
Consultar notas fiscais de um pedido |
| POST |
/orders/:order_id/invoices |
Cadastrar nota fiscal para um pedido |
| PUT |
/invoices/:id |
Atualizar dados da nota fiscal |
Autenticação: ?access_token={token} em todas as chamadas.
Campos da Nota Fiscal
| Campo |
Tipo |
Obrigatório |
Descrição |
id |
number |
— |
ID da nota fiscal (retornado pela API) |
order_id |
number |
— |
ID do pedido associado (definido na URL no POST) |
number |
string |
Sim |
Número da nota fiscal |
series |
string |
Sim |
Série da nota fiscal (ex: "1", "001") |
issue_date |
date |
Sim |
Data de emissão (formato: YYYY-MM-DD) |
key |
string |
Sim |
Chave de acesso da NF-e (44 dígitos) |
cfop |
string |
Não |
Código Fiscal de Operações e Prestações (ex: "5102", "6102") |
link |
string |
Não |
URL do DANFE (PDF da nota fiscal) |
total_amount |
decimal |
Não |
Valor total da nota fiscal |
created_at |
datetime |
— |
Data de criação do registro |
updated_at |
datetime |
— |
Data da última atualização |
Paginação
| Parâmetro |
Descrição |
limit |
Itens por página (máximo 50, padrão 30) |
page |
Número da página |
Resposta inclui: total, page, offset, limit, maxLimit
Filtros de Listagem
| Filtro |
Tipo |
Descrição |
order_id |
number |
Filtrar por ID do pedido |
number |
string |
Filtrar por número da NF |
issue_date |
date |
Filtrar por data de emissão |
created_at |
date |
Filtrar por data de criação |
Corpo da Requisição — Criar Nota Fiscal (POST)
{
"Invoice": {
"number": "000123456",
"series": "1",
"issue_date": "2026-03-21",
"key": "35260312345678000100550010001234561234567890",
"cfop": "5102",
"link": "https://exemplo.com/danfe/123456.pdf",
"total_amount": "299.90"
}
}
Corpo da Requisição — Atualizar Nota Fiscal (PUT)
{
"Invoice": {
"link": "https://exemplo.com/danfe/123456-v2.pdf",
"total_amount": "310.50"
}
}
Respostas
| Operação |
Código |
Mensagem |
| Criação |
201 |
{"message": "Created", "id": 500, "code": 201} |
| Atualização |
200 |
{"message": "Saved", "id": 500, "code": 200} |
Exemplo de Resposta — Listar Notas Fiscais
{
"paging": {
"total": 150,
"page": 1,
"offset": 0,
"limit": 30,
"maxLimit": 50
},
"Invoices": [
{
"Invoice": {
"id": "500",
"order_id": "1001",
"number": "000123456",
"series": "1",
"issue_date": "2026-03-21",
"key": "35260312345678000100550010001234561234567890",
"cfop": "5102",
"link": "https://exemplo.com/danfe/123456.pdf",
"total_amount": "299.90",
"created_at": "2026-03-21 10:30:00",
"updated_at": "2026-03-21 10:30:00"
}
}
]
}
Exemplo de Resposta — Consultar por Pedido
{
"Invoices": [
{
"Invoice": {
"id": "500",
"order_id": "1001",
"number": "000123456",
"series": "1",
"issue_date": "2026-03-21",
"key": "35260312345678000100550010001234561234567890",
"cfop": "5102",
"link": "https://exemplo.com/danfe/123456.pdf",
"total_amount": "299.90"
}
}
]
}
Chave de Acesso da NF-e
A chave de acesso (key) possui 44 dígitos e contém informações codificadas:
| Posição |
Tamanho |
Descrição |
| 1-2 |
2 |
Código da UF |
| 3-6 |
4 |
Ano e mês de emissão (AAMM) |
| 7-20 |
14 |
CNPJ do emitente |
| 21-22 |
2 |
Modelo do documento (55 = NF-e) |
| 23-25 |
3 |
Série |
| 26-34 |
9 |
Número da NF |
| 35-43 |
9 |
Código numérico |
| 44 |
1 |
Dígito verificador |
CFOP Comuns no E-commerce
| CFOP |
Descrição |
5102 |
Venda de mercadoria (operação interna — mesmo estado) |
6102 |
Venda de mercadoria (operação interestadual) |
5405 |
Venda de mercadoria com ST (substituição tributária) — mesmo estado |
6404 |
Venda de mercadoria com ST — interestadual |
Boas Práticas
- Chave de acesso válida — a chave deve ter exatamente 44 dígitos numéricos; valide antes de enviar
- Link do DANFE — forneça uma URL pública e acessível para o PDF do DANFE; o cliente pode consultar
- Uma NF por pedido — na maioria dos casos, cada pedido possui uma nota fiscal; porém, pedidos com produtos de CDs diferentes podem ter múltiplas NFs
- Data de emissão — use a data real de emissão da NF no formato YYYY-MM-DD
- Integração com ERP — automatize o envio de NFs via integração com seu ERP após a emissão fiscal
- CFOP correto — use o CFOP adequado para a operação (venda interna vs. interestadual)
- Série consistente — mantenha a série da NF consistente com o emissor fiscal configurado
- Recursos relacionados — consulte o skill
tray-pedidos para gerenciar pedidos associados
Como Usar no Claude Code
Exemplos de Prompt
- "registra a NF-e do pedido 1001 com chave de acesso e link do DANFE"
- "lista todas as notas fiscais emitidas no mês de março"
- "consulta as notas fiscais do pedido ID 2050"
- "implementa a integração de envio automático de NF-e após emissão no ERP"
O que o Claude faz
- Gera o código de registro da NF-e com wrapper
Invoice e todos os campos obrigatórios
- Valida o formato da chave de acesso (44 dígitos) antes de montar a chamada
- Usa o endpoint correto
POST /orders/:order_id/invoices com o order_id na URL
- Inclui filtros de data e
order_id para listagens
O que você recebe
- Código de registro de NF-e com todos os campos (número, série, chave, CFOP, DANFE)
- Validação da chave de acesso de 44 dígitos
- Código de consulta por pedido via
GET /orders/:order_id/invoices
- Exemplo de integração com fluxo de ERP
Pré-requisitos
access_token configurado
order_id do pedido já existente na Tray
- Dados da NF-e emitida pelo sistema fiscal (número, série, chave de acesso)