Comunicación entre Receptor Electrónico y DGII
La forma de comunicación del emisor electrónico con la DGII y su cliente (receptor) electrónico es mediante servicios web REST.
Para el intercambio de información, se estará utilizando el lenguaje extensible de marcas (XML), un estándar que permite el intercambio de información entre plataformas heterogéneas, en este caso, entre los software de facturación de los contribuyentes.
¿Qué es un servicio web o web services?
Es un método de comunicación entre dos aparatos electrónicos en una red, se trata de una tecnología mediante la que dos máquinas (o aplicaciones) se comunican entre sí usando tecnología de Internet.
Esta tecnología se caracteriza por estos dos rasgos:
Multiplataforma
Cliente y servidor no tienen por qué contar con la misma configuración para comunicarse. El servicio web se encarga de hacerlo posible.
Distribuida
Por lo general, un servicio web no está disponible para un único cliente, sino que son diferentes los que acceden a él a través de Internet.
Cuando se utiliza un web service, un cliente manda una solicitud a un servidor, desencadenando una acción por parte de este. A continuación, el servidor devuelve una respuesta al cliente.
¿Qué es un XML?
XML o Lenguaje de Marcado Extensible es un formato de texto que se utiliza para almacenar e intercambiar datos estructurados, bien sea que se trate de documentos, configuraciones, transacciones o simplemente datos. Es un lenguaje de marcado que define la estructura y el significado de los datos.

El formato XML de DGII tiene varias secciones donde algunos de los campos son de carácter obligatorio, otros opcionales y algunos condicionales, esta información viene correctamente documentada en la guía que comparte DGII.
Si utilizamos el ejemplo del XML anterior (y lo documentamos elaborando una guía para que las personas involucradas en las adecuaciones necesarias para generar el archivo electrónico tengan mayor detalle y puedan identificar qué informaciones son obligatoria, cuales son condicionales y cuales son obligatorios), tendríamos un resultado como el siguiente:
Detalle: Debe contener el nombre de la persona a la que se hace referencia.
Tipo de dato: String
Necesidad: Obligatorio
Detalle: Debe contener el apellido de la persona a la que se hace referencia.
Tipo de dato: String
Necesidad: Obligatorio
Detalle: Debe contener el segundo apellido de la persona a la que se hace referencia, solo informar si existe un segundo apellido.
Tipo de dato: String
Necesidad: No obligatorio
Detalle: Debe contener el ID de la persona a la que se hace referencia.
Tipo de dato: Number
Necesidad: Obligatorio
Detalle: Debe contener el día de nacimiento de la persona a la que se hace referencia.
Tipo de dato: Number
Necesidad: Obligatorio
Detalle: Debe contener el mes de nacimiento de la persona a la que se hace referencia.
Tipo de dato: Number
Necesidad: Obligatorio
Detalle: Debe contener el año de nacimiento de la persona a la se hace referencia.
Tipo de dato: Number
Necesidad: Obligatorio
Detalle: Debe contener el estado civil de la persona a la que se hace referencia.
Solo se aceptan: Casado / Soltero / Union Libre.
Tipo de dato: String
Necesidad: Obligatorio
Detalle: Debe contener el nombre de la pareja de la persona a la que se hace referencia. Esta información es condicional a que Estado Civil sea igual a Casado o Soltero, de lo contrario no se debe informar.
Tipo de dato: String
Necesidad: Condicional