El Servicio de Administración Tributaria (SAT) informa que, a partir del 3 de febrero de 2025, ha puesto a disposición una nueva plataforma en línea, para realizar el cumplimiento de las obligaciones fiscales en tiempo y forma, acerca de la Declaración Informativa de Operaciones con Terceros.
Referencia: SAT lanza nuevas plataformas para presentación de DIOT y pagos provisionales o definitivos
Este documento describe los procedimientos para generar la información para la DIOT (Declaración Informativa de Operaciones con Terceros) en el formato vigente a partir del 2025, esto es, informar todos los pagos realizados en un periodo de tiempo y separarlos por tipo de impuesto. La información recabada considera los datos procesados en financiero y queda registrada en la tabla de Movimientos Impuesto DIOT (CE8) de la base de datos.
Para funcionalidad de la nueva versión de la Declaración Informativa de Operaciones con Terceros (DIOT) 2025, se debe tener la rutina Genera DIOT (FISA088.PRW) en el repositorio con fecha superior o igual a 07/03/2025. |
Configurar los parámetros para la clasificación del tipo de IMPUESTO, de acuerdo a la configuración de Libros Fiscales, por ejemplo:
Nombre | Descripción | Tipo | Cpo del L.F.* |
---|---|---|---|
MV_LISIVAS | Lista de Numero de Libro Fiscal que son de IVA | Caracter | 1,2 |
MV_IVARET | Lista de Numero de Libro Fiscal que son de IVA de Retencion | Caracter | 3,4 |
*Dígito que relacionará la clasificación de los IVAs con el campo Cpo del L.F. de la tabla de Impuesto Variable (SFB). |
|
Configurar el parámetro que establece la versión de DIOT a utilizar:
Nombre | Descripción | Tipo | Contenido |
---|---|---|---|
MV_DIOTVER | Permite definir la versión de DIOT a generar; 1=Versión anterior y 2=DIOT 2025 | Caracter | 2 |
Crear los campos necesarios en la tabla Movimientos Impuestos DIOT (CE8) para la información de acuerdo al nuevo formato 2025.
Ver la sección 4. Diccionario de Datos, los detalles sobre esta tabla.
Órdenes de Pago
Compensación De Títulos
1) Elimina todos los movimientos de la tabla de Movimientos de DIOT (CE8), de acuerdo a los rangos establecidos en las preguntas del proceso (mes/año y sucursales).
2) Seleccionar todos los pagos realizados (SE5) que estén dentro de los rangos de fechas indicadas en las preguntas de la rutina (E5_DATA este dentro de Mes Año, E5_FILIAL este dentro de las Sucursales seleccionadas y que no esté cancelados E5_SITUACA<>’C’), que sean pagos efectivados (E5_RECPAG = 'P' AND E5_SITUACA <> 'C' AND E5_TIPODOC <> 'ES' AND E5_TIPODOC <> 'BA'), que sean reversiones de pagos (E5_MOTBX='CMP' AND E5_RECPAG = 'R' AND E5_SITUACA <> 'C' AND E5_TIPODOC = 'ES') o que sean órdenes de pago debitadas en el periodo (E5_MOTBX='NOR' AND E5_RECPAG IN ('P','R') AND E5_SITUACA <> 'C' AND E5_TIPODOC = 'VL').
Por cada registro obtener los títulos que se están pagando y la parte proporcional que se paga a cada documento, en moneda nacional. Si se trata de una reversión, decrementa el importe obtenido al total de pago del título. Para obtener el tipo de cambio, se debe analizar el origen del pago, entonces, por cada registro, verificar:
Obtener los títulos que fueron pagados y los importes de los mismos (si el movimiento tiene vacía la moneda y la tasa, también debe verificar estos datos en la compensación).
Si es compensación (E5_MOTBX=”CMP”):
Extraer la información de acuerdo a cuentas por pagar (SE2).
Si no es reversa (E5_TIPODOC=’ES’):
Si es reversa (E5_TIPODOC<>’ES’):
Si no es compensación (E5_MOTBX<>”CMP”):
En este caso, debe verificar si el cheque está debitado en el periodo, si lo está, verificar qué títulos están pagados con el mismo y serán los títulos que formarán la base, además, identificar el tipo de cambio. Si no está debitado en el periodo, los títulos identificados no deben participar de la base. Si es una nota de crédito, verificar qué títulos fueron compensados con esa nota y con qué tipo de cambio.
3) Obtener la parte proporcional del pago sobre el valor del título, por cada base diferente que tenga este. Una vez obtenidos todos los pagos, buscar los títulos origen en cuentas por pagar (SE2), por medio del número, serie, número de pago, proveedor y tienda (E2_NUM,E2_PREFIXO,E2_PARCELA,E2_FORNECE,E2_LOJA), para ubicar la base de IVA y el IVA retenido. Obtener la parte proporcional de pago sobre el total del documento (E2_VALOR).
Por ejemplo: pondremos como valor total del título 2,875, y como importes pagados 500:
Pago/Valor del título * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA,1) = Parte proporcional
500 / (2875 * 1) = .1739
Revisar todas las bases de IVA que tenga el documento (D1_BASIMPN) que sean diferentes de cero, por cada campo encontrado con valor, extraer la parte proporcional del pago, lo que va a Base del impuesto y cuánto a IVA retenido:
Base a reportar: 2500 * .1739 * 1 = 434.75
Iva Retenido** : 375 * .1739 * 1 = 65.10 Aplica solo si N se encuentra en el parámetro MV_IVARET.
La suma de los dos resultados es el total del pago.
Es importante considerar que la retención se informará al SAT en el periodo que se haya realizado el pago del título correspondiente, mientras que el IVA se informará en el periodo siguiente al mismo. |
4) Almacenar la información con los movimientos a detalle.
|
Almacenar la Base a reportar (D1_BASIMPN). Para ubicar en qué campo va cada base que se calculó, se hace el proceso:
Donde N sea menor igual a 10, obtener D1_BASIMPN, D1_VALIMPN y D1_ALIQIMPN y calcular:
Base a Reportar := D1_BASEIMPN * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1) * Proporción del pago
Valor a Reportar := D1_VALIMPN * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1) * Proporción del pago
Valor % Impuesto := D1_ALIQIMPN
Base Exenta := (E2_VALOR – (D1_BASEIMPN + D1_VALIMPN)) * * (Si SE2->E2_TXMOEDA <> 1, SE2->E2_TX_MOEDA, 1) * Proporción del Pago
Los diferentes valores obtenidos, serán distribuidos de acuerdo a clasificadores nuevos y existentes, según lo establece la legislación vigente a partir de 2025, con este propósito, es necesario registrar y alimentar en los respectivos catálogos del sistema, los clasificadores que se enuncian en la sección 4. Actualizaciones de diccionario.
|
Si un movimiento es referente al pago de un título con IVA y Retención IVA, se graban dos registros en la tabla de Movimientos de Impuestos DIOT (CE8):
Generar un informe de LOG de errores, mostrando las inconsistencias encontradas y explicando las causas. Las validaciones serán de acuerdo a lo mencionado en la columna Obligatoria u Opcional, del layout del archivo para carga masiva. Además, se informa la cantidad de registros grabados y la cantidad de registros con errores.
La descripción del formato y contenido del Archivo de Carga Masiva para la Declaración Informativa de Operaciones con Terceros (DIOT), se describe en el documento de la rutina de generación de Archivo DIOT 2025:
Al ingresar a la rutina, en la opción de parámetros se muestra la pantalla de la rutina incluyendo la descripción de la función de la misma:
En el botón Param. se solicitarán los siguientes datos:
Al dar clic en OK, se realizaran las siguientes validaciones antes de ejecutar el proceso, si no pasa por estas validaciones no procederá a ejecutar el resto del proceso:
Al ejecutar el proceso, si se encontraron errores, se solicitará al usuario si requiere revisar el log. Si no se encontraron errores, solo enviará un mensaje de finalizacion del proceso.
El Punto de Entrada FS088FINCP, recibe un parámetro, que es el filtro utilizado en la consulta de las Notas de Crédito de Proveedor para generar DIOT, debe retornar una cadena que contenga el nuevo filtro con las características para los documentos (NCP) definidos por el usuario. La consulta es realizada sobre la tabla SE5 - Movimientos Bancarios.
User Function FS088FINCP() Local cQuery := PARAMIXB[1] // Filtro para documentos NCP /* Valor actual del filtro cQuery :="(E5_DATA BETWEEN '" + Dtos(dFecIni) + "' AND '" + Dtos(dFecFin) + "'" AND E5_TIPO = 'NCP') AND E5_SITUACA <> 'C' ) " */ cQuery += "AND E5_ORIGEM <> 'FINA415'" Return cQuery |
El Punto de Entrada IETUFILP, recibe un parámetro, que es el filtro utilizado en la consulta de Deducciones para generar DIOT, debe retornar una cadena que contenga el nuevo filtro con las características para los documentos definidos por el usuario. La consulta es realizada sobre la tabla SE5 - Movimientos Bancarios.
User Function IETUFILP() Local cQuery := PARAMIXB[1] // Filtro para los movimientos /* Valor actual del filtro cQuery := "AND (E5_MOTBX = 'CMP' OR E5_MOTBX = 'NOR') AND ((E5_TIPODOC IN ('VL','BA','CP') AND E5_RECPAG='P') OR (E5_TIPODOC='ES' and E5_RECPAG='R')) ORDER BY E5_ORDREC" */ cQuery += "AND E5_ORIGEM <> 'FINA415'" Return cQuery |
Para la utilización de los Puntos de Entrada FS088FINCP y IETUFILP, es importante asignar el valor del parámetro PARAMIXB[1] a la variable a retornar y adicionar las condiciones de los documentos a excluir, ya que el no hacer esta asignación podría mostrar inconsistencias en los registros a mostrar en el DIOT para Notas de Crédito de Proveedor y/o Deducciones. |
CE8 - Movimientos Impuestos DIOT - Formato actual, vigente para DIOT hasta 2024
Campo | Tipo | Longitud | Decimales | Descripción |
---|---|---|---|---|
CE8_FILIAL | C | 2 | Sucursal | |
CE8_MESANO | C | 6 | Mes y año de generación | |
CE8_NUMDOC | C | 6 | Número de documento o factura | |
CE8_SERIE | C | 3 | Serie de documento o factura | |
CE8_PARCEL | C | 1 | Numero de parcialidad | |
CE8_PROV | C | 6 | Codigo del proveedor | |
CE8_TIENDA | C | 2 | Tienda del proveedor | |
CE8_FECDOC | D | 8 | Fecha del documento | |
CE8_RFC | C | 13 | R.F.C. | |
CE8_IDFISC | C | 40 | ID fiscal para proveedores extranjeros | |
CE8_TIPTER | C | 2 | Tipo de proveedor | |
CE8_TIPOPE | C | 2 | Tipo de operación | |
CE8_PAIS | C | 2 | Código de país | |
CE8_VALTOT | N | 12 | 2 | No Obj IVA Nal |
CE8_BA1516 | N | 12 | 2 | Pagos Interior |
CE8_BASE15 | N | 12 | 2 | Pag Imp Tang |
CE8_BA1011 | N | 12 | 2 | Pagos RFN |
CE8_BASE10 | N | 12 | 2 | Pagos RFS |
CE8_BI1516 | N | 12 | 2 | Devols Interior |
CE8_BI1011 | N | 12 | 2 | Devols RFS |
CE8_BASIEX | N | 12 | 2 | Pagos Imp Exen |
CE8_BASE0 | N | 12 | 2 | Pagos Tasa 0% |
CE8_BASEEX | N | 12 | 2 | Pagos Exentos |
CE8_IVARET | N | 12 | 2 | IVA Retenido |
CE8_IVADEV | N | 12 | 2 | No Obj IVA Ext |
CE8_FECGER | D | 8 | Fecha de generación | |
CE8_IVAPAG | N | 12 | 2 | no usado |
CE8_IVPAGI | N | 12 | 2 | no usado |
CE8_TIPO | C | 4 | Tipo documento | |
CE8_MESCAL | C | 6 | Mes de cálculo |
Revisar y actualizar la estructra de las siguientes tablas.
CE8 - Movimientos Impuestos DIOT - Nuevos campos para la versión DIOT 2005. Registro obligatorio.
Campo | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Tit. Español | Desc. Español | Validación | F3 | Obligatorio | Usado | Help |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
CE8_BASDVA | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Dev Imp Tang | DevImp Tangibles | Si | ||||
CE8_BASDVB | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Val Imp Inta | Val Imp Intangibles | Si | ||||
CE8_BASDVC | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Dev Imp Inta | Dev Imp Intangibles | Si | ||||
CE8_IVAACA | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr NoP RFN | IVA Acred No Prop RFN | Si | ||||
CE8_IVAACB | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr Prop RFN | IVA Acred Prop RFN | Si | ||||
CE8_IVAACC | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr NoP RFS | IVA Acr No Prop RFS | Si | ||||
CE8_IVAACD | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr Prop RFS | IVA Acred Prop RFS | Si | ||||
CE8_IVAACE | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr NoP Int | IVA Acr No Prop Interior | Si | ||||
CE8_IVAACF | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr Prop Int | IVA Acred Prop Interior | Si | ||||
CE8_IVAACG | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr NoP Tang | IVA Acr No Prop Tangibles | Si | ||||
CE8_IVAACH | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr Prop Tan | IVA Acred Prop Tangibles | Si | ||||
CE8_IVAACI | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr NoP Intg | IVA Acr No Prop Intangibles | Si | ||||
CE8_IVAACJ | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Acr Prop Intg | IVA Acred Prop Intangibles | Si | ||||
CE8_IVANAA | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA Prop RFN | IVA No Acred Prop RFN | Si | ||||
CE8_IVANAB | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA NoP RFN | IVA No Acred No Prop RFN | Si | ||||
CE8_IVANAC | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Exento RFN | IVA Exento RFN | Si | ||||
CE8_IVANAD | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | No Objet RFN | IVA No Objeto RFN | Si | ||||
CE8_IVANAE | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA Prop RFS | IVA No Acred Prop RFS | Si | ||||
CE8_IVANAF | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA NoP RFS | IVA No Acred No Prop RFS | Si | ||||
CE8_IVANAG | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Exento RFS | IVA Exento RFS | Si | ||||
CE8_IVANAH | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | No Objeto RFS | IVA No Objeto RFS | Si | ||||
CE8_IVANAI | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA Prop Int | IVA No Acred Prop Interio | Si | ||||
CE8_IVANAJ | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA NoP Int | IVA No Acred No Prop Int | Si | ||||
CE8_IVANAK | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Exento Int | IVA Exento Interior | Si | ||||
CE8_IVANAL | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | No Objeto In | IVA No Objeto Interior | Si | ||||
CE8_IVANAM | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA Prop Tan | IVA No Acred Prop Tangib | Si | ||||
CE8_IVANAN | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA NoP Tan | IVA No Acred No Prop Tang | Si | ||||
CE8_IVANAO | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Exento Tang | IVA Exento Tangibles | Si | ||||
CE8_IVANAP | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | No Objeto Ta | IVA No Objeto Tangibles | Si | ||||
CE8_IVANAQ | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA Prop I. | IVA No Acred Prop Intang | Si | ||||
CE8_IVANAR | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | NoA NoP I. | IVA No Acred No Prop Inta | Si | ||||
CE8_IVANAS | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | Exento Intan | IVA Exento Intangibles | Si | ||||
CE8_IVANAT | N | 14 | 2 | @E 99,999,999,999.99 | 1-Real | 1-Modificar | No Objeto I. | IVA No Objeto Intangibles | Si |
SA2 - Proveedores - Actualización de campos.
Campo | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Tit. Español | Desc. Español | Validación | F3 | Opciones | Inic. Estándar | Obligatorio | Usado | Help |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A2_TIPOTER | Pertence("040515") .And. IIF(FindFunction("fVlTipoTer"),fVlTipoTer(),.T.) | ||||||||||||||
A2_TPOPER | IIF(FindFunction("fValTpOper"),fValTpOper(),.T.) | #IIF(FindFunction("fTpOper"),fTpOper(),"03=Prestac. de Serv. Profes.;06=Redondeo de Inmuebles;85=Otros") |
Únicamente se deben modificar los campos mostrados con contenido, el resto de la información (no mostrada en la tabla), no debe ser alterada. |
SA2 - Proveedores - Nuevos campos.
Campo | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Tit. Español | Desc. Español | Validación | F3 | Opciones | Inic. Estándar | Obligatorio | Usado | Help |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
A2_LUGJURF | M | 10 | @! | 1-Real | 1-Modificar | Juris Fiscal | Jurisdicción Fiscal | Si | Lugar de Jurisdicción Fiscal. Aplica si el proveedor es extranjero y cuando el valor del campo País o Jurisdicción de Residencia Fiscal sea ZZZ (Otro). | ||||||
A2_REGION | C | 1 | @! | 1-Real | 1-Modificar | Región | Región Fronteriza | Pertence("123") | 1=Frontera Norte;2=Frontera Sur;3=Interior del País | "3" | Indique la región del proveedor: |
Los campos A2_LUGJURF y A2_REGION, son opcionales.
|
SFB - Impuestos Variables. Opcional.
Campo | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Tit. Español | Desc. Español | Validación | F3 | Opciones | Inic. Estándar | Obligatorio | Usado | Help |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FB_TIPOIVA | C | 1 | @! | 1-Real | 1-Modificar | Tipo IVA | Tipo de IVA | Pertence("1234") | 1=Acreditable No proporcional;2=No acreditable No proporcional;3=Acreditable proporcional;4=No acreditable proporcional | "1" | Si | Informe el tipo de IVA para la generación del DIOT. |
En caso de no configurar el campo Tipo IVA (FB_TIPOIVA), o no registrar contenido de este clasificador, cada impuesto se considerará como 1-Acreditable, No proporcional. |
SB1 - Productos. Opcional.
Campo | Tipo | Tamaño | Decimal | Formato | Contexto | Propiedad | Tit. Español | Desc. Español | Validación | F3 | Opciones | Inic. Estándar | Obligatorio | Usado | Help |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
B1_PRODTAN | C | 1 | @! | 1-Real | 1-Modificar | Prod Tangibl | Producto Tangible | Pertence("12") | 1=Si;2=No | "1" | Si | Indique si el producto es: | |||
B1_OBJIVA | C | 1 | @! | 1-Real | 1-Modificar | Objeto IVA | Objeto de IVA | Pertence("12") | 1=Si;2=No | "1" | Si | Indique si el producto es Objeto e IVA para la generación del DIOT. |
En caso de no configurar el campo Prod Tangibl (B1_PRODTAN), o no registrar contenido de este clasificador, cada Producto se considerará como 1 - Si (Tangible para Importaciones). En caso de no configurar el campo Objeto IVA (B1_OBJIVA) o no registrar contenidos de este clasificador, cada Producto se considerará como 1-Si (Objeto de IVA). |
SX1 - Preguntas. Agregar el siguiente parámetro al grupo de preguntas FISA087:
Orden | Pregunta - Español | Tipo | Tamaño | Decimal | Formato | Validación | Help | Objeto | Consulta Estándar | Contenido | Preselección | Ítem 1 Español | Ítem 2 Español |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
5 | ¿Datos a Enviar ? | N | 1 | Combo | 1 | Todo | Solo Bases |
SX6 - Parámetros. Nuevo parámetro que establece la versión de DIOT a utilizar.
Nombre | Descripción | Tipo | Contenido (Ejemplo) | Valor Default |
---|---|---|---|---|
MV_DIOTVER | Permite definir la versión de DIOT a generar; 1=Versión anterior y 2=DIOT 2025 | Caracter | 2 | 1 |