XML y XSD – Factura Comercial Libre Consignación YPFB

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”.

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).

consignatario

Alfanumérico

Si

Máximo de 100 caracteres

direccionConsignatario

Alfanumérico

Si

Máximo de 300 caracteres

atencionConsignatario

Alfanumérico

Si

Máximo de 100 caracteres

destinatario

Alfanumérico

Si

Máximo de 100 caracteres

atencionDestinatario

Alfanumérico

Si

Máximo de 300 caracteres

faxExportador

Alfanumérico

Si

Máximo de 100 caracteres

numeroContrato

Alfanumérico

Si

Máximo de 100 caracteres

contactoExportador

Alfanumérico

Si

Máximo de 100 caracteres

telefonoExportador

Alfanumérico

Si

Máximo de 100 caracteres

bancoPago

Alfanumérico

Si

Máximo de 100 caracteres

numeroCuentaPago

Alfanumérico

Si

Máximo de 100 caracteres

nombreCuentaPago

Alfanumérico

Si

Máximo de 100 caracteres

codigoSwiftPago

Alfanumérico

Si

Máximo de 100 caracteres

CodigoFedwirePago

Alfanumérico

Si

Máximo de 100 caracteres

codigoChipsPago

Alfanumérico

Si

Máximo de 100 caracteres

plazaPago

Alfanumérico

Si

Máximo de 100 caracteres

direccionPago

Alfanumérico

Si

Máximo de 100 caracteres

incoterm

Alfanumérico

Si

Máximo de 100 caracteres

modalidadPago

Alfanumérico

Si

Máximo de 100 caracteres

terminosPago

Alfanumérico

Si

Máximo de 100 caracteres

movimiento

Alfanumérico

Si

Máximo de 100 caracteres

paisOrigen

Numérico

Si

Valores permitidos de 1 hasta 9999

paisDestino

Numérico

Si

Valores permitidos de 1 hasta 9999

exportador

Alfanumérico

Si

Máximo de 100 caracteres

embarque

Alfanumérico

Si

Máximo de 100 caracteres

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.

codigoCliente

Alfanumérico

Si

Máximo de 100 caracteres, deberá ser asignado por el sistema de facturación del contribuyente

montoTotal

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

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 enviada 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 comercial libre consignación YPFB deberá ser 26.

DETALLE

actividadEconomica

Numérico

Si

Máximo de hasta 8 caracteres.

codigoProductoSin

Numérico

Si

Máximo de hasta 8 caracteres

codigoProducto

Alfanumérico

Si

Máximo de hasta 50 caracteres

partidaArancelaria

Alfanumérico

Si

Máximo de hasta 50 caracteres

descripcion

Alfanumérico

Si

Máximo de hasta 500 caracteres

cantidad

Numérico

Si

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

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

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 la Factura Libre Consignación YPFB (Descargar)

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

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

<cabecera>

<nitEmisor>1020269020</nitEmisor>

<numeroFactura>77</numeroFactura>

<cuf>1eecd7b50eef5e5bde755ca05f735</cuf>

<cufd>4c4a63478ac61191d54b9c3774aa7ea1</cufd>

<codigoSucursal>104</codigoSucursal>

<direccion>Av Doble Vía La Guardia S/N</direccion>

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

<fechaEmision>2019-03-07T15:08:36.169</fechaEmision>

<codigoTipoDocumentoIdentidad>5</codigoTipoDocumentoIdentidad>

<numeroDocumento>99005</numeroDocumento>

<codigoMetodoPago>1</codigoMetodoPago>

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

<consignatario>Corporación Paraguaya de Productos derivados del Petroleo (COPETROL S.A)</consignatario>

<direccionConsignatario>Av Mariscal Lopez 55 casi Rogelio Benitez Asunción Paraguay</direccionConsignatario>

<atencionConsignatario>Juan Perez</atencionConsignatario>

<destinatario>Corporación Paraguaya de Productos derivados del Petroleo (COPETROL S.A)</destinatario>

<direccionDestinatario>Av Mariscal Lopez 55 casi Rogelio Benitez Asunción Paraguay</direccionDestinatario>

<atencionDestinatario>Juan Perez</atencionDestinatario>

<faxExportador>591-3-399999</faxExportador>

<numeroContrato>Orden de Venta No 2332</numeroContrato>

<contactoExportador>Juan Perez Perez</contactoExportador>

<telefonoExportador>591-3-399999</telefonoExportador>

<bancoPago>Standard Chartered Bank</bancoPago>

<numeroCuentaPago>3333-999999-111</numeroCuentaPago>

<nombreCuentaPago>Banco Central de Bolivia</nombreCuentaPago>

<codigoSwiftPago>ABCDE12312</codigoSwiftPago>

<CodigoFedwirePago>111111111</CodigoFedwirePago>

<codigoChipsPago>9999</codigoChipsPago>

<plazaPago>New York U.S.A.</plazaPago>

<direccionPago>One Madison Avenue New York, New York 15125</direccionPago>

<incoterm>FCA ABC</incoterm>

<modalidadPago>Segun contrato orden de venta No 2332</modalidadPago>

<terminosPago>Transferencia Bancaria</terminosPago>

<movimiento>XXXYYYZZZ</movimiento>

<paisOrigen>379</paisOrigen>

<paisDestino>494</paisDestino>

<exportador>YPFB</exportador>

<embarque>XXXYYYZZZ</embarque>

<codigoMoneda>689</codigoMoneda>

<tipoCambio>6.96</tipoCambio>

<codigoCliente>12</codigoCliente>

<montoTotal>2404888.80</montoTotal>

<montoTotalMoneda>345530.00</montoTotalMoneda>

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

<usuario>SA21</usuario>

<codigoDocumentoSector>26</codigoDocumentoSector>

</cabecera>

<detalle>

<actividadEconomica>61005</actividadEconomica>

<codigoProductoSin>12312312</codigoProductoSin>

<codigoProducto>1323</codigoProducto>

<partidaArancelaria>2711.19.00.10</partidaArancelaria>

<descripcion>Gas licuado de Petroleo </descripcion>

<cantidad>1000000</cantidad>

<unidadMedida>1</unidadMedida>

<precioUnitario>345.530</precioUnitario>

<subTotal>346530.00</subTotal>

</detalle>

</notaFiscalComputarizadaLibreConsignacionYPFB>

 

 

Archivo XSD para Factura Libre Consignación YPFB (Descargar)

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

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

<xs:element name="notaFiscalComputarizadaLibreConsignacionYPFB">

<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="codigoTipoDocumentoIdentidad" type="xs:integer" fixed="5" />

<xs:element name="numeroDocumento" type="xs:integer" fixed="99005" />

<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:maxInclusive value="9999999999999999" />

<xs:minExclusive value="0" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="consignatario" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="direccionConsignatario">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="300" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="atencionConsignatario" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="destinatario" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="direccionDestinatario">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="300" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="atencionDestinatario" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="faxExportador" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="numeroContrato" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="contactoExportador" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="telefonoExportador" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="bancoPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="numeroCuentaPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="nombreCuentaPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="codigoSwiftPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="CodigoFedwirePago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="codigoChipsPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="plazaPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="direccionPago" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="incoterm">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="modalidadPago">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="terminosPago">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="movimiento">

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="paisOrigen">

<xs:simpleType>

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

<xs:maxInclusive value="9999" />

<xs:minExclusive value="0" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="paisDestino">

<xs:simpleType>

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

<xs:maxInclusive value="9999" />

<xs:minExclusive value="0" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="exportador" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="embarque" >

<xs:simpleType>

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

<xs:minLength value="1" />

<xs:maxLength value="100" />

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

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

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

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="cantidad">

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