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)
Catálogos del SAT (2018-04-13)
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
Símbolo de gato # en layout
Esto es un comentario, una línea de ejemplo para que la puedan incluir, "sin el #", no se deben incluir en el layout real
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
- 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
- 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|EKU9003173C9|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 Software SA de CV|G01|
RECEPTOR_DIRECCION:La calle|1000||La 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|EKU9003173C9|CTE4049|601
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 Software SA de CV|||P01|
RECEPTOR_DIRECCION:La calle|1000||La 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 sobre Notas de Crédito
Algunos valores importantes que cambian al generar notas de crédito con respecto a las facturas, son:
- Uso CFDI = P01
- Tipo Documento = E
- Método pago = PUE
Traslado
EMPRESA:EXTERNOS|testext452|EKU9003173C9|CTE4049|603
COMPROBANTE:3.3|HPRT|2018149|20/10/2021|||0||XXX||0|T||20200|
PDF:Aguascalientes, Ags|V9633|20/10/2021|Factura|1
RECEPTOR:MSO0206067S5|Microflow Software SA de CV|||P01|
RECEPTOR_DIRECCION:La calle|1000||La colonia|20000|Aguascalientes|Aguascalientes|Aguascalientes|México
LINEA:43211500|GEN002|1|E50|Pieza|Computadora A|600.00|600.00||
LINEA:31162800|GEN002|1|E50|Pieza|Impresora|500.00|500.00||
COMENT: Prueba de observaciones, es opcional y es una sola linea áéíóúñ
COMPLEMENTO_CP_INICIO:
CARTAPORTE:1.0|No|||1200
UBICACION:01|0
UBICACION_ORIGEN:||||||||04/07/2021T12:26:00
UBICACION_DOMICILIO:LA CALLE|123||0001|01||001|AGU|MEX|20000
UBICACION:03|1200.00
UBICACION_DESTINO:||||||||04/07/2021T12:26:00
UBICACION_DOMICILIO:LA CALLEX|256||1023|07||020|GUA|MEX|37010
MERCANCIAS:|||2|
MERCANCIA:43211500||Computadora A|1.0000|C62|||||||500.00|1200.00|MXN|||
MERCANCIA:31162800||Impresora|1.0000|C62|||||||300.00|320.00|MXN|||
AUTOTRANSPORTEFEDERAL:TPAF01|ABC1234|GNP Seguros|KH4354345
ATF_IDENTIFICACIONVEHICULAR:T2S2|CBA1222|2021
ATF_REMOLQUE:CTR007|AAA1111
FIGURATRANSPORTE:01
OPERADORES_INICIO:
OPERADOR:PERH650201NR2|4554KLD4455|OPERADOR LOPEZ PEREZ||MEX
DOMICILIO:LOS OPERADORES|568||1137|01||001|AGU|MEX|20218
OPERADORES_FIN:
COMPLEMENTO_CP_FIN:
FIN:
Nota sobre Traslado
Algunos valores importantes que cambian al generar notas de crédito con respecto a las facturas, son:
- Uso CFDI = P01
- Tipo Documento = T
- Método pago = PUE
- Totales en cero, se omite descuento
Impuestos locales
EMPRESA:EXTERNOS|testext452|EKU9003173C9|CTE4049|603
COMPROBANTE:3.3|TESTLOCAL|111|04/11/2021|03|Contado|1600.00|100.00|MXN|1|1660.00|I|PUE|20200|
PDF:Aguascalientes, Ags|V9633|04/11/2021|Factura|1
RESPUESTA:HTML
#DEBUG:1
#CFDIS_RELACIONADO:04|BC2D3B90-9697-4E1A-AD2C-2AD505311960|E71582C5-3DC8-4A0D-A008-F8A3F1294CEF
RECEPTOR:MSO0206067S5|Microflow Software SA de CV|||G01|
RECEPTOR_DIRECCION:La calle|1000||La 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
TRASLADOS_LOCALES:1000
TRASLOCAL:impuesto de nomina|5|1000.00
RETENCIONES_LOCALES:1000
RETLOCAL:retención inventada|5|1000.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:
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 Software 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