Pular para o conteúdo principal

Notas fiscais de serviço (NFS-e)

$nfe->serviceInvoices é o recurso canônico de emissão da plataforma. Ele fala com o host api.nfe.io no caminho /v1 e cobre todo o ciclo de vida da NFS-e: emissão assíncrona, listagem paginada, consulta, cancelamento, envio por e-mail e download de PDF/XML.

A emissão segue o contrato 202 discriminado: create() devolve um union type nativo, e você acompanha o processamento com getStatus() até um estado terminal. Não existe createAndWait() nem createBatch() na v3.0.

Host e versão

Todas as URLs efetivas ficam sob https://api.nfe.io/v1/.... Este é o único recurso de nota que usa o host api.nfe.io; os demais usam api.nfse.io.

Métodos

MétodoDescriçãoRetorno
create($companyId, $data)Emite a NFS-e.ServiceInvoicePending|ServiceInvoiceIssued
list($companyId, $options = [])Lista paginada (page-style, pageIndex 1-based) com filtros de data.ListResponse
retrieve($companyId, $invoiceId)Consulta uma NFS-e por id.ServiceInvoice
cancel($companyId, $invoiceId)Cancela (síncrono) e devolve o modelo atualizado.ServiceInvoice
sendEmail($companyId, $invoiceId)Reenvia a nota por e-mail ao tomador.array (típico: {sent, message})
downloadPdf($companyId, $invoiceId)PDF da nota.string (bytes crus)
downloadXml($companyId, $invoiceId)XML da nota.string (bytes crus)
getStatus($companyId, $invoiceId)Snapshot leve de status.array (flowStatus, flowMessage, …)

As opções de list() incluem pageIndex (1-based), pageCount, issuedBegin e issuedEnd. Todo método aceita ainda um Nfe\Http\RequestOptions opcional como último argumento.

Validação fail-fast

Todo método valida companyId e invoiceId antes de qualquer chamada HTTP. Ids vazios ou em branco lançam Nfe\Exception\InvalidRequestException sem tráfego de rede.

Emitir uma NFS-e e tratar o retorno discriminado

create() devolve ServiceInvoicePending (HTTP 202, enfileirada) ou ServiceInvoiceIssued (HTTP 201, já materializada). Distinga com instanceof contra as interfaces marcadoras Nfe\Response\Pending / Nfe\Response\Issued.

use Nfe\Response\Pending;

$result = $nfe->serviceInvoices->create('55df4dc6b6cd9007e4f13ee8', [
'cityServiceCode' => '2690',
'description' => 'Manutenção e suporte técnico',
'servicesAmount' => 100.0,
'borrower' => [
'federalTaxNumber' => 191,
'name' => 'Banco do Brasil SA',
],
]);

if ($result instanceof Pending) {
$result->invoiceId(); // id para reconsultar enquanto processa
$result->location(); // caminho do header Location
} else {
$result->resource(); // Nfe\ServiceInvoice já emitida
}

Acompanhar até um estado terminal (polling)

Use getStatus() — endpoint leve que devolve flowStatus/flowMessage — com Nfe\Util\FlowStatus::isTerminal():

use Nfe\Util\FlowStatus;

$companyId = '55df4dc6b6cd9007e4f13ee8';
$invoiceId = $result instanceof Pending ? $result->invoiceId() : $result->resource()->id;

do {
sleep(3);
$flow = $nfe->serviceInvoices->getStatus($companyId, $invoiceId)['flowStatus'] ?? '';
} while (!FlowStatus::isTerminal($flow));

if ($flow === 'Issued') {
$invoice = $nfe->serviceInvoices->retrieve($companyId, $invoiceId);
}
Terminal ≠ sucesso

isTerminal() também é true para IssueFailed/CancelFailed. Compare o status concreto. Veja Emissão assíncrona e polling.

Baixar PDF e XML (bytes crus)

Os downloads retornam uma string com os bytes do arquivo — grave com file_put_contents():

file_put_contents('nfse.pdf', $nfe->serviceInvoices->downloadPdf($companyId, $invoiceId));
file_put_contents('nfse.xml', $nfe->serviceInvoices->downloadXml($companyId, $invoiceId));

Cancelar e reenviar por e-mail

$cancelada = $nfe->serviceInvoices->cancel($companyId, $invoiceId);
$cancelada->flowStatus; // "Cancelled"

$envio = $nfe->serviceInvoices->sendEmail($companyId, $invoiceId);
$envio['sent'] ?? null; // true/false

Próximos passos

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.