Documentación para implementación de CFDI 3.3

Configuración Portal Externos

Los datos del emisor siempre se han guardado en el portal y no son parte de la información que se envía en el layout. Por este motivo es necesario ingresar el portal de configuración del cliente y editar nuevamente los datos fiscales de la empresa. Principalmente seleccionar y guardar el régimen fiscal del cliente en el combo de selección.

Tome en cuenta que el sistema va a presentar un régimen preseleccionado, pero ese aun no está guardado.

Si al intentar facturar recibe un mensaje de error que dice, Error: No ha registrado el régimen fiscal codificado del cliente en el portal de externos.

Quiere decir que no ha realizado este paso

Archivos y ligas de apoyo para desarrollo

Layout estandar (2018-01-08)

Descargar Layout Estándar

Catálogos del SAT (2018-04-13)

Catálgos del SAT

Nota

El SAT publica sus catálogos en formato XLS Este archivo es en formato SQLite3 y se generó importando la información de los XLS.

Se ofrece como una poyo para poder acceder a la información de forma más apropiada pero no puedo ofrecer la garantía de que la importación haya sido 100% correcta o que la información se encuentre al día.

Ubicación de información del SAT

Anexo 20


Liga para timbrar versión 3.3

https://facturas.easysmart.com.mx/cgi-bin/externos/timbrarGR33

RFC Emisor de Pruebas vigente

  • Persona moral EKU9003173C9
  • Persona física XAMA620210DQ5

Recomendaciones a seguir

Atributos opcionales en nodos del XML

Cuando un nodo/atributo es opcional, en el layout debemos enviar ese dato como vacío (Cero y espacios no se consideran como vacío), para que el sistema lo quite. Por ejemplo:

En el nodo Receptor, nombre del receptor es opcional. Por lo tanto si queremos excluir el nombre del XML, debemos enviar la línea de RECEPTOR como:

RECEPTOR:AAA010101AAA01||email@cliente.com.mx

Observación

Note como existen dos "pipes" seguidos después del RFC, indicando que el nombre está omitido. Para excluir un nodo opcional, no envíe la línea de ese nodo.

Formato de Fecha

Se tiene implementados los siguientes formatos de fecha en el nodo COMPROBANTE:

  • DD/MM/AAAA
  • DD/MM/AA
  • AAAA-MM-DD
  • AAAA-MM-DDTHH:MM:SS

Horario Local

Por conveniencia a los programadores el sistema siempre ha permitido enviar la fecha sin hora. El sistema usa lo hora del centro para agregarla a la fecha de facturación.

A partir de Octubre del 2019, el SAT implementó la regla de que la hora debe estar calculada en base a la hora local del lugar de expedición del emisor. Por lo tanto debe utilizar al formato de fecha y hora completo si:

  • Está facturando fuera de la zona del centro
  • Su cliente factura en un lugar pero la emisión es de un comprobante ubicado en una zona diferente. Por ejemplo, el cliente genera una factura en Aguascalientes con un lugar de expedición en Tijuana.

Impuestos

  • El impuesto exento en un producto, se debe reportar sin tasa ni importe, ejemplo:
IMPUESTO_LINEA:base|clave_impuesto|Exento
  • Impuesto Exento, no se debe enviar en los totales
  • La lógica es:
    • Como Exento no tiene Tasa asociada, entonces no se reporta : Tasa e Importe en las líneas
    • Como no hay importes, no se genera sumatoria de importes a reportar
    • Como no hubo sumatoria reportada, no hay impuestos totales a reportar
  • Impuestos o retenciones no generadas
    • Supongamos que no se generaron retenciones en los conceptos.
    • Si no se generaron retenciones en los conceptos, entonces no hay retenciones acumuladas por reportar
    • Si no hay retenciones acumuladas por reportar, el atributo total de retenciones no se debe reportar tampoco. En lugar de "0" debe ir "vacío"

Ejemplo, sin retenciones declaradas, sin traslados declarados y solo una línea de impuestos exentos, que no generan importes a sumar.

IMPUESTOS:|
...
LINEA: ...
IMPUESTO_LINEA:base|clave_impuesto|Exento

Sumatorias

  • La sumatoria de cada tipo de IMPUESTO_LINEA se debe reportar en : IMPUESTO_TRASLADO
  • La sumatoria de IMPUESTO_TRASLADO se debe reportar en : IMPUESTOS:|trasladado
  • La sumatoria de cada tipo de RETENCION_LINEA se debe reportar en : IMPUESTO_RETENIDO
  • La sumatoria de IMPUESTO_RETENIDO se debe reportar en : IMPUESTOS:retenido|
  • La sumatoria de los importes de línea se reporta como el subtotal
  • La sumatoria de los descuentos de línea se reporta en Descuento
  • Total = Subtotal + Impuesto Trasladado + Impuestos Locales - Descuento - Impuestos Retenidos - Retenciones Locales
.             Cant          Precio                 Importe
Linea 1        1 pieza        50                    50.00
                 Descuento           20.00
                 Monto Base          30.00
                 Impuesto 002 - Tasa 0.16    4.80
Linea 2        2 tornillos    20                    40.00
                 Monto Base          40.00
                 Impuesto 002 - Tasa 0.16    6.40
Linea 3        1 tuerca       30                    30.00
                 Monto Base          30.00
                 Impuesto 002 - Tasa 0.16    4.80
Linea 4        1 Manzana      30                    30.00
                 Monto Base          30.00
                 Impuesto 002 - Tasa 0.00    0.00
Linea 5        1 Otra co      30                    30.00
                 Monto Base          30.00
                 Impuesto 002 - Exento       0.00

Subtotal                                            180.00  (50+40+30+30+30)
Descuento                                            20.00  (20+0+0+0+0)
Impuesto 002 Tasa 0.16                               16.00  (4.8+6.4+4.8)
Impuesto 002 Tasa 0.00                                0.00
Total                                               176.00  (180 - 20 + 16 + 0)

IMPUESTO_TRASLADO:002|Tasa|0.16000|16.00
IMPUESTO_TRASLADO:002|Tasa|0.00000|00.00
IMPUESTOS:|16.00

Redondeos

  • Todos los valores numéricos del conceptos pueden ir a cualquier cantidad de decimales que no excedan 6 posiciones
    • Excepto descuento, este debe ir fijo a 2 decimales (no funciona de otra manera)
  • Deben enviar la cantidad de decimales que quieren que aparezcan en el PDF, ejemplo:
    • 1 aparecerá como 1
    • 1.00 aparecerá como 1.00
  • Todos los cálculos de impuestos de línea deben generarlos a 6 decimales
  • Todos los valores totales: subtotal,descuento,total,total impuestos trasladados, total impuestos retenidos, etc.
    • Se deben redondear a 2 decimales
  • Todos los detalles de impuestos a nivel de factura (no de líneas de producto)
    • IMPUESTO_TRASLADO,IMPUESTO_RETENCION
    • Las sumatoria de los conceptos (descuentos, importes, impuestos) se debe hacer al máximo de decimales que usen y después redondear a 2 decimales.
  • Para que el total valide correctamente
    • total = subtotal + impuestos_trasladados + impuestos_locales - impuestos_retenidos - impuestos_locales_retenidos - descuento
    • Todos los valores de la suma deben estar redondeados a 2 decimales al momento de hacer la suma para el total
  • Por último, si recibe errores de sumatorias o redondeos:
    • No asuma que los cálculos son correctos, use una calculadora para corroborar sus operaciones matemáticas
    • Genere un layout con no más de 3 renglones que contengan descuentos y números con decimales
    • Revise todos los cálculos generados en el layout con una calculadora a 6 o más decimales
    • Revise que los importes, montos base, impuestos, etc, calculados por su programa contra los generados por la calculadora sean iguales hasta los 6 decimales
    • Cuando este layout pase las validaciones de redondeos, no debería tener más problemas si incrementa a 5,15,30 o 100 renglones.

Cambios importantes

  • Ya se permite el uso de cualquier caracter en las descripciones de productos excepto el pipe "|"
  • Ya se permiten redondeos a más de 2 decimales en ciertos lugares, ver reglas arriba
  • Ya no es obligatorio que el nombre de la empresa sea igual al del CSD

Efectos del layout en el la versión impresa

  • Descuento en línea de producto
    • Si el valor se envía vacío, se omite el atributo en el XML y por lo tanto la columna de descuento se omite en la representación impresa
      • Ejemplo : LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00|
    • Si el valor se envía como un número mayor o igual a cero entonces la columna se presenta con el valor enviado.
      • Ejemplo : LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00|0.00
  • Decimales : El sistema respeta los decimales reportados en el layout
    • Si envía 1 decimal saldrá un decimal, si envía 2 saldrán 2, etc.

Ejemplos

Factura

EMPRESA:EXTERNOS|testext452|LAN7008173R5|CTE4049|601
COMPROBANTE:3.3|HPR|12171519|12/07/2017|03|Contado|1600.00|100.00|MXN|1|1660.00|I|PUE|20200|
PDF:Aguascalientes, Ags|V9633|12/07/2017|Factura
RESPUESTA:HTML
RECEPTOR:MSO0206067S5|Microflow Softtware SA de CV|G01|
RECEPTOR_DIRECCION:La calle|1000La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
IMPUESTOS:|160.000000
IMPUESTO_TRASLADO:002|Tasa|0.160000|160.00
IMPUESTO_TRASLADO:002|Tasa|0|0.00
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 1|600.00|600.00|100.00|
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00|0.00|
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 3|500.00|500.00|0.00|PREDIAL:12345678
IMPUESTO_LINEA:500.00|002|Tasa|0|0.000000
COMENT: Prueba de observaciones, es opcional y es una sola linea áéíóúñ
FIN:

Nota Crédito

EMPRESA:EXTERNOS|testext452|LAN7008173R5|CTE4049|605
COMPROBANTE:3.3|HPR|12171519|2017-12-01T11:22:00|03|Contado|1600.00|100.00|MXN|1|1660.00|E|PUE|20200|
PDF:Aguascalientes, Ags|V9633|12/07/2017|Nota Crédito
RESPUESTA:HTML
RECEPTOR:MSO0206067S5|Microflow Softtware SA de CV|G01|
RECEPTOR_DIRECCION:La calle|1000La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
IMPUESTOS:|160.000000
IMPUESTO_TRASLADO:002|Tasa|0.160000|160.00
IMPUESTO_TRASLADO:002|Tasa|0|0.00
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 1|600.00|600.00|100.00|
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00|0.00|
IMPUESTO_LINEA:500.00|002|Tasa|0.160000|80.000000
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 3|500.00|500.00|0.00|PREDIAL:12345678
IMPUESTO_LINEA:500.00|002|Tasa|0|0.000000
COMENT: Prueba de observaciones, es opcional y es una sola linea áéíóúñ
FIN:

Traslado

EMPRESA:EXTERNOS|testext452|LAN7008173R5|CTE4049|
COMPROBANTE:3.3|TR|1|08/01/2018|0|0|MXN|1|0|T20200|
PDF:Aguascalientes, Ags|V9633|08/01/2018|Carta Porte
RESPUESTA:HTML
CFDIS_RELACIONADO:05|BC2D3B90-9697-4E1A-AD2C-2AD505311960|E71582C5-3DC8-4A0D-A008-F8A3F1294CEF
RECEPTOR:MSO0206067S5|Microflow Softtware SA de CV|G01|
RECEPTOR_DIRECCION:La calle|1000La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 1|600.00|600.00
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 2|500.00|500.00
LINEA:01010101|GEN002|1|E50|Pieza|Piezas de valor 3|500.00|500.00
CP_ORIGEN:Origen de la carta porte
En múltiples líneas
Para expresar el origen
CP_ORIGEN_FIN:
CP_DESTINO:Destino de la carta porte
En múltiples líneas
Para expresar el origen
CP_DESTINO_FIN:
CP_TRANSPORTE:tractor|placa tractor|remolque|placa remolque|nombre operador|tipo flete
CP_CARGA:bultos|dice contiene|peso o cantidad|fecha carga
FIN:

Escuelas

EMPRESA:EXTERNOS|testext452|LAN7008173R5|CTE4049|
COMPROBANTE:3.3|HPR|17152352|17/07/2017|03|Contado|1000.00|0.00|MXN|1|1160.00|I|PUE|20200|
PDF:Aguascalientes, Ags|V9633|12/07/2017|Nota Crédito
RESPUESTA:HTML
RECEPTOR:MSO0206067S5|Microflow Softtware SA de CV|G01|
RECEPTOR_DIRECCION:La calle|1000La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
IMPUESTOS:|160.00
IMPUESTO_TRASLADO:002|Tasa|0.160000|160.00
LINEA:01010101|GEN002|1|E50|Pieza|Colegiatura|1000.00|1000.00|0.00|ALUMNO:Juan Perez,GLZ03JERH010203LS526555,Secundaria,02566
IMPUESTO_LINEA:1000.00|002|Tasa|0.160000|160.000000
COMENT: Prueba de observaciones, es opcional y es una sola linea áéíóúñ
FIN:

Lógica del Layout Estándar

El layout se diseño para que se apegara en la medida de lo posible al documento técnico del SAT y que de esta forma sea posible localizar los atributos de cada nodo con facilidad y poder determinar su uso, que información debe ir y como llenarlos correctamente.

El layout no trae todos los detalles reescritos nuevamente porque son muchos y algunos muy extensos, de forma que debe usar ambos documentos simultáneamente para entender como llenar el layout de texto.


Continuar a: Facturar / Notas de crédito Continuar a : Generar recibos de nómina Continuar a : Documentos de Pago Continuar a : Subir Archivo Batch para escuelas Continuar a : Retenciones y Pagos

Continuar a : Cancelaciones