TF Fiscal
Documentação

E-mail de notas

Salvar modelo de e-mail

Cria um modelo de e-mail do integrador ou sobrescreve um existente; valida variáveis e HTML ao salvar.

POST/openapi/v2/emails/templates
Requer os cabeçalhos de assinatura token, timestamp e sign, veja Autenticação.

Modelos são do integrador, não de uma empresa: qualquer empresa registrada usa qualquer modelo. Sem templateId cria; com templateId substitui o modelo inteiro. O assunto e o corpo aceitam {{variáveis}} preenchidas no envio com os dados da nota; a lista de nomes depende do tipoDocumento e está na enumeração no fim da página. Como os modelos se relacionam com o envio está em E-mail de notas.

Corpo da requisição

templateId*
obrigatório para sobrescrever
stringIdentificador do modelo
tipoDocumento*
stringTipo de documento
idioma*
stringIdioma do modelo
nome*
stringNome do modelo
assunto*
stringModelo do assunto
corpoHtml*
stringModelo do corpo
padrao
boolModelo padrão
ativo
boolAtivo

* Campo obrigatório

200
Modelo salvo, devolvido por inteiro com a lista de variáveis permitidas para o tipo.
templateId
stringIdentificador do modelo
tipoDocumento
stringTipo de documento
idioma
stringIdioma do modelo
nome
stringNome do modelo
assunto
stringModelo do assunto
corpoHtml
stringModelo do corpo
padrao
boolModelo padrão
ativo
boolAtivo
variaveisDisponiveis
arrayVariáveis permitidas
criadoEm
stringCriação
atualizadoEm
stringÚltima atualização

Um modelo pertence ao integrador e vale para todas as empresas. Pode haver vários por tipo de documento, por exemplo um por idioma; o que tiver padrao = true é usado quando o envio não informa templateId. Salvar já valida: variável fora da lista devolve 10021003, HTML fora da lista devolve 10021004, e a mensagem diz o quê.

Modelo mínimo

NF-e em português: assunto com número e emitente, corpo com saudação, resumo e link do PDF. Sem padrao e sem ativo: fica ativo e não é o padrão.

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 do modelo
nome*
stringNome do modelo
assunto*
stringModelo do assunto
corpoHtml*
stringModelo do corpo

* Campo obrigatório

Modelo com logotipo e botões

NFS-e em português marcada como padrão: cabeçalho com imagem https, tabela com as variáveis próprias da NFS-e e dois botões que apontam para {{linkPdf}} e {{linkXml}}. A imagem só pode ser um endereço https público; não há upload.

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 do modelo
nome*
stringNome do modelo
assunto*
stringModelo do assunto
corpoHtml*
stringModelo do corpo
padrao
boolModelo padrão

* Campo obrigatório

Variáveis próprias do tipo

CT-e em inglês usando remetente.nome, destinatario.nome e valorFrete. Esses nomes só existem no CTe; num modelo NFe seriam recusados com 10021003. Com idioma = en, valores saem como 1,234.56 e datas 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 do modelo
nome*
stringNome do modelo
assunto*
stringModelo do assunto
corpoHtml*
stringModelo do corpo

* Campo obrigatório

Sobrescrever e desativar um modelo

Com templateId, o corpo substitui o modelo inteiro: reenvie todos os campos. Campo opcional omitido volta ao valor padrão, então um modelo padrão sobrescrito sem padrao = true deixa de ser o padrão. Aqui ele também é desativado com ativo = false; um modelo desativado nunca fica como padrão.

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 do modelo
tipoDocumento*
stringTipo de documento
idioma*
stringIdioma do modelo
nome*
stringNome do modelo
assunto*
stringModelo do assunto
corpoHtml*
stringModelo do corpo
ativo
boolAtivo

* Campo obrigatório