XML para CFDI con Addenda o Complemento

La presente información complementa a la documentación del POST Agregar CFDI 4.0

Cuando se desea timbrar un CFDI que deba contener una addenda o un complemento, se deberá proceder de la siguiente manera:

  1. Construir el XML para el CFDI tal como se establece en la documentación para el POST Agregar CFDI 4.0.

  2. Después del tag de final de comprobante “/Comprobante”, deberá agregar el tag especial de Sinube “addendasinube/”.

  3. Posteriormente, se agrega el nodo “Addenda” con toda la información necesaria tal como se explica a continuación.

Contenido del nodo Addenda

Dentro del nodo “Addenda” podemos identificar las siguientes tres secciones:

  1. Encabezado (obligatoria)
  2. Campos generales (opcional)
  3. Productos (opcional)

Describiremos brevemente cada una de ellas, y posteriormente las explicaremos mediante un ejemplo.

Todas las addendas incluyen encabezado, muchas de ellas incluyen tanto campos generales como productos, hay algunas que solo incluyen campos generales y otras que solo incluyen productos.

Nodo Addenda: Encabezado

Esta sección sirve para identificar la addenda de que se trata, tal como está guardada dentro de Sinube; y también contiene la estructura completa de la addenda que aparecerá en el CFDI ya timbrado. Esta estructura se incluye como una cadena de texto entre comillas dobles, y dentro de esta los caracteres especiales como comillas simples (‘’), comillas dobles (“”), signos: menor que (<), mayor que (>), ampersand (&), etcétera, se representan con sus códigos ASCII correspondientes y se interpretan en el CFDI final.

La estructura de la addenda debe conservarse tal como es entregada por Sinube sin hacerle modificaciones, ya que contiene códigos especiales que son interpretados por Sinube al generar el XML del CFDI que se envía al PAC para ser timbrado.

Nodo Addenda: Campos generales

Esta sección corresponde al nodo “Campos” y junto con la sección de productos funciona a manera de diccionario de datos, y es la “fuente” de la información que se llena dentro de la estructura de la addenda que contiene la sección Encabezado.

Por ejemplo, si en la estructura aparece la variable:
image

Sinube buscará dentro del nodo principal “Campos” el subnodo “Campo” con ese nombre y sustituirá la variable de la estructura por el valor del campo:

El resultado dentro del CFDI será:
Tipo=“1”

El valor2 es la descripción o significado del valor para el campo, no es obligatorio ni se incluye en el CFDI.

Si la addenda no incluye campos generales, únicamente se pone un único tag “Campos/” seguido del nodo “Productos”

Nodo Addenda: Productos

Esta sección está reservada para las addendas que requieren incluir datos adicionales por cada producto. Funciona igual que la sección de Campos, y sirve como diccionario de datos para la estructura de la addenda. La diferencia es que el contenido del nodo “NeoProductos” que aparezca dentro de la estructura de la addenda se repetirá tantas veces como subnodos individuales “Producto” aparezcan dentro del nodo principal “Productos”.

Por ejemplo, si dentro de la estructura aparece la variable:
image

Sinube buscará dentro del nodo “Productos” todos los subnodos “Producto” en donde aparezca ese campo, y esa sección de la estructura se repetirá por cada uno de ellos:

El resultado dentro del CFDI se verá así*:
nombreAlumno=“Alberto Pedraza Rivas”
nombreAlumno=“Jimena Pedraza Rivas”

(*) El tag “NeoProductos” es para uso exclusivo de Sinube y no se incluye dentro del CFDI final.

Si la addenda no incluye datos para productos, únicamente se pone un único tag image seguido del nodo final image , indicando así el final de la addenda.

El XML para hacer uso de la API de timbrado de CFDI incluye el nodo “Comprobante” que es el cuerpo del CFDI estándar sin addenda. Le sigue el tag “addendasinube”, que es el que le indica a Sinube que el CFDI incluye una addenda. A continuación, el nodo “Addenda” le proporciona a Sinube la información y contenido de la addenda a incluir en el CFDI. Todos los atributos son requeridos, pero el más importante es el de “estructura”, pues es el que contiene la forma de la addenda dentro del CFDI final. El nodo “Campos” proporciona los valores que serán reemplazados dentro de la estructura.

El XML para la API debe construirse igual al mostrado, y además del CFDI estándar, para la addenda solamente se requiere reemplazar mediante programación los valores del atributo “valor” de cada subnodo “Campo”, dependiendo del campo o variable de que se trate.

Importante: Cuando existan varios detalles para un nodo o llenado de campos, por ejemplo varias direcciones o mercancías, no se deben repetir los campos, sino que se deben incluir en el atributo “valor” de cada campo, indicando con tags de inicio y fin, “valor” y “/valor”, para cada dato separado.

Los tags “valor” y “/valor” se pueden anidar dependiendo si se trata de un detalle principal o un detalle dentro de otro detalle. Como referencia, el atributo “detalle” de cada subnodo “Campo” indicará si se trata de un detalle a primer nivel o, si está después de dos puntos, está dentro de otro detalle. Por ejemplo “Mercancias:Transporta” es un detalle dentro del detalle “Mercancias”. O “Figura:Partes” está dentro del detalle “Figura”.

A continuación se incluye un Ejemplo del XML para Timbrar un CFDI 4.0 con Complemento Carta Porte 3.1
Ejemplo XML CFDI40+CCP31.pdf (105,5 KB)