Emitir NF-e
Emite a nota fiscal de um pedido, a partir do próprio pedido ou com os dados informados à mão.
Há duas formas. A simplificada (/issue) só precisa do id do pedido e monta tudo a partir dele. A manual (POST /nfe) recebe todos os dados e serve quando o pedido não carrega o necessário. As duas devolvem a nota como processando.
Emitir a partir do pedido
Se o pedido já tem nota, devolve a existente (200) em vez de criar outra. Caso contrário monta a emissão com os itens, o endereço e o documento do cliente do pedido e responde 201.
/api/v1/admin/nfe/issueAdminEmite a NF-e de um pedido
Corpo da requisição
order_iduuidobrigatórioPedido a faturar.
vendor_iduuidEmite só a nota do sub-pedido deste seller.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/nfe/issue" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_id": "608a3291-6064-44a2-b352-5816d0471469"
}'Resposta
201Nota criada
json
{
"id": "b7a76302-e926-4988-a015-789e8f225c60",
"order_id": "608a3291-6064-44a2-b352-5816d0471469",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"ref": "VENDDOR_608A3291",
"status": "processando",
"serie": "1",
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:00Z"
}200Nota já existente
json
{
"id": "b7a76302-e926-4988-a015-789e8f225c60",
"order_id": "608a3291-6064-44a2-b352-5816d0471469",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"ref": "VENDDOR_608A3291",
"status": "autorizado",
"serie": "1",
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:00Z",
"chave_nfe": "35261012345678000199550010000001241234567891",
"numero": "124",
"xml_url": "/files/nfe/124.xml",
"danfe_url": "/files/nfe/124.pdf",
"issued_at": "2026-10-11T14:00:20Z",
"items": [
{
"id": "1c2d3e4f-5a6b-4c7d-8e9f-0a1b2c3d4e5f",
"nfe_id": "b7a76302-e926-4988-a015-789e8f225c60",
"description": "Camiseta Básica Preta M",
"ncm_code": "61091000",
"cfop_code": "5102",
"quantity": 2,
"unit_value": 4990,
"total_value": 9980,
"icms_base": 9980,
"icms_rate": 1800,
"icms_value": 1796,
"icms_cst": "00",
"icms_csosn": "",
"ipi_rate": 0,
"ipi_value": 0,
"ipi_cst": "",
"pis_rate": 165,
"pis_value": 165,
"pis_cst": "01",
"cofins_rate": 760,
"cofins_value": 758,
"cofins_cst": "01",
"created_at": "2026-10-11T14:00:00Z"
}
]
}Campos da resposta
iduuidId interno da nota.
order_iduuidPedido.
vendor_iduuidSeller da nota; ausente na nota do marketplace.
refstringReferência única enviada à FocusNFe.
statusstringprocessandoautorizadoerrodenegadocanceladoprocessando, autorizado, erro, denegado ou cancelado.chave_nfestringChave de acesso de 44 dígitos. Só após autorizar.
numerostringNúmero da nota na série.
seriestringSérie.
xml_urlstringCaminho do XML na FocusNFe. Só após autorizar.
danfe_urlstringCaminho do DANFE. Só após autorizar.
error_msgstringCódigos de rejeição da SEFAZ concatenados. Só em
erro.error_messagestringMotivo legível da rejeição. Só em
erro.cancel_reasonstringJustificativa do cancelamento.
canceled_atstringQuando foi cancelada (RFC 3339).
issued_atstringQuando foi autorizada (RFC 3339).
created_atstringCriação.
updated_atstringÚltima atualização (webhook ou consulta).
itemsarrayItens com a tabela de impostos (
ncm_code, cfop_code, quantity, unit_value, total_value, icms_*, ipi_*, pis_*, cofins_*). Valores em centavos, alíquotas em pontos-base. Só no detalhe (GET por id).Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | order_id ausente. | {"error":"order_id is required"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 404 | Pedido inexistente. | {"error":"order not found"} |
| 422 | Pedido não faturável: faturado_leg_not_invoiceable, customer_document_missing, order_has_no_items, fractional_quantity_not_supported; ou credencial recusada. | {"error":"customer_document_missing","detail":"..."} |
| 500 | Falha ao emitir (a mensagem do provedor vai em detail). | {"error":"failed to emit NF-e","detail":"..."} |
Emitir com dados manuais
/api/v1/admin/nfeAdminEmite uma NF-e com dados manuais
Corpo da requisição
order_iduuidobrigatórioPedido.
vendor_iduuidSeller, para nota de sub-pedido.
customer_namestringobrigatórioNome do destinatário (máx. 60 caracteres na SEFAZ).
customer_cpfstringCPF (11 dígitos). Envie CPF ou CNPJ.
customer_cnpjstringCNPJ (14 caracteres, validado).
customer_emailstringE-mail para envio da nota.
cepstringCEP, 8 dígitos.
streetstringLogradouro.
numberstringNúmero.
complementstringComplemento.
neighborhoodstringBairro.
citystringMunicípio.
statestringUF.
total_amountintegerobrigatórioTotal em centavos, positivo, com frete.
freight_amountintegerFrete em centavos.
discount_amountintegerDesconto em centavos.
icms_destinatariointeger1291 contribuinte, 2 isento, 9 não contribuinte. Padrão: 9 para CPF e 1 para CNPJ.customer_inscricao_estadualstringInscrição estadual, obrigatória com
icms_destinatario 1.natureza_operacaostringNatureza da operação; padrão da loja se vazio.
itemsarrayobrigatórioPelo menos um item.
product_iduuidProduto do catálogo (opcional).
product_namestringobrigatórioDescrição na nota (máx. 120).
ncmstringNCM, 8 dígitos. Padrão
84714900: confira, NCM errado causa rejeição.cfopstringCFOP. Padrão
5102 (dentro do estado); use 6102 entre estados.quantityintegerobrigatórioQuantidade inteira.
unit_priceintegerobrigatórioPreço unitário em centavos.
total_priceintegerobrigatórioTotal da linha em centavos.
csosnstringCSOSN do Simples Nacional. Padrão
400.icms_cststringCST de ICMS no Regime Normal. Padrão
00.icms_rateintegerAlíquota ICMS em pontos-base.
ipi_rateintegerAlíquota IPI em pontos-base.
pis_rateintegerAlíquota PIS em pontos-base.
cofins_rateintegerAlíquota COFINS em pontos-base.
Exemplo de requisição
bash
curl -X POST "$BASE_URL/api/v1/admin/nfe" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"order_id": "608a3291-6064-44a2-b352-5816d0471469",
"customer_name": "Maria Souza",
"customer_cpf": "123.456.789-09",
"customer_email": "maria.souza@example.com",
"cep": "01310100",
"street": "Avenida Paulista",
"number": "1000",
"neighborhood": "Bela Vista",
"city": "São Paulo",
"state": "SP",
"total_amount": 10980,
"freight_amount": 1000,
"items": [
{
"product_name": "Camiseta Básica Preta M",
"ncm": "61091000",
"cfop": "5102",
"quantity": 2,
"unit_price": 4990,
"total_price": 9980,
"csosn": "102"
}
]
}'Resposta
201Nota enviada à SEFAZ
json
{
"id": "b7a76302-e926-4988-a015-789e8f225c60",
"order_id": "608a3291-6064-44a2-b352-5816d0471469",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"ref": "VENDDOR_608A3291",
"status": "processando",
"serie": "1",
"created_at": "2026-10-11T14:00:00Z",
"updated_at": "2026-10-11T14:00:00Z"
}Campos da resposta
iduuidId interno da nota.
order_iduuidPedido.
vendor_iduuidSeller da nota; ausente na nota do marketplace.
refstringReferência única enviada à FocusNFe.
statusstringprocessandoautorizadoerrodenegadocanceladoprocessando, autorizado, erro, denegado ou cancelado.chave_nfestringChave de acesso de 44 dígitos. Só após autorizar.
numerostringNúmero da nota na série.
seriestringSérie.
xml_urlstringCaminho do XML na FocusNFe. Só após autorizar.
danfe_urlstringCaminho do DANFE. Só após autorizar.
error_msgstringCódigos de rejeição da SEFAZ concatenados. Só em
erro.error_messagestringMotivo legível da rejeição. Só em
erro.cancel_reasonstringJustificativa do cancelamento.
canceled_atstringQuando foi cancelada (RFC 3339).
issued_atstringQuando foi autorizada (RFC 3339).
created_atstringCriação.
updated_atstringÚltima atualização (webhook ou consulta).
itemsarrayItens com a tabela de impostos (
ncm_code, cfop_code, quantity, unit_value, total_value, icms_*, ipi_*, pis_*, cofins_*). Valores em centavos, alíquotas em pontos-base. Só no detalhe (GET por id).Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Campo obrigatório ausente (order_id, customer_name, CPF ou CNPJ), documento inválido, total_amount não positivo ou lista de itens vazia. | {"error":"customer_cpf or customer_cnpj is required"} |
| 401 | Sem token ou token inválido. | {"error":"missing authorization header"} |
| 403 | O usuário não tem manage_nfe nem manage_settings. | {"error":"insufficient privileges","privilege_required_any":["manage_nfe","manage_settings"]} |
| 403 | O módulo focusnfe está desligado na loja. | {"error":"module_disabled","module":"focusnfe"} |
| 422 | Credencial fiscal recusada pela FocusNFe. | {"error":"fiscal provider rejected the credentials","detail":"..."} |
| 423 | O mês contábil do pedido está fechado. | {"error":"period_closed","competence":"2026-09"} |
| 500 | Falha ao emitir (a mensagem do provedor vai em detail). | {"error":"failed to emit NF-e","detail":"..."} |