E-mail de facturas
Guardar plantilla de correo
Crea una plantilla de correo del integrador o sobrescribe una existente; valida variables y HTML al guardar.
/openapi/v2/emails/templatestoken, timestamp y sign, vea Autenticación.Las plantillas son del integrador, no de una empresa: cualquier empresa registrada usa cualquier plantilla. Sin templateId crea; con templateId sustituye la plantilla entera. El asunto y el cuerpo aceptan {{variables}} rellenadas en el envío con los datos de la factura; la lista de nombres depende del tipoDocumento y está en la enumeración al final de la página. Cómo se relacionan las plantillas con el envío está en E-mail de facturas.
Cuerpo de la petición
templateId*obligatorio para sobrescribir | string | Identificador de la plantilla |
tipoDocumento* | string | Tipo de documento |
idioma* | string | Idioma de la plantilla |
nome* | string | Nombre de la plantilla |
assunto* | string | Plantilla del asunto |
corpoHtml* | string | Plantilla del cuerpo |
padrao | bool | Plantilla predeterminada |
ativo | bool | Activo |
* Campo obligatorio
templateId | string | Identificador de la plantilla |
tipoDocumento | string | Tipo de documento |
idioma | string | Idioma de la plantilla |
nome | string | Nombre de la plantilla |
assunto | string | Plantilla del asunto |
corpoHtml | string | Plantilla del cuerpo |
padrao | bool | Plantilla predeterminada |
ativo | bool | Activo |
variaveisDisponiveis | array | Variables permitidas |
criadoEm | string | Creación |
atualizadoEm | string | Última actualización |
Una plantilla pertenece al integrador y vale para todas las empresas. Puede haber varias por tipo de documento, por ejemplo una por idioma; la que tenga padrao = true se usa cuando el envío no informa templateId. Guardar ya valida: una variable fuera de la lista devuelve 10021003, HTML fuera de la lista devuelve 10021004, y el mensaje dice cuál.
Plantilla mínima
NF-e en portugués: asunto con número y emisor, cuerpo con saludo, resumen y enlace del PDF. Sin padrao ni ativo: queda activa y no es la predeterminada.
{"tipoDocumento": "NFe","idioma": "pt","nome": "NF-e simples","assunto": "Nota fiscal {{numero}} - {{emitente.nome}}","corpoHtml": "<p>Olá {{cliente.nome}},</p><p>Segue a nota fiscal {{numero}} emitida por {{emitente.nome}} em {{dataEmissao}}, no valor de R$ {{valorTotal}}.</p><p><a href='{{linkPdf}}'>Baixar DANFE (PDF)</a></p>"}
tipoDocumento* | string | Tipo de documento |
idioma* | string | Idioma de la plantilla |
nome* | string | Nombre de la plantilla |
assunto* | string | Plantilla del asunto |
corpoHtml* | string | Plantilla del cuerpo |
* Campo obligatorio
Plantilla con logotipo y botones
NFS-e en portugués marcada como predeterminada: cabecera con imagen https, tabla con las variables propias de la NFS-e y dos botones que apuntan a {{linkPdf}} y {{linkXml}}. La imagen solo puede ser una dirección https pública; no hay subida de archivos.
{"tipoDocumento": "NFSe","idioma": "pt","nome": "NFS-e com logotipo","assunto": "Nota Fiscal de Serviço nº {{numero}} - {{emitente.nome}}","corpoHtml": "<div style='background:#f3f4f6;padding:24px 0;font-family:Arial,Helvetica,sans-serif;color:#1f2937'><div style='max-width:640px;margin:0 auto;background:#ffffff;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb'><div style='padding:20px 28px;border-bottom:1px solid #e5e7eb'><img src='https://v2.tffiscal.com/logo.png' alt='TF Fiscal' width='160' style='display:block;height:auto;border:0'></div><div style='padding:24px 28px'><h2 style='margin:0 0 16px;color:#1a56db;font-size:20px'>Nota Fiscal de Serviço nº {{numero}}</h2><p>Olá <strong>{{cliente.nome}}</strong>,</p><p>Segue a nota fiscal de serviço emitida por <strong>{{emitente.nome}}</strong> (CNPJ {{emitente.cnpj}}) em {{dataEmissao}}.</p><table style='border-collapse:collapse;width:100%;font-size:14px'><tbody><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb;width:40%'>Número / Série</td><td style='padding:8px;border:1px solid #e5e7eb'>{{numero}} / {{serie}}</td></tr><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb'>Serviço</td><td style='padding:8px;border:1px solid #e5e7eb'>{{descricaoServico}}</td></tr><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb'>Valor total</td><td style='padding:8px;border:1px solid #e5e7eb'>R$ {{valorTotal}}</td></tr><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb'>ISS</td><td style='padding:8px;border:1px solid #e5e7eb'>R$ {{valorIss}}</td></tr><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb'>Município</td><td style='padding:8px;border:1px solid #e5e7eb'>{{municipio}}</td></tr><tr><td style='padding:8px;border:1px solid #e5e7eb;background:#f9fafb'>Chave de acesso</td><td style='padding:8px;border:1px solid #e5e7eb;font-family:monospace;font-size:12px'>{{chaveAcesso}}</td></tr></tbody></table><p style='margin-top:20px'><a href='{{linkPdf}}' style='display:inline-block;padding:10px 18px;background:#1a56db;color:#ffffff;text-decoration:none;border-radius:6px;font-weight:bold'>Baixar DANFSe (PDF)</a> <a href='{{linkXml}}' style='display:inline-block;padding:10px 18px;border:1px solid #1a56db;color:#1a56db;text-decoration:none;border-radius:6px;font-weight:bold'>Baixar XML</a></p></div><div style='padding:16px 28px;background:#f9fafb;color:#6b7280;font-size:12px;border-top:1px solid #e5e7eb'>E-mail automático enviado pela plataforma TF Fiscal. Em caso de dúvidas, responda a este e-mail.</div></div></div>","padrao": true}
tipoDocumento* | string | Tipo de documento |
idioma* | string | Idioma de la plantilla |
nome* | string | Nombre de la plantilla |
assunto* | string | Plantilla del asunto |
corpoHtml* | string | Plantilla del cuerpo |
padrao | bool | Plantilla predeterminada |
* Campo obligatorio
Variables propias del tipo
CT-e en inglés usando remetente.nome, destinatario.nome y valorFrete. Esos nombres solo existen en CTe; en una plantilla NFe se rechazarían con 10021003. Con idioma = en, los importes salen como 1,234.56 y las fechas como yyyy-MM-dd HH:mm.
{"tipoDocumento": "CTe","idioma": "en","nome": "CT-e english","assunto": "Transport document {{numero}} from {{emitente.nome}}","corpoHtml": "<p>Hello {{cliente.nome}},</p><p>Transport document {{numero}} issued by {{emitente.nome}} on {{dataEmissao}}.</p><ul><li>Sender: {{remetente.nome}}</li><li>Recipient: {{destinatario.nome}}</li><li>Freight: R$ {{valorFrete}}</li></ul><p><a href='{{linkPdf}}'>Download DACTE (PDF)</a> | <a href='{{linkXml}}'>Download XML</a></p>"}
tipoDocumento* | string | Tipo de documento |
idioma* | string | Idioma de la plantilla |
nome* | string | Nombre de la plantilla |
assunto* | string | Plantilla del asunto |
corpoHtml* | string | Plantilla del cuerpo |
* Campo obligatorio
Sobrescribir y desactivar una plantilla
Con templateId, el cuerpo sustituye la plantilla entera: reenvíe todos los campos. Un campo opcional omitido vuelve a su valor por defecto, así que una plantilla predeterminada sobrescrita sin padrao = true deja de ser la predeterminada. Aquí además se desactiva con ativo = false; una plantilla desactivada nunca queda como predeterminada.
{"templateId": "2103150000000000001","tipoDocumento": "NFe","idioma": "pt","nome": "NF-e simples (antigo)","assunto": "Nota fiscal {{numero}} - {{emitente.nome}}","corpoHtml": "<p>Olá {{cliente.nome}},</p><p>Segue a nota fiscal {{numero}} emitida por {{emitente.nome}} em {{dataEmissao}}, no valor de R$ {{valorTotal}}.</p><p><a href='{{linkPdf}}'>Baixar DANFE (PDF)</a></p>","ativo": false}
templateId* | string | Identificador de la plantilla |
tipoDocumento* | string | Tipo de documento |
idioma* | string | Idioma de la plantilla |
nome* | string | Nombre de la plantilla |
assunto* | string | Plantilla del asunto |
corpoHtml* | string | Plantilla del cuerpo |
ativo | bool | Activo |
* Campo obligatorio
Escriba {{nome}} en el asunto o el cuerpo; el nombre empieza con letra y acepta letras, dígitos, guion bajo y punto, con espacios opcionales dentro de las llaves. Al guardar, cada nombre se comprueba contra la lista del tipo de documento (enumeración al final de la página); un nombre desconocido se rechaza con 10021003 en lugar de convertirse en texto vacío en la bandeja del cliente. Al enviar, importes y fechas siguen el idioma de la plantilla: pt / es usan 1.234,56 y dd/MM/yyyy HH:mm; en / zh usan 1,234.56 y yyyy-MM-dd HH:mm; la hora es la de São Paulo. En el cuerpo el valor se escapa como HTML; en el asunto no. {{linkPdf}} y {{linkXml}} se convierten en enlaces de descarga de la plataforma, válidos según la configuración del integrador (7 días por defecto).
El cuerpo se rechaza, no se limpia: cualquier elemento fuera de la lista devuelve 10021004 con su posición, para que la plantilla guardada sea exactamente lo que sale en el correo.
- Etiquetas:
p,div,span,br,hr,h1ah6,strong,b,em,i,u,s,ul,ol,li,blockquote,table,thead,tbody,tr,th,td,a,img. - Atributos:
style,href,src,alt,width,height,align,colspan,rowspan. Ningún atributo de evento (on...). styleno puede contenerurl(,expression(,position:nibehavior:.hrefsolo aceptahttps:,mailto:,{{linkPdf}}o{{linkXml}}.- El
srcde la imagen solo acepta una direcciónhttps; no hay subida de imágenes, aloje el logotipo en una dirección pública. - Tamaño máximo 64 KB en UTF-8.
tipoDocumentoTipo de documento
| Valores | Significado |
|---|---|
| NFe | NF-e, factura de mercancías |
| NFSe | NFS-e, factura de servicios |
| CTe | CT-e, conocimiento de transporte |
| DCe | DC-e, declaración de contenido |
idiomaIdioma de la plantilla
El idioma define el formato de importes y fechas en las variables; la hora es siempre la de São Paulo.
| Valores | Significado |
|---|---|
| pt | Portugués; importes 1.234,56, fechas dd/MM/yyyy HH:mm |
| en | Inglés; importes 1,234.56, fechas yyyy-MM-dd HH:mm |
| zh | Chino; importes 1,234.56, fechas yyyy-MM-dd HH:mm |
| es | Español; importes 1.234,56, fechas dd/MM/yyyy HH:mm |
corpoHtmlVariables comunes a los cuatro tipos
Escriba {{nome}}; se aceptan espacios dentro de las llaves. Sin valor, la variable queda como texto vacío. En el cuerpo el valor se escapa como HTML; en el asunto no.
| Valores | Significado |
|---|---|
| numero | Número del documento |
| serie | Serie |
| chaveAcesso | Clave de acceso, 44 o 50 dígitos |
| dataEmissao | Fecha de emisión, en el huso de São Paulo y el formato del idioma |
| valorTotal | Importe total, formateado por idioma: total de la NF-e, valor del servicio de la NFS-e, valor total de la prestación del CT-e, valor declarado de la DC-e |
| emitente.nome | Razón social del emisor |
| emitente.cnpj | CNPJ del emisor |
| cliente.nome | Nombre del destinatario de la nota: comprador de la NF-e, tomador de la NFS-e y del CT-e, destinatario de la DC-e |
| cliente.documento | Documento del destinatario, CPF o CNPJ |
| linkPdf | Enlace de descarga del PDF; validez según la configuración del integrador, 7 días por defecto |
| linkXml | Enlace de descarga del XML autorizado; vacío si el XML aún no fue archivado |
corpoHtmlVariables solo de la NFSe
En otro tipo de documento la variable se rechaza al guardar con 10021003.
| Valores | Significado |
|---|---|
| codigoVerificacao | Código de verificación de la NFS-e |
| municipio | Nombre del municipio del emisor |
| descricaoServico | Descripción del servicio |
| valorIss | Importe del ISS, formateado por idioma |
corpoHtmlVariables solo del CTe
En otro tipo de documento la variable se rechaza al guardar con 10021003.
| Valores | Significado |
|---|---|
| remetente.nome | Nombre del remitente de la carga |
| destinatario.nome | Nombre del destinatario de la carga |
| valorFrete | Valor total de la prestación, formateado por idioma |
corpoHtmlVariables solo de la DCe
En otro tipo de documento la variable se rechaza al guardar con 10021003.
| Valores | Significado |
|---|---|
| marketplace.site | Sitio del marketplace, del registro de DC-e del emisor |
| Código | HTTP | |
|---|---|---|
| 10001001 | 400 | Falló la validación de campos: obligatorio en blanco, por encima del tamaño, tipoDocumento o idioma fuera de los valores aceptados; una entrada por campo. |
| 10021001 | 404 | Plantilla de correo no encontrada: el templateId no existe o no es de este integrador. |
| 10021003 | 400 | La plantilla usa variables fuera de la lista permitida; el mensaje lista los nombres. Verifique el tipoDocumento y la enumeración de variables. |
| 10021004 | 400 | El HTML de la plantilla contiene contenido prohibido: etiqueta, atributo, style, href o src fuera de la lista, o cuerpo por encima de 64 KB; el mensaje señala cada caso. |
