diff --git a/pytrustnfe/nfse/natal/__init__.py b/pytrustnfe/nfse/natal/__init__.py
new file mode 100644
index 0000000..a96948d
--- /dev/null
+++ b/pytrustnfe/nfse/natal/__init__.py
@@ -0,0 +1,77 @@
+# © 2019 Danimar Ribeiro, Trustcode
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+
+import os
+from requests import Session
+from zeep import Client
+from zeep.transports import Transport
+from requests.packages.urllib3 import disable_warnings
+
+from pytrustnfe.xml import render_xml, sanitize_response
+from pytrustnfe.certificado import extract_cert_and_key_from_pfx, save_cert_key
+from pytrustnfe.nfe.assinatura import Assinatura
+
+
+def _render(certificado, method, **kwargs):
+ path = os.path.join(os.path.dirname(__file__), "templates")
+ xml_send = render_xml(path, "%s.xml" % method, True, **kwargs)
+
+ reference = ""
+ signer = Assinatura(certificado.pfx, certificado.password)
+ xml_send = signer.assina_xml(xml_send, reference)
+ return xml_send
+
+
+def _send(certificado, method, **kwargs):
+ base_url = ""
+ if kwargs["ambiente"] == "producao":
+ base_url = "https://aparecida.siltecnologia.com.br/tbw/services/Abrasf10?wsdl"
+ else:
+ base_url = "https://aparecida.siltecnologia.com.br/tbwhomologacao/services/Abrasf10?wsdl"
+
+ cert, key = extract_cert_and_key_from_pfx(certificado.pfx, certificado.password)
+ cert, key = save_cert_key(cert, key)
+
+ disable_warnings()
+ session = Session()
+ session.cert = (cert, key)
+ session.verify = False
+ transport = Transport(session=session)
+
+ client = Client(base_url, transport=transport)
+
+ xml_send = kwargs["xml"]
+ response = client.service[method](xml_send)
+ response, obj = sanitize_response(response)
+ return {"sent_xml": xml_send, "received_xml": response, "object": obj}
+
+
+def xml_recepcionar_lote_rps(certificado, **kwargs):
+ return _render(certificado, "recepcionarLoteRps", **kwargs)
+
+
+def recepcionar_lote_rps(certificado, **kwargs):
+ if "xml" not in kwargs:
+ kwargs["xml"] = xml_recepcionar_lote_rps(certificado, **kwargs)
+ return {"sent_xml": kwargs["xml"]}
+ # return _send(certificado, 'recepcionarLoteRps', **kwargs)
+
+
+def xml_consultar_lote_rps(certificado, **kwargs):
+ return _render(certificado, "consultarLoteRps", **kwargs)
+
+
+def consultar_lote_rps(certificado, **kwargs):
+ if "xml" not in kwargs:
+ kwargs["xml"] = xml_consultar_lote_rps(certificado, **kwargs)
+ return _send(certificado, "consultarLoteRps", **kwargs)
+
+
+def xml_cancelar_nfse(certificado, **kwargs):
+ return _render(certificado, "cancelarNfse", **kwargs)
+
+
+def cancelar_nfse(certificado, **kwargs):
+ if "xml" not in kwargs:
+ kwargs["xml"] = xml_cancelar_nfse(certificado, **kwargs)
+ return _send(certificado, "cancelarNfse", **kwargs)
diff --git a/pytrustnfe/nfse/natal/templates/Rps.xml b/pytrustnfe/nfse/natal/templates/Rps.xml
new file mode 100644
index 0000000..9dcd23c
--- /dev/null
+++ b/pytrustnfe/nfse/natal/templates/Rps.xml
@@ -0,0 +1,101 @@
+
+
+
+ {{ rps.numero }}
+ {{ rps.serie }}
+ {{ rps.tipo_rps }}
+
+ {{ rps.data_emissao }}
+ {{ rps.natureza_operacao }}
+ {{ rps.regime_tributacao }}
+ {{ rps.optante_simples }}
+ {{ rps.incentivador_cultural }}
+
+
+ {{ rps.servico.valor_servico }}
+ {{ rps.servico.iss_retido }}
+ {{ rps.servico.base_calculo }}
+
+ {{ rps.servico.codigo_servico }}
+ {{ rps.servico.cnae_servico }}
+ {{ rps.servico.codigo_tributacao_municipio }}
+ {{ rps.servico.descricao }}
+ {{ rps.servico.codigo_municipio }}
+
+
+
+ {{ rps.prestador.cnpj }}
+ {{ rps.prestador.inscricao_municipal }}
+
+ {{ rps.prestador.razaosocial }}
+ {{ rps.prestador.fantasia }}
+
+ {{ rps.prestador.endereco }}
+ {{ rps.prestador.numero }}
+ {{ rps.prestador.complemento }}
+ {{ rps.prestador.bairro }}
+ {{ rps.prestador.codigomunicipal }}
+ {{ rps.prestador.uf }}
+ {{ rps.prestador.cep }}
+
+
+ {{ rps.prestador.telefone }}
+ {{ rps.prestador.email }}
+
+
+
+
+
+ {% if rps.tomador.cnpj_cpf|length == 14 %}
+ {{ rps.tomador.cnpj_cpf }}
+ {% endif %}
+ {% if rps.tomador.cnpj_cpf|length == 11 %}
+ {{ rps.tomador.cnpj_cpf }}
+ {% endif %}
+
+ {% if rps.tomador.inscricao_municipal is defined -%}
+ {{ rps.tomador.inscricao_municipal }}
+ {% endif %}
+
+ {{ rps.tomador.razao_social }}
+
+ {{ rps.tomador.logradouro }}
+ {{ rps.tomador.numero }}
+ {% if rps.tomador.complemento is defined -%}
+ {{ rps.tomador.complemento }}
+ {% endif %}
+ {{ rps.tomador.bairro }}
+ {{ rps.tomador.codigo_municipio }}
+ {{ rps.tomador.uf }}
+ {{ rps.tomador.cep }}
+
+
+ {% if rps.tomador.telefone is defined -%}
+ {{ rps.tomador.telefone }}
+ {% endif %}
+ {% if rps.tomador.email is defined -%}
+ {{ rps.tomador.email }}
+ {% endif %}
+
+
+ {{ rps.tomador.orgao_gerador.codigo_municipio }}
+ {{ rps.tomador.orgao_gerador.uf }}
+
+
+ {% if rps.intermediario is defined -%}
+
+ {{ rps.intermediario.razao_social }}
+
+ {{ rps.intermediario.cnpj }}
+
+ {{ rps.intermediario.inscricao_municipal }}
+
+ {% endif %}
+ {% if rps.construcao_civil is defined -%}
+
+ {{ rps.construcao_civil.codigo_obra }}
+ {{ rps.construcao_civil.art }}
+
+ {% endif %}
+
+
diff --git a/pytrustnfe/nfse/natal/templates/cancelarNfse.xml b/pytrustnfe/nfse/natal/templates/cancelarNfse.xml
new file mode 100644
index 0000000..f5ec25b
--- /dev/null
+++ b/pytrustnfe/nfse/natal/templates/cancelarNfse.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ {{ cancelamento.numero_nfse }}
+
+ {{ cancelamento.cnpj_prestador }}
+
+ {{ cancelamento.inscricao_municipal }}
+ {{ cancelamento.cidade }}
+
+ {{ cancelamento.codigo_cancelamento }}
+
+
+
diff --git a/pytrustnfe/nfse/natal/templates/consultarLoteRps.xml b/pytrustnfe/nfse/natal/templates/consultarLoteRps.xml
new file mode 100644
index 0000000..7e4df96
--- /dev/null
+++ b/pytrustnfe/nfse/natal/templates/consultarLoteRps.xml
@@ -0,0 +1,7 @@
+
+
+ {{ consulta.cnpj_prestador }}
+ {{ consulta.inscricao_municipal }}
+
+ {{ consulta.protocolo }}
+
diff --git a/pytrustnfe/nfse/natal/templates/recepcionarLoteRps.xml b/pytrustnfe/nfse/natal/templates/recepcionarLoteRps.xml
new file mode 100644
index 0000000..0756b0e
--- /dev/null
+++ b/pytrustnfe/nfse/natal/templates/recepcionarLoteRps.xml
@@ -0,0 +1,13 @@
+
+
+ {{ nfse.numero_lote }}
+ {{ nfse.cnpj_prestador }}
+ {{ nfse.inscricao_municipal }}
+ {{ nfse.lista_rps|length }}
+
+ {% for rps in nfse.lista_rps -%}
+ {% include 'Rps.xml' %}
+ {% endfor %}
+
+
+