XML y XSD – Factura de Hoteles Contingencia

Nombre Campo

Tipo Dato

Obligatorio

Descripción

CABECERA

nitEmisor

Numérico

Si

Nit que corresponde a la persona o empresa que está emitiendo la factura, máximo de 13 caracteres.

numeroFactura

Numérico

Si

Numeración propia que se le asigna a una factura, máximo de 8 caracteres.

Cuf

Alfanumérico

Si

Código único de facturación(CUF) debe ser generado de acuerdo al algoritmo indicado, máximo de 100 caracteres.

cufd

Alfanumérico

Si

Código único de facturación diario(CUFD) obtenerse a través del servicio web correspondiente, máximo de 100 caracteres.

codigoSucursal

Numérico

Si

Código de la sucursal que está emitiendo la factura, de acuerdo al registro en el Padrón por ejemplo: sucursal = 0 (casa matriz), máximo hasta la 9999.

direccion

Alfanumérico

Si

Dirección de la sucursal de acuerdo al registro en el Padrón, máximo de 300 caracteres.

codigoPuntoVenta

Numérico

No

Punto de Venta creado mediante el servicio web correspondiente, si no existe debería enviar en la Etiqueta xsi:nil=”true” o 0 en el campo, caso contrario deberá ser mayor a 0 y menor a 9999.

fechaEmision

Fecha

Si

Fecha de Emisión de la factura en el momento que ocurre el hecho generador, deberá estar en formato UTC Extendido, por ejemplo: “2019-02-13T08:32:12.215”.

nombreRazonSocial

Alfanumérico

Si

Razón Social o nombre de la persona o empresa a la cual se está facturando, máximo de 200 caracteres.

codigoTipoDocumentoIdentidad

Numérico

Si

Valor del Tipo de Documento al cual se emitirá la factura, debe ser un valor de los existentes en el método de sincronización puede tener valores del 1 al 9 por ejemplo: 1= CI.

numeroDocumento

Alfanumérico

Si

Número que corresponde al Tipo de Documento Identidad definido y al cual se realizará la facturación, máximo de 20 caracteres por ejemplo: 5537760 (número de CI).

complemento

Alfanumérico

No

Valor que se enviará cuando el Documento de Identidad sea igual 1 y cuando el CI posea este valor que otorga el SEGIP en casos de cédulas de identidad con número duplicado, caso contrario deberá enviarse el valor  nulo agregando en el Etiqueta xsi:nil=”true”.

codigoCliente

Alfanumérico

Si

Código de identificación única de un cliente deberá ser asignado por el sistema de facturación del contribuyente, máximo de 100 caracteres.

cantidadHuespedes

Numérico

Si

Número de huéspedes por los que se emitirá la factura. Puede tener valores de 1 a 9999.

cantidadHabitaciones

Numérico

Si

Número de habitaciones en las que se hospedaran. Puede tener valores de 1 a 9999

cantidadMayores

Numérico

Si

Número de personas mayores de edad por las cuales se presta servicios. Puede tener valores de 1 a 9999.

cantidadMenores

Numérico

Si

Número de personas menores de edad por las cuales se presta servicios. Puede tener valores de 1 a 9999

fechaIngresoHospedaje

Fecha

Si

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

codigoMetodoPago

Numérico

Si

Valor del método de pago con el que se cancelará la factura, debe ser un valor de los existentes en el método de sincronización, puede tener valores de 1 a 99. Por ejemplo 1= Efectivo.

numeroTarjeta

Numérico

No

Cuando el método de pago = 2 (Tarjeta), debe especificarse este valor debiendo ser mayor a 0 y puede tener hasta 16 caracteres, si el método de pago es diferente debería enviar la Etiqueta xsi:nil=”true”.

El valor a enviarse debe ser ofuscado con los primeros y últimos 4 dígitos en claro y ceros al medio. Ej: 4797000000007896.

montoTotal

Numérico

Si

Monto total por el cual se realiza el hecho generador, deberá ser mayor a 0 es un decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales.

montoDescuento

Numérico

No

Monto de descuento sobre el monto total facturado, puede ser decimal con 20 dígitos en la parte entera y con hasta 5 decimales, si no existe deberá ser nulo.

codigoMoneda

Numérico

Si

Es la moneda en la cual se realiza el hecho generador, debe ser un valor de los existentes en el método de sincronización, puede tener valores del 688 al 2080, por ejemplo: 688 = Boliviano

tipoCambio

Numérico

Si

Tipo de cambio de acuerdo a la moneda en la que se realiza el hecho generador, si el código de moneda es boliviano (688) deberá ser igual a 1. Decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0.

montoTotalMoneda

Numérico

Si

Es el Monto Total expresado en el tipo de moneda, si el código de moneda es boliviano (688) deberá ser igual al monto total. 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 factura de hoteles deberá ser 8.

codigoExcepcionDocumento

Numérico

No

Autorización para la Excepción de un documento. Es la Declaració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.

caed

Alfanumérico     

Si

Código de Autorización de Emisión de documentos Fiscales. Máximo de 100 caracteres.

DETALLE

actividadEconomica

Numérico

Si

Actividad económica relacionada al NIT, se debe obtener del servicio de sincronización, máximo de hasta 8 caracteres.

codigoProductoSin

Numérico

Si

Producto relacionado a la actividad, se debe obtener del servicio de sincronización, máximo de hasta 8 caracteres.

codigoProducto

Alfanumérico

Si

Código que otorga el contribuyente a su servicio o producto, máximo de hasta 50 caracteres.

codigoTipoHabitacion

Numérico

Si

Código del tipo de habitación del hospedaje. Máximo de hasta 4 caracteres.

Descripción

Alfanumérico

Si

Descripción que otorga el contribuyente a su servicio o producto, máximo de hasta 200 caracteres.

cantidadDias

Numérico

No

Número de días del servicio de hospedaje, máximo de hasta 4 caracteres.

unidadMedida

Numérico

Si

Código de la unidad de medida obtenido del método de sincronización,  máximo de hasta 4 caracteres.

precioUnitario

Numérico

Si

Precio que otorga el contribuyente a su servicio o producto, decimal con hasta 20 dígitos en la parte entera y con hasta 5 decimales, deberá ser mayor a 0.

detalleDocumentos

Etiqueta Repetible

Si

Actividad económica relacionada al NIT, se debe obtener del servicio de sincronización, máximo de hasta 8 caracteres.

 

 

 

detalleDocumentos

pasaporteDocumentoIdentificacion

Alfanumérico

No

Número del documento de identificación de los hospedados, máximo de hasta 50 caracteres.

codigoPais

Numérico

No

Código del país del que provienen los hospedados, se debe obtener del servicio de sincronización, máximo de hasta 4 caracteres.

 

 

 

 

montoDescuento

Numérico

No

Monto de descuento sobre el producto o servicio específico, puede ser decimal con 20 dígitos en la parte entera y con hasta 5 decimales, si no existe deberá ser nulo.

subTotal

Numérico

Si

El subtotal siempre será en bolivianos (cantidad * precio unitario), 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);

Una factura de Hoteles adicionalmente a los servicios de hotelería puede incluir servicios conexos. Pero, si se quiere emitir una factura solo por servicios conexos, debe utilizarse una factura estándar.

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.

Al emitir la factura manual de contingencia, registrar la fecha de emisión con el formato de hora, minuto, segundo para que al transcribirla se disponga de dicha información.

 

 

Archivo XML de la Factura de Hoteles Contingencia (Descargar)

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

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

<cabecera>

<nitEmisor>456489012</nitEmisor>

<numeroFactura>800</numeroFactura>

<cuf>B2AFA11610013356DA53530BB3F854CC7BF53405</cuf>

<cufd>F00F840D939A5512913A06FC88ADEA84</cufd>

<codigoSucursal>0</codigoSucursal>

<direccion>C. Emiliano Zapata Nro 3121</direccion>

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

<fechaEmision>2019-07-26T15:37:12.208</fechaEmision>

<nombreRazonSocial>Pablo Perez</nombreRazonSocial>

<codigoTipoDocumentoIdentidad>5</codigoTipoDocumentoIdentidad>

<numeroDocumento>1020703023</numeroDocumento>

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

<codigoCliente>P-Perez011</codigoCliente>

<cantidadHuespedes>2</cantidadHuespedes>

<cantidadHabitaciones>1</cantidadHabitaciones>

<cantidadMayores>2</cantidadMayores>

<cantidadMenores xsi:nil="true" />

<fechaIngresoHospedaje>2019-07-25T08:32:27.215</fechaIngresoHospedaje>

<codigoMetodoPago>1</codigoMetodoPago>

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

<montoTotal>700</montoTotal>

<montoDescuento xsi:nil="true" />

<codigoMoneda>688</codigoMoneda>

<tipoCambio>1</tipoCambio>

<montoTotalMoneda>700</montoTotalMoneda>

<leyenda>Ley N° 453: El proveedor debe exhibir certificaciones de habilitación o documentos que acrediten las capacidades u ofertas de servicios especializados.</leyenda>

<usuario>jmamani</usuario>

<codigoDocumentoSector>8</codigoDocumentoSector>

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

<caed>aUFBQUFBS0FCQUFPSlRVQUFWciUpSkE=0105</caed>

</cabecera>

<detalle>

<actividadEconomica>620100</actividadEconomica>

<codigoProductoSin>83141</codigoProductoSin>

<codigoProducto>PM-3123-BS</codigoProducto>

<codigoTipoHabitacion>1</codigoTipoHabitacion>

<descripcion>Pago por la habitación</descripcion>

<cantidadDias>1</cantidadDias>

<unidadMedida>58</unidadMedida>

<precioUnitario>700</precioUnitario>

<detalleDocumentos>

<pasaporteDocumentoIdentificacion>1875646011</pasaporteDocumentoIdentificacion>

<codigoPais>379</codigoPais>

</detalleDocumentos>

<montoDescuento xsi:nil="true" />

<subTotal>700</subTotal>

</detalle>

</facturaComputarizadaHotel>

 

 

Archivo XSD para Factura de Hoteles Contingencia (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="facturaComputarizadaHotel">

      <xs:complexType>

         <xs:sequence>

            <xs:element name="cabecera">

                <xs:complexType>

                  <xs:sequence>

                     <xs:element name="nitEmisor">

                        <xs:simpleType>

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

                              <xs:minInclusive 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:minExclusive value="0" />

                              <xs:maxInclusive value="9999" />

                           </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="200" />

                           </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="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:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </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="8" />

                       <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:element name="caed">

                          <xs:simpleType>

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

                          <xs:minLength value="1" />

                          <xs:maxLength value="100" />

                          </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="codigoTipoHabitacion" nillable="true">

                        <xs:simpleType>

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

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </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="cantidadDias" nillable="true">

                        <xs:simpleType>

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

                              <xs:minInclusive value="1" />

                              <xs:maxInclusive value="9999" />

                           </xs:restriction>

                        </xs:simpleType>

                     </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="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:minExclusive value="0" />

                                    </xs:restriction>

                                 </xs:simpleType>

                              </xs:element>

                           </xs:sequence>

                        </xs:complexType>

                     </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>