Referencia

Glosario fiscal

El vocabulario que usa esta documentación. Cada entrada dice qué es el término, dónde aparece en una llamada a stackin, y lleva a donde la documentación lo trata a fondo.

Campos de la petición

Cada campo que usted completa, con el nombre que lleva en cada SDK y la etiqueta en que se convierte en el XML. Los nombres son en inglés; lo que significan es fiscal brasileño.

Documento

CampoSDK (Python / Go / PHP)TipoExigido enEtiqueta XML
document_typepy·document_typego·DocumentTypephp/ts·documentType"nfe" | "nfse"nfenfsemod
client_namepy·client_namego·ClientNamephp/ts·clientNamestring (1–120)nfenfsedest/xNome
tax_idpy·tax_idgo·TaxIDphp/ts·taxIdstring (11 | 14)nfenfsedest/CPF · dest/CNPJ
items[]py·itemsgo·Itemsphp/ts·itemsProduct[]nfenfsedet
recipient_addresspy·recipient_addressgo·RecipientAddressphp/ts·recipientAddressAddressnfedest/enderDest
seriespy·seriesgo·Seriesphp/ts·seriesstring—ide/serie
numberpy·numbergo·Numberphp/ts·numberstring—ide/nNF
contingencypy·—go·—php/ts·—booleannfeide/tpEmis
Idempotency-Keypy·idempotency_keygo·IdempotencyKeyphp/ts·idempotencyKeystring——

Ítem

CampoSDK (Python / Go / PHP)TipoExigido enEtiqueta XML
items[].descriptionpy·descriptiongo·Descriptionphp/ts·descriptionstring (1–120)nfenfseprod/xProd
items[].unit_pricepy·unit_pricego·UnitPricephp/ts·unitPricedecimal (10)nfenfseprod/vUnCom
items[].amountpy·amountgo·Amountphp/ts·amountdecimal (2)nfenfseprod/vProd
items[].product.quantitypy·quantitygo·Quantityphp/ts·quantitydecimal (4)nfeprod/qCom
items[].product.unitpy·unitgo·Unitphp/ts·unitstring (≤6)nfeprod/uCom
items[].product.barcodepy·barcodego·Barcodephp/ts·barcodestring—prod/cEAN
items[].product.discountpy·discountgo·Discountphp/ts·discountdecimal (2)—prod/vDesc
items[].product.freightpy·freightgo·Freightphp/ts·freightdecimal (2)—prod/vFrete
items[].product.insurancepy·insurancego·Insurancephp/ts·insurancedecimal (2)—prod/vSeg
items[].product.other_expensespy·other_expensesgo·OtherExpensesphp/ts·otherExpensesdecimal (2)—prod/vOutro
items[].discountpy·discountgo·Discountphp/ts·discountdecimal (2)nfsevDescCondIncond/vDescIncond
items[].service_codepy·service_codego·ServiceCodephp/ts·serviceCodestringnfsecServ/cTribNac
items[].tax_retainedpy·tax_retainedgo·TaxRetainedphp/ts·taxRetainedbooleannfsetribMun/tpRetISSQN
items[].observationspy·observationsgo·Observationsphp/ts·observationsstring (≤2000)nfseinfAdic/infCpl

Ítem — campos brasileños

CampoSDK (Python / Go / PHP)TipoExigido enEtiqueta XML
items[].product.br.ncmpy·ncmgo·NCMphp/ts·ncmstring (8)nfeprod/NCM
items[].product.br.cfoppy·cfopgo·CFOPphp/ts·cfopstring (4)nfeprod/CFOP
items[].product.br.cestpy·cestgo·CESTphp/ts·ceststring (7)—prod/CEST
items[].product.br.taxpy·taxgo·Taxphp/ts·taxTaxnfeimposto
items[].product.br.manufacturer_cnpjpy·manufacturer_cnpjgo·ManufacturerCNPJphp/ts·manufacturerCnpjstring (14)—prod/CNPJFab
items[].product.br.ibs_cbspy·ibs_cbsgo·IbsCbsphp/ts·ibsCbsIbsCbsnfeimposto/IBSCBS

Dirección del destinatario

CampoSDK (Python / Go / PHP)TipoExigido enEtiqueta XML
recipient_address.streetpy·streetgo·Streetphp/ts·streetstringnfeenderDest/xLgr
recipient_address.numberpy·numbergo·Numberphp/ts·numberstringnfeenderDest/nro
recipient_address.neighborhoodpy·neighborhoodgo·Neighborhoodphp/ts·neighborhoodstringnfeenderDest/xBairro
recipient_address.citypy·citygo·Cityphp/ts·citystringnfeenderDest/xMun
recipient_address.statepy·statego·Statephp/ts·statestring (2)nfeenderDest/UF
recipient_address.zip_codepy·zip_codego·ZipCodephp/ts·zipCodestring (8)nfeenderDest/CEP
recipient_address.city_codepy·city_codego·CityCodephp/ts·cityCodestring (7)nfeenderDest/cMun

Documentos

NF-e
Modelo 55, emitida en cada salida de mercancía. Lo que la distingue en la práctica: cada ítem exige NCM y CFOP, el destinatario exige dirección completa con código de municipio, y la autorización es estatal — responde la SEFAZ del estado del emisor. Es la única que acepta carta de corrección e inutilización de rango.document_type: "nfe"ReferenciasPortal Nacional da NF-eEsquemas XML espelhadosVer en la API
NFS-e
Documento municipal de servicio. No hay mercancía, así que no hay NCM ni CFOP: cada ítem necesita descripción, precio y el código de servicio de la LC 116. La dirección del tomador es opcional. No existe carta de corrección — corregir significa cancelar y emitir de nuevo, dentro del plazo del municipio.document_type: "nfse"ReferenciasNFS-e Nacional (gov.br)Lei Complementar 116/2003Ver en la API
DPS
Es lo que efectivamente sube al entorno nacional: la DPS es la declaración que envía el emisor, y la nota es lo que el ADN devuelve a partir de ella. Nunca arma una DPS en stackin — la API la construye desde los campos de negocio y guarda el XML resultante.ReferenciasNFS-e — documentação técnicaPublicações NFS-e espelhadas
DANFE
El papel que acompaña la carga, con la clave de acceso como código de barras para la fiscalización en ruta. No es el documento fiscal: es una representación. Un DANFE sin el XML autorizado correspondiente no prueba nada.GET /invoices/{access_key}/pdfReferenciasPortal Nacional da NF-eVer en la API
DANFSe
La representación impresa de la NFS-e, generada por el entorno nacional. Misma relación: el valor jurídico está en el XML, el PDF es para que lo lea una persona.GET /invoices/{access_key}/pdfReferenciasNFS-e Nacional (gov.br)
XML
El documento en sí. Es lo que se firma con el certificado A1 del emisor, lo que la SEFAZ o el ADN autoriza, y lo que hay que guardar por cinco años. Todo lo demás — PDF, correo, pantalla — es representación.xmlReferenciasEsquemas XML espelhadosVer en la API

Quién participa

SEFAZ
La autorizadora estatal de la NF-e. Cada estado tiene la suya, con su propia disponibilidad: una SEFAZ caída no derriba a las demás, y por eso existe la contingencia. Los rechazos vienen de aquí, con código numérico y motivo.ReferenciasPortal Nacional da NF-ePortal DF-e SVRSVer en la API
ADN
El entorno de datos nacional de la NFS-e. Centraliza la emisión de los municipios que adoptaron el estándar nacional, sustituyendo una integración por ayuntamiento por una sola. Los municipios que no adhirieron siguen con sistema propio.ReferenciasNFS-e Nacional (gov.br)NFS-e — documentação técnica
Emitente
Quien emite el documento. En stackin el emisor nunca viaja en el cuerpo de la petición: identificación fiscal, inscripción estatal, dirección, régimen tributario, certificado y entorno se resuelven desde la API key. Es deliberado — una key filtrada no permite emitir en nombre de otra empresa.ReferenciasCNPJ — Receita Federal
Destinatário
Quien recibe. Para NF-e la dirección es obligatoria y completa, incluido el código IBGE del municipio; para NFS-e es opcional. tax_id acepta CPF o CNPJ y distingue cuál es por la longitud.client_nametax_idrecipient_addressReferenciasCódigos de município — IBGEVer en la API

Campos e identificadores

Chave de acesso
44 dígitos en la NF-e, 50 en la NFS-e. No es aleatoria: lleva el estado, el año y mes, la identificación fiscal del emisor, el modelo, la serie, el número, el tipo de emisión y un dígito verificador. Es como se consulta y se cancela un documento — y lo que codifica el código de barras del DANFE.access_keyReferenciasPortal Nacional da NF-eNotas Técnicas espelhadasVer en la API
Protocolo
El número que devuelve la autorizadora cuando acepta el documento. Solo existe tras la autorización: un documento rechazado no tiene protocolo, por eso vuelve nulo mientras el estado no sea autorizado.protocolReferenciasPortal Nacional da NF-e
Série e número
Numeración secuencial por emisor, serie y modelo. No puede tener huecos: si un número se quemó y nunca llegó a ser documento autorizado, hay que inutilizarlo formalmente, o la SEFAZ lo preguntará en una fiscalización.seriesnumberReferenciasPortal Nacional da NF-eVer en la API
Preço unitário e valor da linha
unit_price es el precio de una unidad; amount es el valor bruto total de la línea, antes de descuento y recargos. Envíe uno de los dos — enviar ambos afirma que coinciden, y la API compara quantity × unit_price con amount antes de transmitir. En el XML se convierten en vUnCom (10 decimales) y vProd (2 decimales).items[].unit_priceitems[].amountitems[].product.quantityReferenciasEsquemas XML espelhadosPortal Nacional da NF-eVer en la API
Encargos do item
Descuento, flete, seguro y otros gastos pertenecen al ítem, no a la nota. El total del ítem es bruto − descuento + flete + seguro + otros gastos, y la suma de estos campos alimenta los totalizadores vDesc, vFrete, vSeg y vOutro. Un descuento mayor que el valor bruto se rechaza antes de la transmisión.items[].product.discountitems[].product.freightitems[].product.insuranceitems[].product.other_expensesReferenciasEsquemas XML espelhadosVer en la API
CFOP
Cuatro dígitos que declaran la naturaleza de la operación: el primero es el destino (5 dentro del estado, 6 fuera, 7 exterior) y los otros tres la finalidad — venta, devolución, remesa, industrialización. Decide cómo el estado grava la operación, así que un CFOP equivocado produce impuesto equivocado, no un error de esquema.items[].product.br.cfopReferenciasAjuste SINIEF 07/05Ver en la API
NCM
Ocho dígitos que clasifican la mercancía en el Mercosur. Determina la alícuota de IPI, el tratamiento de ICMS-ST y el régimen de importación. stackin valida el formato, nunca la elección: qué NCM aplica a su producto es decisión fiscal del emisor.items[].product.br.ncmReferenciasNCM — Receita FederalVer en la API
CEST
Siete dígitos, obligatorios solo para mercancía sujeta a sustitución tributaria. Si el producto no está en ese régimen el campo simplemente no va — enviar CEST en un producto fuera del ST es motivo de rechazo.items[].product.br.cestReferenciasConvênio ICMS 142/18
Unidade comercial
La unidad en que se vende la mercancía — UN, CX, KG, L. Es texto libre de hasta 6 caracteres en el XML, no una lista cerrada, pero debe ser coherente con la cantidad: 2 CX a R$ 120,00 no es lo mismo que 2 UN a R$ 120,00 al verificar la carga.items[].product.unitReferenciasEsquemas XML espelhados
GTIN
El GTIN real del producto, cuando existe. Cuando no existe, el XML lleva la literal SEM GTIN — que es lo que stackin envía si omite el campo. Inventar un número es peor que omitirlo: el dígito verificador se comprueba.items[].product.barcodeReferenciasNotas Técnicas espelhadas
Código de serviço
El ítem de la lista de la LC 116/2003 — 1.07, 7.02 y así. Cada municipio desglosa esa lista a su manera, así que el mismo servicio puede tener un subítem distinto por ciudad. Sin él, stackin usa el código del perfil fiscal de la empresa.items[].service_codeReferenciasLei Complementar 116/2003NFS-e — documentação técnicaVer en la API
CNPJ e CPF
CPF (11 dígitos) o CNPJ (14). Desde el 2026-07-31 el CNPJ es alfanumérico: los 12 primeros caracteres pueden ser letras, solo los 2 dígitos verificadores siguen siendo numéricos. Valide longitud y forma, nunca una regla de dígito de una revisión antigua — rechaza documentos válidos.tax_idReferenciasCNPJ — Receita FederalVer en la API
Código de município
El código IBGE de 7 dígitos del municipio. Obligatorio en la NF-e para emisor y destinatario, y es él — no el nombre de la ciudad — lo que lee la SEFAZ. Una ciudad bien escrita con el código equivocado es un rechazo.recipient_address.city_codeReferenciasCódigos de município — IBGE

Eventos

Cancelamento
Un evento posterior a la autorización, con plazo legal contado desde ella (24 horas en la mayoría de los estados para NF-e) y un motivo de al menos 15 caracteres. Pasado el plazo no hay cancelación: la salida es una nota de devolución. Cancelar no borra el documento, registra un evento sobre él.POST /invoices/{access_key}/cancelreasonReferenciasPortal Nacional da NF-eNotas Técnicas espelhadasVer en la API
CC-e
La carta de corrección electrónica. Corrige lo que no altera valor, impuesto, emisor ni destinatario — típicamente la descripción, los datos de transporte, la información complementaria. Solo NF-e. Hasta 20 cartas por documento, y cada una sustituye a la anterior.POST /invoices/{access_key}/correctioncorrectionReferenciasPortal Nacional da NF-eNotas Técnicas espelhadasVer en la API
Inutilização
Declara a la SEFAZ que un rango de números nunca llegó a ser documento — quemado por una falla de sistema, por ejemplo. Es lo que impide que un hueco en la secuencia se vuelva un problema en fiscalización. No deshace una nota autorizada: para eso está la cancelación.POST /invoices/invalidationsnumber_startnumber_endReferenciasPortal Nacional da NF-eVer en la API
Reemissão
Reenvío de un documento que fue rechazado o falló en la transmisión. Consume un número nuevo, porque el anterior se quemó. stackin guarda los ítems del intento original, así que la reemisión no vuelve a pedir el cuerpo.POST /invoices/{invoice_id}/reissueVer en la API
Rejeição
La respuesta de la autorizadora rechazando el documento, con código numérico y motivo. Un rechazo no es un error de red ni un bug: es el fisco diciendo que el contenido está mal. El código es lo que importa — la 972, por ejemplo, es la ausencia del grupo de responsable técnico.statusdetailReferenciasNotas Técnicas espelhadasPortal Nacional da NF-eVer en la API

Entornos

Homologação
El entorno de prueba de la propia autorizadora. Un documento emitido allí no tiene valor fiscal y el destinatario sale como NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL, por exigencia del fisco. Úselo sin límite: es gratuito e ilimitado.ReferenciasPortal Nacional da NF-eVer en la API
Produção
El entorno real. Un documento emitido aquí tiene valor jurídico, entra en la liquidación de impuestos y solo sale por cancelación dentro del plazo. El entorno queda fijado en la API key, no viaja en la llamada — no se emite en producción por cambiar un parámetro sin querer.ReferenciasPortal Nacional da NF-eVer en la API
Contingência
El camino alternativo cuando la SEFAZ del estado no está disponible: el documento va a un entorno nacional (SVC-AN o SVC-RS, según el estado) en vez de esperar. Cambia el tipo de emisión dentro del XML, así que no es solo un reintento.contingencyReferenciasPortal DF-e SVRSNotas Técnicas espelhadas
data-source
El espejo público de las publicaciones oficiales que stackin sigue: notas técnicas, esquemas XML y manuales de NF-e y NFS-e, rastreados cada 6 horas, versionados y publicados como feed Atom y manifest JSON. Es lo que responde "¿cambió algo en el layout?" sin entrar en ningún portal.Referenciasstackin-io/data-sourceNotas Técnicas espelhadasEsquemas XML espelhados
Confiable

Más del 99,9% de uptime

Seguro

Datos cifrados y listo para LGPD

Rápido

Infraestructura escalable y de baja latencia

IA en primer lugar

Servidor MCP oficial — emita desde un agente

© 2026 stackin. Todos los derechos reservados.Hecho con código, propósito y café.Política de PrivacidadTérminos de UsoContacto