TF Fiscal
Documentación

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.

POST/openapi/v2/emails/templates
Requiere las cabeceras de firma token, 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
stringIdentificador de la plantilla
tipoDocumento*
stringTipo de documento
idioma*
stringIdioma de la plantilla
nome*
stringNombre de la plantilla
assunto*
stringPlantilla del asunto
corpoHtml*
stringPlantilla del cuerpo
padrao
boolPlantilla predeterminada
ativo
boolActivo

* Campo obligatorio

200
Plantilla guardada, devuelta entera con la lista de variables permitidas para el tipo.
templateId
stringIdentificador de la plantilla
tipoDocumento
stringTipo de documento
idioma
stringIdioma de la plantilla
nome
stringNombre de la plantilla
assunto
stringPlantilla del asunto
corpoHtml
stringPlantilla del cuerpo
padrao
boolPlantilla predeterminada
ativo
boolActivo
variaveisDisponiveis
arrayVariables permitidas
criadoEm
stringCreació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.

json
{
"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*
stringTipo de documento
idioma*
stringIdioma de la plantilla
nome*
stringNombre de la plantilla
assunto*
stringPlantilla del asunto
corpoHtml*
stringPlantilla 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.

json
{
"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>&nbsp;&nbsp;<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*
stringTipo de documento
idioma*
stringIdioma de la plantilla
nome*
stringNombre de la plantilla
assunto*
stringPlantilla del asunto
corpoHtml*
stringPlantilla del cuerpo
padrao
boolPlantilla 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.

json
{
"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*
stringTipo de documento
idioma*
stringIdioma de la plantilla
nome*
stringNombre de la plantilla
assunto*
stringPlantilla del asunto
corpoHtml*
stringPlantilla 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.

json
{
"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*
stringIdentificador de la plantilla
tipoDocumento*
stringTipo de documento
idioma*
stringIdioma de la plantilla
nome*
stringNombre de la plantilla
assunto*
stringPlantilla del asunto
corpoHtml*
stringPlantilla del cuerpo
ativo
boolActivo

* Campo obligatorio