Revisa este artículo
https://www.soyconta.com/uso-y-manejo-de-decimales-en-las-cantidades-dentro-del-cfdi-4-0/
En el caso específico del complemento de pago 2.0 el tema de los decimales es todo un show.
Revisa: 4. Validaciones adicionales a realizar por el Proveedor pag. 51
Redondeados, truncados, límite inferior y superior... bueno... lo hemos discutido por meses en el grupo de PHPCfdi...
https://discord.gg/e79Cc6ASon bienvenidos, si bien está relacionado con PHP en la mayoría de los canales se discuten temas relacionados con el SAT y CFDI en general.
En resumen te podría decir:
Del nodo Totales como siempre es en MXN, redondea a dos decimales
Del nodo Pago tenemos atributos tipo decimal de hasta seis dígitos y tipos t_importe que igual es hasta seis dígitos, redondear a seis decimales
Del nodo DoctoRelacionado lo mismo, sobre todo lo relacionado a tipos de cambio, usar los seis dígitos permitidos, redondear si es necesario pero a seis decimales
De los nodos TrasladoDR y RetencionDR tenemos BaseDR e ImporteDR; realiza tus operaciones con todos los decimales que puedas y trunca a seis no redondear
Y lo mismo con los de TrasladoP y RetencionP, tuncar, no redondear
Esto es lo que en la mayoría de los casos ha funcionado.
Espero que te sirva y seguro que los compañeros tienen su propia experiencia, sería bueno ver que pueden aportar al tema.
Saludos.
Arturo Ramos
Cancún, México