XML y XSD – Nota Fiscal Servicios Turísticos


Nombre Campo

Tipo Dato

Obligatorio

Consideraciones

CABECERA

nitEmisor

Numérico

Si

Máximo de 13 digitos

numeroFactura

Numérico

Si

Máximo de 8 digitos

cuf

Alfanumérico

Si

Máximo de 100 caracteres

codigoSucursal

Numérico

Si

Máximo hasta la 9999, también puede ser 0 (casa matriz)

direccion

Alfanumérico

Si

Máximo de 300 caracteres

codigoPuntoVenta

Numérico

No

Si no existe debería enviar en el Etiqueta xsi:nil=”true” en el campo caso contrario debera ser mayor a 0 y menor a 9999

fechaEmision

Fecha

Si

Deberá estar en formato UTC Extendido, por ejemplo: “2019-02-13T08:32:12”

nombreRazonSocial

Alfanumérico

Si

Máximo de 200 caracteres

codigoTipoDocumentoIdentidad

Numérico

Si

Puede tener valores del 1 al 9

numeroDocumento

Alfanumérico

Si

Máximo de 20 caracteres

complemento

Alfanumérico

No

Solo se podrá enviar cuando el tipoDocumentoIdentidad es igual 1, pero puede ser nulo agregando en el Etiqueta xsi:nil=”true”

codigoCliente

Alfanumérico

Si

Máximo de 100 caracteres

nitOperadorTurismo

Alfanumérico

Si

Máximo de 20 caracteres

razonSocialOperadorTurismo

Alfanumérico

Si

Máximo de 100 caracteres

cacntidadHuespedes

Numérico

Si

Puede tener valores entre 1 y 9999

cantidadHabiitaciones

Numérico

Si

Puede tener valores entre 1 y 9999

cantidadMayores

Numérico

Si

Puede tener valores entre 1 y 9999

cantidadMenores

Numérico

Si

Máximo hasta la 9999, también puede ser 0

fechaIngresoHospedaje

Fecha

Si

Deberá estar en formato UTC Extendido, por ejemplo: “2019-02-13T08:32:12”

codigoMetodoPago

Numérico

Si

Puede tener valores del 1 al 99

numeroTarjeta

Numérico

Si

Puede tener valores del 1 al 9999999999999999

montoTotal

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

montoDescuento

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

codigoMoneda

Numérico

Si

Puede tener valores del 1 al 9999

tipoCambio

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

montoTotalMoneda

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

leyenda

Alfanumérico

Si

Deberá ser una de las leyendas asociadas a la actividad enviadas al momento de la sincronización, Máximo será de 200 caracteres.

usuario

Alfanumérico

Si

Podrá ser de hasta 100 caracteres, deberá ser descriptivo, por ejemplo: JPEREZ

codigoDocumentoSector

Numérico

Si

Para la nota Fiscal de Exportación de Servicio Turístico y Hospedaje deberá ser 21.

codigoExcepcionDocumento

Numérico

No

Autorización del emisor para aceptar un NIT o CI Invalido. EL valor enviado corresponde al código de recepción de la factura recibida como observada.

DETALLE

actividadEconomica

Numérico

Si

Máximo de hasta 8 digitos

codigoProductoSin

Numérico

Si

Máximo de hasta 8 digitos

codigoProducto

Alfanumérico

Si

Máximo de hasta 50 caracteres

descripcion

Alfanumérico

Si

Máximo de hasta 200 caracteres

codigoTipoHabitacion

Numérico

Si

Máximo hasta 4 digitos

cantidadDias

Numérico

Si

Máximo hasta 4 digitos

pasaporteDocumentoIdentificacion

Alfanumérico

Si

Máximo de hasta 50 caracteres

codigoPais

Numérico

Si

Máximo hasta 4 digitos

unidadMedida

Numérico

Si

Máximo de hasta 4 caracteres

precioUnitario

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

montoDescuento

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

subtotal

Numérico

Si

Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0

Notas

Los archivos XML generados deben estar en formato UTF-8, no en “UTF-8 BOM”, esta configuración debe realizarse antes de la generación del XML, por ejemplo, se tiene el siguiente código en lenguaje C#

xmlDocument doc = new xmlDocument();
XmlNode docNode = doc.CreateXMLDeclaration("1.0", "UTF-8", null);
doc.Appendchild(docNode);

Para la modalidad de Facturación Electrónica en línea cada factura debe ser firmada digitalmente, se puede ver un ejemplo de código de implementación del firmado en JAVA en el apartado Firmado de documentos XML

Las paramétricas a utilizarse en los códigos utilizados en la construcción del XML (Ejemplo codigoTipoDocumentoIdentidad), pueden ser encontrados en los catálogos para facturación electrónica.

 

Archivo XML de Nota Fiscal de Exportación de Servicio Turístico y Hospedaje (Descargar)

<?xml version="1.0" encoding="UTF-8"?>

<notaFiscalComputarizadaExportacionServicioTuristicoHospedaje xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="notaFiscalComputarizadaExportacionServicioTuristicoHospedaje.xsd">

   <cabecera>

      <nitEmisor>4933001012</nitEmisor>

      <numeroFactura>111</numeroFactura>

      <cuf>a812312f1223892b</cuf>    

      <cufd>4c4a63478ac61191d54b9c3774aa7ea1</cufd>

      <codigoSucursal>0</codigoSucursal>

      <direccion>Avenida siempre viva Nro. 100</direccion>

      <codigoPuntoVenta xsi:nil="true" />

      <fechaEmision>2012-12-13T12:12:12</fechaEmision>

      <nombreRazonSocial>Cliente 1</nombreRazonSocial>

      <codigoTipoDocumentoIdentidad>1</codigoTipoDocumentoIdentidad>

      <numeroDocumento>4933001</numeroDocumento>

      <complemento xsi:nil="true" />

      <codigoCliente>JDFP</codigoCliente>

      <nitOperadorTurismo>4933001012</nitOperadorTurismo>

      <razonsocialOperadorTurismo>Turismo Internacional</razonsocialOperadorTurismo>

      <cantidadHuespedes>3</cantidadHuespedes>

      <cantidadHabitaciones>1</cantidadHabitaciones>

      <cantidadMayores>1</cantidadMayores>

      <cantidadMenores>2</cantidadMenores>

      <fechaIngresoHospedaje>2012-12-13T12:12:12</fechaIngresoHospedaje>

      <codigoMetodoPago>2</codigoMetodoPago>

      <numeroTarjeta>4846516846814</numeroTarjeta>

      <montoTotal>123.45</montoTotal>

      <montoDescuento xsi:nil="true" />

      <codigoMoneda>689</codigoMoneda>

      <tipoCambio>1.00</tipoCambio>

      <montoTotalMoneda>123.45</montoTotalMoneda>

      <leyenda>Ley N° 453: Los servicios deben suministrarse en condiciones de inocuidad, calidad y seguridad</leyenda>

      <usuario>GJOFRE</usuario>

      <codigoDocumentoSector>21</codigoDocumentoSector>

      <codigoExcepcionDocumento xsi:nil ="true"></codigoExcepcionDocumento>

   </cabecera>

   <detalle>

      <actividadEconomica>1076</actividadEconomica>

      <codigoProductoSin>1921000</codigoProductoSin>

      <codigoProducto>1</codigoProducto>

      <descripcion>Hostal El Sueño Más Reparador</descripcion>

      <codigoTipoHabitacion>1234</codigoTipoHabitacion>

      <cantidadDias>1</cantidadDias>

      <detalleDocumentos>

         <pasaporteDocumentoIdentificacion>6265474</pasaporteDocumentoIdentificacion>

         <codigoPais>382</codigoPais>

      </detalleDocumentos>

      <unidadMedida>1</unidadMedida>

      <precioUnitario>123.45</precioUnitario>

      <montoDescuento xsi:nil="true" />

      <subTotal>123.45</subTotal>

   </detalle>

</notaFiscalComputarizadaExportacionServicioTuristicoHospedaje>

 


Archivo XSD para Nota Fiscal de Exportación de Servicio Turístico y Hospedaje (Descargar)

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attributeFormDefault="unqualified" elementFormDefault="qualified">

   <xs:element name="notaFiscalComputarizadaExportacionServicioTuristicoHospedaje ">

      <xs:complexType>

         <xs:sequence>

            <xs:element name="cabecera">

               <xs:complexType>

                  <xs:sequence>

                     <xs:element name="nitEmisor">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minExclusive value="1" />

                              <xs:maxInclusive value="9999999999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="numeroFactura">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="99999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cuf">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="100" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                   <xs:element name="cufd">

                        <xs:simpleType>

                        <xs:restriction base="xs:string">

                        <xs:minLength value="1" />

                        <xs:maxLength value="100" />

                        </xs:restriction>

                        </xs:simpleType>

                    </xs:element>

                     <xs:element name="codigoSucursal">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="0" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="direccion">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="300" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoPuntoVenta" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:maxInclusive value="9999" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="fechaEmision" type="xs:dateTime" />

                     <xs:element name="nombreRazonSocial">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="100" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoTipoDocumentoIdentidad">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="numeroDocumento">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="20" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="complemento" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:maxLength value="5" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoCliente">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="100" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="nitOperadorTurismo" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:maxLength value="20" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="razonsocialOperadorTurismo" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:maxLength value="100" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cantidadHuespedes">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cantidadHabitaciones">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cantidadMayores">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cantidadMenores" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:maxInclusive value="9999" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="fechaIngresoHospedaje" type="xs:dateTime" />

                     <xs:element name="codigoMetodoPago">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="99" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="numeroTarjeta" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minExclusive value="0" />

                              <xs:maxInclusive value="9999999999999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="montoTotal">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="montoDescuento" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoMoneda">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:maxInclusive value="9999" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="tipoCambio">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="montoTotalMoneda">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="leyenda">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="200" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="usuario">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="100" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoDocumentoSector" type="xs:integer" fixed="21" />

                     <xs:element name="codigoExcepcionDocumento" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                             <xs:minInclusive value="1" />

                              <xs:maxInclusive value="999999999999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                  </xs:sequence>

               </xs:complexType>

            </xs:element>

            <xs:element name="detalle" minOccurs="1" maxOccurs="unbounded">

               <xs:complexType>

                  <xs:sequence>

                     <xs:element name="actividadEconomica">

                        <xs:simpleType>

                           <xs:restriction base="xs:long">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="99999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoProductoSin">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="99999999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoProducto">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="50" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="descripcion">

                        <xs:simpleType>

                           <xs:restriction base="xs:string">

                              <xs:minLength value="1" />

                              <xs:maxLength value="200" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="codigoTipoHabitacion" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:maxInclusive value="9999" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="cantidadDias" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:maxInclusive value="9999" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="detalleDocumentos" minOccurs="1" maxOccurs="unbounded">

                        <xs:complexType>

                           <xs:sequence>

                              <xs:element name="pasaporteDocumentoIdentificacion" nillable="true">

                                 <xs:simpleType>

                                    <xs:restriction base="xs:string">

                                       <xs:maxLength value="50" />

                                    </xs:restriction>

                                 </xs:simpleType>

                              </xs:element>

                              <xs:element name="codigoPais" nillable="true">

                                 <xs:simpleType>

                                    <xs:restriction base="xs:integer">

                                       <xs:maxInclusive value="9999" />

                                    </xs:restriction>

                                 </xs:simpleType>

                              </xs:element>

                           </xs:sequence>

                        </xs:complexType>

                     </xs:element>

<xs:element name="unidadMedida">

                         <xs:simpleType>

                           <xs:restriction base="xs:integer">

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="precioUnitario">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="montoDescuento" nillable="true">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                     <xs:element name="subTotal">

                        <xs:simpleType>

                           <xs:restriction base="xs:decimal">

                              <xs:totalDigits value="20" />

                              <xs:fractionDigits value="5" />

                              <xs:minExclusive value="0" />

                           </xs:restriction>

                        </xs:simpleType>

                     </xs:element>

                  </xs:sequence>

               </xs:complexType>

            </xs:element>

         </xs:sequence>

      </xs:complexType>

   </xs:element>

</xs:schema>