TF Fiscal
Documentation

NFC-e

Issue NFC-e

Issues an electronic consumer receipt (model 65) for an in-state sale to the final consumer; asynchronous by default, or synchronous to print at the till.

POST/openapi/v2/empresas/{empresaId}/nfce
Requires the token, timestamp and sign signature headers, see Authentication.

The company must be approved, have a valid certificate and have NFC-e enabled through the emissaoNFeConsumidor block of the registration. The body uses the same field names as NF-e issuance, with the NFC-e restrictions and additions. ambienteEmissao must match the company current environment.

Path parameters

empresaId*
stringIssuing company identifier

* Required field

Request body

id*
stringRequest identifier
ambienteEmissao*
stringIssuing environment
modoResposta
stringResponse mode
consumidorFinal
boolFinal consumer
informacoesAdicionais
stringAdditional information
arrayTaxpayer observations
arrayObservations for the tax authority
arrayAuthorized to download the XML
*
objectOrder and payment
*
required for delivery, above the state identification threshold, or when the consumer asks for CPF on the receipt
objectConsumer
*
required for delivery sales
objectTransport
*
arrayItems

* Required field

200
Async mode: accepted, no body; the result arrives by webhook. Sync mode with a result: the same body as the query, with Autorizada, Negada or ContingenciaPendente (example below).
202
Sync mode with no result within 10 seconds: the same body with AguardandoAutorizacao. The final result arrives by webhook; query with the same id.

ModeUseResponse
Assincrono (default)Batches, delivery ordersHTTP 200 with no body; the result arrives by webhook or through the query
SincronoA till that prints the receipt on the spotHTTP 200 with the same body as the query. No result within 10 seconds: HTTP 202 with AguardandoAutorizacao; the final result arrives by webhook

When SEFAZ is down and the state allows contingency, sync mode returns 200 with ContingenciaPendente: the offline receipt can be printed and handed over right away, and the platform sends it to SEFAZ once it is back.

The webhook is sent in both modes.

Idempotency. id is the key: sending the same id again returns the same invoice without issuing another. After a network timeout, retry with the same id. If the previous attempt ended Negada, the same id with corrected fields issues again. Suggested format: terminal + local sequence, such as PDV01-000123.