Circular 2 de 2021 DIAN
The official text of this document is in Spanish and is shown as published by the Colombian authorities.
(DEROGADA) - Traslado y Reporte de Recaudo de Impuestos Nacionales
Text of the document
CIRCULAR EXTERNA 2 DE 2021
(marzo 30)
Diario Oficial No. 51.633 de 31 de marzo de 2021
DIRECCIÓN DE IMPUESTOS Y ADUANAS NACIONALES
| PARA: | Representantes Legales y Revisores Fiscales Entidades Recaudadoras. |
| DE: | Director General UAE - Dirección de Impuestos y Aduanas Nacionales (DIAN) Director General de Crédito Público y Tesoro Nacional |
| ASUNTO: | Traslado y Reporte de Recaudo de Impuestos Nacionales |
Teniendo en cuenta que con posterioridad a la expedición de la Circular 0003 de marzo 22 de 2019, se han establecido nuevos tributos con ocasión de la promulgación de la Ley 1955 de 2019 Plan Nacional de Desarrollo 2018-2022 y la Ley 2010 de 2019, es preciso armonizar las cuentas con los nuevos conceptos y adicionalmente se requiere crear y unificar códigos estadísticos para las nuevas transacciones e impartir instrucciones sobre el diligenciamiento del informe diario de recaudo, medio de transmisión y plazo de reporte, así:
1. CUENTAS VIGENTES
A continuación, se relacionan las cuentas vigentes para la transferencia de los recaudos vía SEBRA del Banco de la República, así como los códigos de operación para la exención del gravamen a los Movimientos Financieros:
El recaudo efectuado con declaraciones deberá ser trasladado a la cuenta del impuesto correspondiente.
2. INFORME DE RECAUDO DIARIO
El recaudo diario lo conforman los valores recaudados por las entidades autorizadas por concepto de tributos administrados por la U.A.E. Dirección de Impuestos y Aduanas Nacionales-DIAN en adelante DIAN, indistintamente sea su forma de recaudo: canal presencial o electrónico, bien sea en efectivo o mediante títulos.
De conformidad con lo establecido en el artículo 22 de la Resolución 478 de 2000, modificado por el artículo segundo de la Resolución DIAN 000017 del 17 de febrero de 2021: “Para todos los efectos, la fecha del recaudo por cualquier canal dentro de los horarios especiales, adicionales y extendidos manejados por las entidades autorizadas para recaudar será la que corresponde a la fecha en que se realice el pago; en consecuencia, los informes y el traslado de los recursos atenderán esta fecha. (…).
En este orden de ideas, los sábados, domingos y festivos, serán tomados como un día de recaudo normal, iniciando el término de compensación el día calendario siguiente.
En cuanto al traslado del recaudo a las cuentas del Banco de la República, se mantiene lo dispuesto en el inciso 4 del artículo 38 de la Resolución 478 de 2000, modificado por el artículo 1o de la Resolución 3083 de 2007, según el cual, si la fecha del traslado o consignación del recaudo al Banco de la República coincide con sábado, domingo o festivo, este se realizará el día hábil siguiente.
El formato FT-RE-2495 “Informe diario de recaudo” versión 2, anexo 1, que se utiliza para transmitir la información diaria de recaudo a través de correo electrónico, deberá implementarse a partir del recaudo correspondiente al día 12 de abril de 2021. Es de anotar que este formato no debe ser objeto de modificación o alteración alguna. De esta forma, la sección detallada dentro de la planilla para los recaudos en horario extendido, a partir de esa fecha debe venir en cero o en blanco. De lo contrario, este informe no podrá ser cargado dentro de los aplicativos usados para este fin.
A partir del 8 de junio de 2021 las entidades autorizadas para recaudar deberán transmitir a la DIAN y a la Dirección General de Crédito Público y Tesoro Nacional el informe diario de recaudo a través del canal web service dispuesto para tal fin, conforme a las especificaciones contenidas en los anexos 2 y 3 de la presente Circular.
Una vez se implementen los webs services de la DIAN y de la Dirección General de Crédito Público y Tesoro Nacional, en caso de no disponibilidad del canal para la transmisión del informe diario por contingencia debidamente comunicada por la DIAN o la Dirección General de Crédito Público y del Tesoro Nacional, será procedente el envío del informe vía correo electrónico a los siguientes buzones: DIAN: controlrecaudo@ dian.gov.co y Dirección General de Crédito Publico y Tesoro Nacional: tesoreria@ minhacienda.gov.co. Una vez restablecidos los canales de transmisión (web service), las entidades autorizadas para recaudar deberán enviar por este medio los informes pendientes de transmitir, a más tardar el día hábil siguiente a la fecha de restablecido el servicio.
Es requisito que cada uno de los archivos sea nombrado en el siguiente orden:
IRD-BB_01_DDMMAAAA.xlsx
IRD-BB_02_DDMMAAAA.xlsx
IRD: Corresponde al nombre del archivo Informe de Recaudo Diario
BB: Corresponde al código del Banco
01: Informe Inicial
02: Informe Modificado
DDMMAAAA: Es la fecha de recaudo que se informa día-mes-año
El informe de recaudo diario se presentará el día hábil siguiente a la fecha de recaudo informada, a más tardar a las once horas (11:00).
3. CÓDIGOS ESTADÍSTICOS:
Los siguientes son los códigos estadísticos:
4. ANEXOS
Forman parte de la presente Circular los siguientes anexos:
Anexo 1: FT-RE-2495 “Informe diario de recaudo” versión 2
CONSULTAR ANEXO EN EL ORIGINAL IMPRESO O EN FORMATO PDF.
5. VIGENCIA Y DEROGATORIAS
La presente Circular rige a partir del 12 de abril de 2021, previa su publicación en el diario oficial y deroga en todo su contenido la Circular Externa 000003 de marzo 22 de 2019.
Publíquese y cúmplase.
Dada en Bogotá, D. C. a 30 de marzo de 2021.
El Director General, UAE Dirección de Impuestos y Aduanas Nacionales (DIAN),
Lisandro Manuel Junco Riveira.
Servicio Web Estándar de Informe de Recaudo Diario.
Contrato de Servicio.
Tabla de contenido
1. Control de versiones.
2. Notas de la liberación de versiones.
3. Especificación del Servicio.
3.1. Información General Servicio
3.2. Funcionalidad.
4. Operaciones del Servicio.
4.1. Seguridad del llamado de los servicios.
4.2. Operación: Informar Recaudo Diario.
4.2.1. Información General Operación
4.2.2. Entradas.
4.2.3. Salidas.
5. Riesgos.
6. Anexos.
6.1. Tablas de códigos.
Severidad de la Respuesta.
Código del Banco.
Indicador del informe.
Horario.
Tipo de Recaudo.
Estado del pago.
Código estadístico.
6.2. Especificaciones técnicas REST
1. Control de versiones
| Versión | Fecha (dd/mm/aaaa) | Responsable | Descripción |
| 1.0 | 19/03/2019 | Clímaco Llamas Ernesto Medina | Especificación Inicial del Servicio |
| 1.1 | 14/02/2020 | Clímaco Llamas | Corrección de url del servicio |
| 1.2 | 30/03/2020 | Clímaco Llamas | Ajuste de tablas de códigos estadísticos acorde a la circular externa 3 de 22 de marzo de 2019 |
| 1.3 | 30/04/2020 | Clímaco Llamas | Ajuste a tabla de códigos estadísticos y tabla de tipos de recaudo. |
| 1.3.1 | 12/05/2020 | Climaco Llamas | Ajuste a valor de atributo esReemplazo en los ejemplos. |
| 1.4 | 30/10/2020 | Climaco Llamas | Se adicionan tipos de recaudo y se eliminan códigos COVID |
2. Notas de la liberación de versiones
Versión 1.0
- Especificación Inicial del Servicio
Versión 1.1
- Corrección de url del servicio. Cambios en amarillo. Ítem 3.1 y 4.2.1
Versión 1.2
- Ajuste a tabla de códigos estadísticos
Versión 1.3
- Se adicionan los códigos estadísticos 014 y 015. Se cambia el nombre al tipo de recaudo 1, pasa de Efectivo a Efectivo Presencial y se adiciona el tipo de recaudo 3 denominado Efectivo Canales Electrónicos.
3. Especificación del Servicio
3.1. Información General Servicio
| Nombre Servicio | Servicio de Informes de Recaudo |
| Nombre Técnico | Informes de Recaudo |
| Espacio de Nombres Producción | http://api.dian.gov.co/recaudo/informes |
| Espacio de Nombre Pruebas | http://apipruebasexternas.dian.gov.co/recaudo/informes |
| Versión | 1.0 |
3.2. Funcionalidad
La Entidad Financiera (Banco) consume el Web Service de la DIAN.
1. La aplicación de la entidad financiera construye según la especificación definida el mensaje para informar el recaudo diario.
2. La aplicación de la Entidad Financiera consume la operación de informar el recaudo del Servicio Web de la DIAN
3. El servicio de la DIAN valida la consistencia de los datos
4. El servicio de la DIAN envía respuesta.
4. Operaciones del Servicio
4.1. Seguridad del llamado de los servicios
Se debe aclarar que todas las operaciones expuestas para Recaudo en Caja, deben llevar en el encabezado la información del ClientId y el Authorization.
| Nombre del Campo (Path) | Descripción | Obligatoriedad | Longitud | Tipo |
| Header del request para cualquier método | ||||
| clientId | Entregado por la DIAN, identificador dado a la aplicación registrada. | S | 50 | Alfanumérico |
| Authorization | Es el idToken obtenido en la autenticación con identidad. | S | 500 | Numérico |
Ejemplo del header:
…
Authorization: Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI5MDAwMDAwMDA2MDAwNC0wLTg5MDkwMzkzOCIsImF1ZCI6WyJLVHNsTEg3UmhOeWxHOGZHQjlXM0FScjhmbEFhIl0sImlzcyI6Imh0dBzOlwvXC9tdWlzY2EuZGlhbi5nb3YuY28iLCJleHAiOjE1MjIyNjEyNTIsImlhdCI6MTUyMjI1NzY1Miwicm9sIjoiaHR0cHM6XC9cL2dvb2dsZS5jb20uY28iLCJqdGkiOiIzZDMzOWFjZC1lMzM1LTRiMGUtYjFlYy01NTgzYzQxY2M5NTcifQ.IX1O_b5kpK_gX4He8JzX-NiYuhOB4sUdGvvH5r8rl2wclientId: KTslLH7RhNylG8fGB9W3ARr8flAa
…
4.2. Operación: Informar Recaudo Diario
4.2.1. Información General Operación
| Nombre Operación | Entrega de Informe de recaudo diario |
| Nombre Técnico | informesdiarios |
| Comando HTTP Ambiente Producción | POST https://api.dian.gov.co/recaudo/informes/v1/informesdiarios/{fecha} |
| Comando HTTP Ambiente Pruebas | POST https://apipruebasexternas.dian.gov.co/recaudo/informes/v1/ informesdiarios/{fecha} |
| Descripción Operación | La entidad financiera notifica a la DIAN el recaudo del día |
| Precondiciones | - El sistema de la DIAN debe estar funcionando - La aplicación de la entidad financiera tiene un token valido |
| Post condiciones | - El sistema de la DIAN recibe la notificación del informe diario de recaudo y retorna un acuse de recibo acorde a la información enviada |
4.2.2. Entradas
El mensaje de request en formato JSON se va a llamar DInformeDiario. Está formado por los objetos DEncabezadoInforme y DInforme y cada uno de ellos se compone de los campos definidos a continuación:
| Nombre del Campo (Path) | Descripción | Obligatoriedad | Longitud | Tipo |
| DEncabezadoInforme | ||||
| idTransaccion | Identificador único de la transacción. El id transacción es un número único, no se debe repetir. Por cada operación que ustedes consuman de informarRecaudoDiario deben generar un id de transacción. Se realiza la petición con ese número único de transacción y el servicio le responde entregándole ese id de transacción. Esto se definió como un mecanismo de control para garantizar que la respuesta corresponde a la petición que se realizó. | S | 36 | Alfanumérico |
| codigoBanco | Corresponde al código de compensación de la entidad financiera que realiza la operación. Ver tabla de valores | S | 4 | Numérico |
| fechaTransmision | Fecha de transmisión del mensaje. Aplicar la notación yyyy-mm-ddThh:mm:ss de la ISO 8601 | S | N/A | Fecha |
| idioma | Lenguaje preferido definido por la IETF RFC 1766. Valor por defecto es-co | S | 5 | Alfanumérico |
| DInforme | ||||
| fechaRecaudo | Fecha del reporte del recaudo. Aplicar la notación yyyy-mm-dd de la ISO 8601 | S | N/A | Fecha |
| esReemplazo | Indica si es el primer reporte o es un reemplazo de un reporte previo enviado. Ver tabla de valores | S | 1 | Numérico |
| valorRecaudo | Valor total del recaudo reportado por concepto y tipo de recaudo | S | 18 | Numérico |
| conteoDetalles | Conteo del numero de elementos que vienen en los detalles | S | 3 | Numérico |
| hash | Es un hash generado por la entidad financiera con información que solo ella conoce e información de la transacción. Ver detalles de su generación en el apartado 4.2.3.6 Calculo del hash | S | 1000 | Alfanumérico |
| detalles | Es una lista de objetos DInformeDetalle que informa el recaudo por concepto y por tipo de recaudo | S | N/A | DInformeDet alle |
| Nombre del Campo (Path) | Descripción | Obligatoriedad | Longitud | Tipo |
| DInformeDetalle | ||||
| concepto | Especifica el medio de pago. Los ceros a la izquierda deben informarse. Ver tabla de valores. | S | 3 | Alfanumérico |
| tipoRecaudo | Especifica las formas de pago con el cual realizó el recaudo. Ver tabla de valores. | S | 2 | Numérico |
| valorNormal | Valor recaudado en el horario normal | S | 18 | Numérico |
| valorExtendido | Valor recaudado en el horario extendido y/o adicional | S | 18 | Numérico |
| DInformeDiario | ||||
| encabezado | Objeto de tipo DEncabezadoInforme | S | N/A | DEncabezad oInforme |
| informe | Objeto de tipo DInforme | S | N/A | DInforme |
4.2.2.1. Ejemplo del mensaje request para consulta
4.2.2.2. Ejemplo de trama de request para Consulta
POST /GerPagoBancosRest_Recaudo/api/v1/informesdiarios/2019-03-13 HTTP/1.1
Host: 10.255.5.103:8282
Connection: keep-alive
Content-Length: 673
Authorization: Bearer
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiI5MDAwMDAwMDA2MDAwNC0wLTg5MDkwMzkzOCIsImF1ZCI6WyJLVHNsTEg3UmhOeWxHOGZHQjlXM0FScjhmbEFhIl0sImlzcyI6Imh0dHBzOlwvXC9tdWlzY2EuZGlhbi5nb3YuY28iLCJleHAiOjE1MjIyNjEyNTIsImlhdCI6MTUyMjI1NzY1Miwicm9sIjoiaHR0cHM6XC9cL2dvb2dsZS5jb20uY28iLCJqdGkiOiIzZDMzOWFjZC1lMzM1LTRiMGUtYjFlYy01NTgzYzQxY2M5NTcifQ.IX1O_b5kpK_gX4He8JzX-NiYuhOB4sUdGvvH5r8rl2w ClientId: KTslLH7RhNylG8fGB9W3ARr8flAa
{
4.2.3. Salidas
El mensaje de response en formato JSON se va a llamar DRespInformeDiario. Está formado por los objetos DEncabezadoRespuesta y DConfirmacionInformeDiario y cada uno de ellos se compone de los campos definidos a continuación:
| Nombre del Campo (Path) | Descripción | Obligatoriedad | Longitud | Tipo |
| DEncabezadoRespuesta | ||||
| idTransaccionOrigen | Identificador único de la transacción. Debe coincidir con el idTransaccion de la petición. | S | 36 | Alfanumérico |
| codigoRespuesta | Código de respuesta retornado por el Web Service de la DIAN. Ver tabla de valores | S | 3 | Numérico |
| severidad | Severidad de la respuesta. Ver tabla de valores | S | 10 | Alfanumérico |
| descripcionEstado | Descripción del estado de la respuesta, generado por el sistema. | S | 255 | Alfanumérico |
| fechaRespuesta | Fecha y hora de la respuesta. Aplicar la notación yyyy-mm-ddThh:mm:ss de la ISO 8601 | S | N/A | Fecha |
| idioma | Lenguaje en la que está la respuesta, definida por la IETF RFC 1766. Valor por defecto es-co | S | 5 | Alfanumérico |
| DConfirmacionInformeDiario | ||||
| versionServicio | Versión de Servicio | S | 36 | Alfanumérico |
| comprobante | Número de Comprobante | S | 36 | Alfanumérico |
| estado | Estado de la operación. Ver tabla de valores | S | 36 | Alfanumérico |
| hash | Cadena de confirmación que envía la DIAN y se genera usando el PrivateKeyDian, para que el banco lo verifique con la PublicKeyDian. | S | 1000 | alfanumérico |
| DRespInformeDiario | ||||
| encabezado | Objeto de tipo DEncabezadoRespuesta | S | N/A | DEncabezad oRespuesta |
| confirmacion | Objeto de tipo DConfirmacionInformeDiario | S | N/A | DDocumento |
4.2.3.1. Ejemplo del mensaje response para consulta con respuesta exitosa
4.2.3.2. Ejemplo de trama response para request con respuesta exitosa
4.2.3.3. Ejemplos del mensaje response para request con respuesta no exitosa
4.2.3.4. Ejemplo de trama response para consulta con respuesta no exitosa
HTTP/1.1 400 Bad Request
4.2.3.5. Mensaje response para códigos de respuesta 401, 500 y 503
Los códigos de respuesta 500, 503 o 401 no se responden usando la estructura definida en los servicios debido a que nunca alcanza a llegar al servicio. Son interceptados por la capa de seguridad o arquitectura y devueltos con el código HTTP y una breve descripción.
Los mensajes entregados tienen la siguiente estructura
{
"codigo": 401,
"mensaje": "Autenticación fallida",
"descripcion": "Datos de autenticación inválidos"
}
{
"codigo": 401,
"mensaje": "Unauthorized",
"descripcion": "The request requires user authentication"
}
{
"codigo": 500,
"mensaje": "ClientId no autorizado para utilizar este token",
"descripcion": "java.lang.Exception: ClientId no autorizado para utilizar este token"
}
{
"codigo": 503,
"mensaje": "Autenticación fallida",
"descripcion": "Autenticación no disponible
}
4.2.3.6. Cálculo del hash.
El hash que se solicita en la notificación no está relacionado con el hash que se usa en la consulta (correspondiente a un numero de 6 cifras). Es un atributo que se debe calcular para cada operación basado en el algoritmo RSA-2048. A continuación, se explica la forma de generarlo:
1. Los Bancos generan par de llaves PublicKeyOrg, PrivateKeyOrg y entregan la PublicKeyOrg a la DIAN.
2. La DIAN entregará la cadena PublicKeyDIAN con la cual los bancos calcularán el hash para la notificación y esta llave debe ser resguardada por la entidad y no debe hacerse pública.
3. Se deben concatenar los atributos [idTransaccion]-[valorRecaudo]-[fechaRecaudo]- [esReemplazo]- [conteoDetalles]. Ejemplo:
a. Se tiene un PrivateKeyOrg, que para este ejemplo será "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvSTdhStV02HptklX7ijmzaMQH8I6zNsAazak6bBj01QHBU+HA3b/irV41DnzbdnpkUxG0pUC72EyCXFKz2ULXtg4TVmw5zNji3BY2x45v2rC1TT3vdgkRf9LCmZ+ks7a5bUwKbe/DHl05bah4BI29CU3G+ntWANoPCknZWxZFSEPdNukaSuqRmaKCCHRdSpxr2L4k048ju6fGtuSaZ4JMDTicM5WUrpqGrIkuOl9IkkPqAr6UEWCUzZsbAeQHOQkJXV0VnUg6HbaqLlAkIg0b6cW8e+BX+bBpwv8XSOPKyUS4tqAfcZdxP5t7PlrYFbPmFAnHX4fatDAAkHthUtrqwIDAQAB".
b. El idTransacción es "92b17643-328a-4a66-b283-c02741fe8e9c".
c. Un valor recaudado de "1345000"
d. Y una fechaRecaudo igual a "2018-08-12"
e. esReemplazo igual a 1
f. conteoDetalles igual a 5
Debo concatenar dichos valores así, sin espacios:
[92b17643-328a-4a66-b283-c02741fe8e9c]-[1345000]-[2018-08-12]-[1]-[5]
A dicha cadena se le debe aplicar el algoritmo un cifrado RSA-2048 obteniendo el resultado:
"uqIpgh8E3TD70hWcSJhjuopFI0s9okZjdbpNuCWlhPu8gSNbiQbo6/AyZanEMSwDMkAU5soS6misweCSgCrVQXZZ6yyrk0qRAmrqFFS16yo+5c+poNK2l3z0A+/2CGCtfi7Xhisso0aG/VF8SHR+WxGNrEIHXka8t+cGZrSbE4fBPhW9KpURrO8o3X6ftPBunQd4ZVWGJiwCSk+6wpB31HOU39+kCj88LHu/mIrYnSnPyw/9m1ksOy3wrTtVDZQVbg1r/erk/wLjy+GUD3hXDpy0z7BCTYymyMrOjufYEvqMJ1C+buaAEoBj57j4Rr/7RjTdW96vcUwX14qFFgIh2A=="
NOTA: Sin las comillas.
4. El valor resultado del RSA-2048, es decir la cadena
"uqIpgh8E3TD70hWcSJhjuopFI0s9okZjdbpNuCWlhPu8gSNbiQbo6/AyZanEMSwDMkAU5soS6misweCSgCrVQXZZ6yyrk0qRAmrqFFS16yo+5c+poNK2l3z0A+/2CGCtfi7Xhisso0aG/VF8SHR+WxGNrEIHXka8t+cGZrSbE4fBPhW9KpURrO8o3X6ftPBunQd4ZVWGJiwCSk+6wpB31HOU39+kCj88LHu/mIrYnSnPyw/9m1ksOy3wrTtVDZQVbg1r/erk/wLjy+GUD3hXDpy0z7BCTYymyMrOjufYEvqMJ1C+buaAEoBj57j4Rr/7RjTdW96vcUwX14qFFgIh2A==" es lo que debe ir al atributo hash.
5. La DIAN usará el PublicKeyOrg para descifrar y así verificar que la información realmente fue generada por el banco (cada entidad tiene un PrivateKeyOrg único, el cual no podrá compartir y será su responsabilidad el proteger el acceso al mismo). Una vez se aplique, la cadena se obtiene:
[92b17643-328a-4a66-b283-c02741fe8e9c]-[1345000]-[2018-08-12]-[1]-[5]
Que representa la cadena originalmente emitida y que corresponde a los valores que vienen en la transacción.
6. La DIAN usará su PrivateKeyDIAN para generar un hash que hace parte del acuse de recibo.
7.
5. Riesgos
Elección del modelo de seguridad.
Teniendo en cuenta la flexibilidad en el modelo de seguridad, la DIAN define las condiciones de seguridad de su servicio y los riesgos de seguridad.
El representante de la DIAN debe definir, en conjunto con el equipo técnico de su entidad, los controles que se implementarán en la integración entre las dos entidades. Para esta actividad puede asesorarse con el personal de la Entidad Financiera. Una vez definidos se deberán marcar en este documento, en la siguiente sección, ya que hace parte del Web Service a implementar entre la Entidad Financiera y la DIAN por lo que es de estricto cumplimiento por ambas partes.
A continuación, marque con una X los controles definidos con el equipo técnico en el desarrollo del servicio. Se debe tener en cuenta que se pueden tener varios controles para mitigar el mismo riesgo y que se repiten controles para los diferentes riesgos. (Como mínimo se debe seleccionar un control por riesgo).
| Riesgo | Captura de información en tránsito | |
| Detalle del riesgo | Una persona mal intencionada puede interceptar los datos que se intercambian entre La Entidad Financiera y la DIAN mediante técnicas de hombre en el medio o de captura de información en tránsito. La fuga de esta información puede ser usada para desprestigiar la imagen de alguna de las dos organizaciones o puede ser usada en contra de los clientes del recaudador. Ambas empresas, tanto la Entidad Financiera como la DIAN, tienen la responsabilidad de proteger esta información lo que implica que se puede llevar a un incumplimiento regulatorio o demandas por parte de los clientes. Si mecanismo de autenticación definido entre las partes para realizar las operaciones es basado en usuario y contraseña (autenticación básica), el no proteger la información en tránsito puede llevar a una suplantación posterior. La Entidad Financiera no puede, por regulación de la Superintendencia Financiera, establecer la conexión sin la elección de alguno de los siguientes controles. | |
| Tipo de control | Cifrado de los datos en tránsito entre las dos entidades | Elección |
| Controles | Control: VPN Efectividad: Media Riesgo residual: No se protege la conexión de extremo a extremo, ya que la VPN se realiza usualmente entre firewall o equipos de borde de la red, quedando un tramo de la comunicación sin mecanismo de cifrado entre el equipo de borde y el servidor que expone el servicio. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | |
| Control: HTTPS Efectividad: Alta Riesgo residual: En ocasiones la capa del HTTPS llega hasta un balanceador de carga o algún equipo de borde relacionado con seguridad (WAF, Proxy reverso, Security Gateway, etc) que se encuentra como intermediario, dejando la comunicación expuesta en el tramo restante. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | ||
| Riesgo | Suplantación de la DIAN | |
| Detalle del riesgo | Una persona mal intencionada puede ubicar un sistema en el medio de la comunicación haciéndose pasar por la DIAN, bajo la técnica de hombre en el medio. Habiendo hecho esto puede hacer 3 cosas: 1. Recibir todas las conexiones provenientes de la Entidad Financiera y no llevarlas a la DIAN, causando una denegación de servicio. Si el sistema responde a las peticiones de la Entidad Financiera en un formato válido, la denegación de servicio se detectaría al hacer un proceso de conciliación. 2. Capturar la información que se transmite entre la Entidad Financiera y la DIAN, que puede incurrir en una futura suplantación de la Entidad Financiera. Más detalle en el riesgo "Captura de información en tránsito" de este documento. 3. Modificación de los datos transmitidos para su propio beneficio o de terceros. Más detalle en el riesgo "Perdida de integridad de los mensajes". | |
| Tipo de control | Mecanismo para autenticar al recaudador | Elección |
| Controles | Control: VPN Efectividad: Alta Riesgo residual: No se protege la conexión de extremo a extremo, ya que la VPN se realiza usualmente entre firewall o equipos de borde de la red. La Entidad Financiera autenticaría al otro extremo de la VPN pero no al equipo donde se expone el servicio. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | |
| Control: HTTPS Efectividad: Alta Riesgo residual: Riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación | ||
| Riesgo | Suplantación de la Entidad Financiera | |
| Detalle del riesgo | Se podría suplantar a la Entidad Financiera inyectando tramas en el servicio de la DIAN para generar eventos de fraude donde se realicen notificaciones de un recaudo sin tener un proceso de recaudo de dinero real. El riesgo está asociado al tipo de negocio de la DIAN. Por ejemplo, el pago de facturas de mercancía puede involucrar la entrega de éstas antes de poder validar la veracidad del recaudo. | |
| Tipo de control | Mecanismo de autenticación de la Entidad Financiera | Elección |
| Controles | Control:Validación de IP Efectividad: Baja Riesgo residual: La dirección IP puede ser suplantada tanto en redes internas como en redes externas a la DIAN. Nota: Se recomienda siempre usar este control como complementario por la facilidad de implementación. | |
| Control: Autenticación básica (Usuario de conexión y contraseña) Efectividad: Media - baja Riesgo residual: El usuario y contraseña en un escenario ideal debe ser asignado y parametrizado en los sistemas de la DIAN por la Entidad Financiera. En un proceso diferente es posible que no se tenga una custodia transparente y puede incurrir en fraude interno. Si se analiza en conjunto con los riesgos "Captura de información en tránsito" y "Suplantación del recaudador" las credenciales pueden ser capturadas por una persona mal intencionada con el fin de suplantar a la Entidad Financiera. | ||
| Control: VPN Efectividad: Media Riesgo residual: Una vez establecida la VPN es posible definir qué sistemas pueden enviar información a través de la VPN. Sin embargo, hay un riesgo de suplantación por sistemas internos, ya que la validación se realiza sólo en la VPN y no en el servicio expuesto. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | ||
| Control: Autenticación de cliente en el HTTPS Efectividad: Alta Riesgo residual: Riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | ||
| Control: Validación de firma digital de mensajes enviados por la Entidad Financiera. Efectividad: Alta Riesgo residual: Riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación | ||
| Riesgo | Perdida de integridad de los mensajes | |
| Detalle del riesgo | La ausencia de un control de integridad permite modificar los mensajes intercambiados entre la DIAN y la Entidad Financiera. Esto permite la modificación de valores para lograr un fraude en el que el valor pagado difiere al valor reportado al recaudador. | |
| Tipo de control | Mecanismo de validación de integridad de los datos | Elección |
| Controles | Control: VPN Efectividad: Media Riesgo residual: El control de integridad se da entre los equipos de borde de las empresas, dejando fuera del alcance del control las conexiones que hay entre los equipos de borde y los sistemas del servicio. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | |
| Control: HTTPS Efectividad: Media - alta Riesgo residual: En ocasiones la capa del HTTPS llega hasta un balanceador de carga o algún equipo de borde relacionado con seguridad (WAF, Proxy reverso, Security Gateway, etc.) que se encuentra como intermediario, dejando la comunicación expuesta en el tramo restante. También están los riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | ||
| Control: Firma digital Efectividad: Alta Riesgo residual: Existen riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. | ||
| Riesgo | Posible ausencia de validez jurídica de mensajes intercambiados con la Entidad Financiera por falta de una firma digital o firma electrónica. | |
| Detalle del riesgo | Las firmas digitales además de ser un control técnico también son consideradas un control jurídico, donde una firma de un mensaje intercambiado por las entidades y éste firmado tiene una validez jurídica si se realiza de forma adecuada. La ausencia de esta firma puede implicar la ilegitimidad del mensaje ante un juez. | |
| Tipo de control | Mecanismo de no repudio con validez jurídica | Elección |
| Controles | Control: Firma digital con certificado firmado por entidad certificadora válida externa. Efectividad: Alta Riesgo residual: Existen riesgos relacionados a la criptografía, que en una evaluación de alto nivel se pueden considerar despreciables asumiendo la correcta implementación. |
6. Anexos
6.1. Tablas de códigos
Código de Respuesta
| Código Respuesta | Nombre Respuesta | Detalle de la Respuesta | Acción a Seguir por el Banco |
| 200 | Éxito | La transacción ha sido exitosa | N/A |
| 400 | Formato Invalido | El formato de la trama es incorrecto. Para el caso en que se presente que el mensaje llegue corrupto o con JSON mal formado al cliente. | Ajustar la trama y enviarla nuevamente |
| 401 | Acceso no Permitido | El header de autenticación no es válido. Acceso denegado a aplicación. | Obtener un token valido y enviar la trama |
| 403 | Ya fue enviado | El informe ya fue enviado para la fecha de recaudo especificada | Se requiere informar que es un reemplazo con una fecha-hora superior al enviado anteriormente. |
| 404 | No se encuentra un informe con los criterios dados. | Cuando se envía el informe de reemplazo y no se encuentra un informe inicial | Ajustar los datos del informe y enviar nuevamente |
| 405 | Plazo cerrado | La fecha de recaudo reportada en el informe supera la fecha límite para la entrega del mismo | Ajustar los datos del informe y enviar nuevamente |
| 406 | Valor Incorrecto | El valor total del recaudo reportado no es igual a la sumatoria del detalle reportado | Ajustar los datos del informe y enviar nuevamente |
| 409 | Nro. de Transacción Duplicado | El identificador de la transacción ya se encuentra relacionado a otro informe | Ajustar los datos del informe y enviar nuevamente |
| 417 | Hash de verificación errado | Se genera cuando el hash RSA-2048 es incorrecto. | Ajustar los datos del informe y enviar nuevamente |
| 503 | Mantenimiento del Sistema | Mantenimiento de la plataforma o sistema. Para el caso en que el cliente realice mantenimientos preventivos al sistema. | Realizar reintentos acordes al modelo operativo |
| Código Respuesta | Nombre Respuesta | Detalle de la Respuesta | Acción a Seguir por el Banco |
| 504 | Error de Conexión | Falla de infraestructura. Para cuando se presenten errores en el canal de comunicación. | Realizar reintentos acordes al modelo operativo |
NOTA: El error 503 o 401 no se responden usando la estructura definida en los servicios debido a que nunca alcanza a llegar al servicio. Son interceptados por la capa de seguridad y devueltos con el código HTTP y una breve descripción.
Severidad de la Respuesta
| Código Respuesta | Detalle de la Respuesta |
| ERROR | Hubo un error en la petición lo suficientemente severa para que no se pudiera dar una respuesta. La transacción no fue procesada. |
| WARNING | Hubo un problema con la petición, pero se presenta una respuesta válida. La transacción fue procesada exitosamente, |
| INFO | La transacción fue procesada exitosamente, |
Código del Banco
Los valores para el campo indicado son listados a continuación:
| Código | Descripción |
| 1 | BANCO DE BOGOTA |
| 2 | BANCO POPULAR |
| 6 | ITAÚ CORPBANCA COLOMBIA S A |
| 7 | BANCOLOMBIA |
| 9 | CITIBANK |
| 12 | BANCO GNB SUDAMERIS |
| 13 | BBVA COLOMBIA |
| 19 | BANCO COLPATRIA |
| 23 | BANCO DE OCCIDENTE |
| 32 | BANCO CAJA SOCIAL |
| 40 | BANCO AGRARIO |
| 51 | BANCO DAVIVIENDa |
| 52 | BANCO AV VILLAS |
Indicador del informe
Los valores para el campo indicado son listados a continuación:
| Código | Descripción |
| 1 | Inicial |
| 2 | Reemplazo |
Horario
Los valores para el campo indicado son listados a continuación:
| Código | Descripción |
| 1 | Normal |
| 2 | Extendido |
Tipo de Recaudo
| Código | Descripción |
| 1 | Efectivo Presencial |
| 3 | Efectivo Canales Electrónicos |
| 5 | TIDIS |
| 6 | CERT |
| 9 | TRT (Títulos renovación del territorio) |
| 10 | CINA (Certificados de Inversión Audiovisual en Colombia ) |
Estado del pago
Los valores para el campo indicado son listados a continuación:
| Código | Descripción |
| Processed | El informe ha sido procesado, y no puede ser cancelado |
Código estadístico
Los valores para el campo indicado son listados a continuación:
| Código | Descripción |
| 004 | Renta |
| 005 | Impuesto a las Ventas |
| 006 | Retención en la Fuente RENTA |
| 007 | Retención en la Fuente VENTAS |
| 008 | Retención en la Fuente TIMBRE |
| 009 | Retención Impuesto Nacional al Consumo de Bienes Inmuebles |
| 010 | Retención Contribución Especial Laudos Arbitrales |
| 011 | Impuesto Unificado bajo el Régimen Simple de Tributación |
| 012 | Impuesto Complementario de Normalización Tributaria |
| 020 | Impuesto Global a la Gasolina y ACPM |
| 021 | Impuesto Nacional al Consumo |
| 022 | Ganancia Ocasional |
| 054 | Impuesto al Patrimonio e Impuesto para Preservar la Seguridad Democrática Decreto 1838/2002 |
| 055 | Sanción Declaración Individual Precios de Transferencia |
| 056 | Sanción Declaración Consolidada Precios de Transferencia |
| 057 | Impuesto a la Riqueza y su complementario de Normalización Tributaria Ley 1739 de 2014 |
| 064 | Retención Impuesto Sobre la Renta para la Equidad CREE |
| 065 | Impuesto Sobre la Renta para la Equidad CREE |
| 072 | Aduanas (Arancel, IVA (Otros, Intereses y Sanciones Cambiarias) |
| 086 | Impuesto Nacional al Carbono |
| 099 | Gravamen a Movimientos Financieros |
6.2. Especificaciones técnicas REST
Se anexan con el documento los archivos:
- API REST-InformeDiarioRecaudo-yyyymmddhhm-swagger20.json. Especificación Swagger del servicio REST
Proyecto: 58-2020-ARQUITECTURA
Especificación técnica Interoperabilidad
Entidades Financieras
FEBRERO 2021
Versión 5.0
TABLA DE CONTENIDO
1. Introducción.
2. Descripción general del servicio.
2.1 Servicio de autenticación
2.2 Reportar recaudo.
3. Ambientes.
3.1 Ambiente de pruebas.
3.2 Ambiente productivo.
4. Autenticación.
4.1 Autenticar.
Datos de entrada:
Datos de salida:
Aclaraciones:
4.2 Cifrado AES-128:
4.3 Refrescar Token
Entradas:
Datos de salida:
5. MENSAJES DE RESULTADO DEL PROCESO DE CONEXIÓN.
6. Recursos
6.1 FlujoCaja/Recaudo/Reportar
6.1.1 Parámetros de entrada
6.1.2 Parámetros de salida.
7. Anexos.
7.1 Listado de conceptos.
7.2 Tipos de recaudo.
7.3 Listado de códigos de respuestas.
TABLAS
Tabla 1 - Datos de la petición de autenticación
Tabla 2 - Atributos datos de salida.
Tabla 3 - Entradas Body.
Tabla 4 - Salidas Body.
Tabla 5 - Errores.
Tabla 6 - Definición RecaudoDiarioRequestModel
Tabla 7 - Definición EncabezadoRequestModel.
Tabla 8 - Definición InformeModel.
Tabla 9 - Definición RecaudoModel.
Tabla 10 - Definición RecaudoDiarioResponseModel
Tabla 11 - Definición EncabezadoResponseModel
Tabla 12 - Lista de conceptos.
Tabla 13 - Tipos de Recaudos.
Tabla 14 - Códigos de Respuesta.
ILUSTRACIONES
Ilustración 1 - Correo del MHCP
Ilustración 2 - Pantalla para el cambio de contraseña.
Ilustración 3 - Pantalla de bienvenida.
Ilustración 4 - Body de envio.
Ilustración 5 - Body a enviar.
Ilustración 6 - Body con información cifrada.
Ilustración 7 - Header con el token solicitado.
CONTROL DE CAMBIOS
| FECHA | VERSIÓN | DESCRIPCIÓN DEL CAMBIO | ASESOR SUG |
APROBACIÓN
| FECHA | VERSIÓN | DESCRIPCIÓN DEL CAMBIO | ASESOR SUG |
1. INTRODUCCIÓN
El presente documento describe la funcionalidad de un recurso Web API expuesto por parte del Ministerio de Hacienda y Crédito Público, cumpliendo con la normativa vigente que aplica al proceso, para el reporte de recaudos diarios realizados por las entidades financieras o modificaciones a reportes enviados anteriormente con la finalidad de mejorar los tiempos de procesamiento de la información.
2. DESCRIPCIÓN GENERAL DEL SERVICIO
Esta sección describe la funcionalidad Web API que recibe la información de recaudos diarios emitidos por las entidades financieras. A continuación, las operaciones o recursos disponibles para esta interoperabilidad.
2.1 Servicio de autenticación
Para realizar el consumo de un recurso del Web API del ministerio de hacienda y crédito publica es requerido que la entidad realice la validación de la identidad mediante el servicio web de autenticación, el cual validara los datos enviados y generara un token JWT (Json Web Tokens) el cual se debe agregar a las peticiones que se realicen a los servicios web del ministerio.
2.2 Reportar recaudo
Los recaudos deben ser reportados consumiendo un recurso expuesto en el Web API para este fin, el cual cuenta las reglas de negocio que aceptan o rechazan la información enviada por las entidades financieras. En caso de rechazo de la información, es responsabilidad de la entidad financiera de corregir y enviar de nuevo la información de recaudo.
3. AMBIENTES
Esta sección describe los ambientes expuestos a las entidades financieras para reportar la información de recaudos:
3.1 Ambiente de pruebas
| Componente | URL |
| Autenticación | https://sts_ids4_prueba.minhacienda.gov.co/connect/tokenservice |
| Web API | https://ws_fcaja_prueba.minhacienda.gov.co/FlujoCaja |
3.2 Ambiente productivo
| Componente | URL |
| Autenticación | |
| Web API |
4. AUTENTICACIÓN
Previamente el MHCP enviara vía correo electrónico el usuario al buzón electrónico suministrado por los Bancos para que se realice el ingreso de la contraseña en principio para el ambiente de pruebas, posteriormente se realizara para el ambiente de producción. El correo enviado será como el que se presenta en la ilustración 1.
Ilustración 1 - Correo del MHCP
Al ingresar a la URL del correo, se desplegará la pantalla de la ilustración 2
Nota: La contraseña no puede ser superior a 15 Caracteres, debe contener letras y números puede contener caracteres especiales.
Ilustración 2 - Pantalla para el cambio de contraseña
Una vez finalizado el proceso de cambio de contraseña, ilustración 3. Debe generar la siguiente pantalla:
Ilustración 3 - Pantalla de bienvenida
Nota: De no hacerlo pruebe por favor con el navegador Internet Explorer.
Una vez se logre cambiar la contraseña, la entidad enviara un correo notificando al ministerio de hacienda de su realización a las siguientes personas:
hernan.garcia@minhacienda.gov.co Líder técnico – Flujo de caja
consuelo.gonzalez@minhacienda.gov.co Gerente del proyecto – Flujo de Caja
Moises.ramos@minhacienda.gov.co Líder funcional – Flujo de caja
Ricardo.rincon@minhacieda.gov.co Apoyo funcional – Flujo de caja
Con esta notificación se procede a enviar los criterios de:
Id_Client: XXXXXXXXXXXXXXXXXX
Client_Secret: YYYYYYYYYYYYYYY
Encryption Key: ZZZZZZZZZZZZZZZ
Se enviará el archivo con extensión. pem, el cual se debe incorporar el ciframiento del campo "HASH".
El esquema de autenticación presenta dos escenarios/operaciones:
OBSERVACIONES
- La obtención de cualquier código de respuesta HTTP diferente a 200 OK en el consumo de servicios de autenticar, renovar o revocar se considera como error.
4.1 Autenticar.
Método HTTP: POST https://sts_ids4_prueba.minhacienda.gov.co /connect/tokenservice
Dentro de este contexto, el sistema externo obtendrá un token del sistema de i dentidad del MHCP.
Aquí se solicita la siguiente información para poder acceder a un token:
Datos de entrada:
| Parámetro/Objeto | Tipo Dato | Longitud | Tipo | Descripción |
| grant-type | String | 15 | Query | Atributo obligatorio que representa el tipo de operación, siempre será la palabra "password" literal. |
| client_id | String | 50 | Query | Representa la identificación de la aplicación flujo de caja que se conecta. |
| client_secret* | String | 150 | Query | Representa el resultado de cifrarelclient_secret usando AES-128 conforme al procedimiento que se describe en el apartado 4.2. La longitud máxima del campo antes de cifrado es 50. |
| scope | String | 30 | Query | Atributo obligatorio que representa el identificador del recurso al que se va a acceder seguido de la palabra "flujo_caja offline_access" literal. |
| Username | String | 15 | Query | Usuario |
| Password* | String | 150 | Query | Representa el resultado de cifrar el password usando AES-128 conforme al procedimiento que se describe en el apartado 4.2.La longitud máxima del campo antes de cifrado es 15 |
Tabla 1 - Datos de la petición de autenticación
*ESTOS ATRIBUTOS CORRESPONDEN A VALORES CIFRADOS Y DEBEN SER CALCULADOS CONFORME SE DESCRIBE EN EL APARTADO 4.2
Datos de salida:
Un objeto DToken en el body del response con los siguientes atributos
| Atributo | Tipo Dato | Longitud | Descripción |
| clientId | String | 50 | Identifica el ClientId al que se le genera el token. |
| accessToken | String | 50 | Un identificador del token |
| idToken | String | 500 | Es el token JWT |
| refreshToken | String | 50 | Token de renovación automática |
| grant_type | String | 15 | Siempre será "Bearer" |
| expireIn | Number | NA | Identifica el tiempo de expiración del token en segundos. |
Tabla 2 - Atributos datos de salida
Aclaraciones:
- La duración del token puede variar en el tiempo, producto de cambios en las políticas internas de la entidad. Por lo tanto, siempre se deberá verificar la vigencia de este al momento de la obtención para confirmar la fecha de expiración.
- En un ambiente de producción, donde existirán varios "servidores" clientes de Identidad, cada uno deberá autenticarse de forma independiente. Esto significa que cada "servidor" cliente deberá gestionar su token, así como renovarlo o revocarlo de forma autónoma.
- Solo deberían generarse token que van a ser utilizados. Cuando el token no se requiera más para su uso, deberá revocarse.
No existen limitaciones para la cantidad de tokens generados por un cliente durante un tiempo particular. Sin embargo, esto no evita que las políticas y reglas en el uso de las APIs detecten los malos usos y generen restricciones al cliente.
4.2 Cifrado AES-128:
Para el cifrado de los atributos se debe realizar el siguiente procedimiento:
- Se debe concatenar el contenido a encriptar con la fecha del sistema. (Debe estar sincronizado con la hora colombiana al minuto usando estándar ISO 8601 Ejemplo: [ClientSecret]-[2018-08-13T09:30:47] y [Password]- [2018-08-13T09:30:47]
- Se aplica el algoritmo de encriptación AES-128 CBC al contenido utilizando el EncryptionKey (alfanumérico de 16 caracteres) dado por MHCP al registrar la aplicación del Banco. Ejemplo del EncryptionKey: "68BD795F133F0132"
- La MHCP descifrará el contenido, comparando que la fecha descifrada no sea menor en 1 minuto ni mayor en 5 minutos de la hora actual. Una vez verificado la hora exitosamente, realizará el proceso de autenticación normal usando el "clientId" y "password" obtenidas del descrifrado para retornar un token válido.
Ejemplo detallado del procedimiento para el Client Secret
Se tiene un client secret inicial así:
CLIENT SECRET Cadena Inicial:
trttwNZ0OMkHS7CC1_nFx6wlKnca
Definición Fecha:
2020-07-06T19:09:10
Formación cadena:
[trttwNZ0OMkHS7CC1_nFx6wlKnca]-[2020-07-06T19:09:10]
Características para el Cifrado de la cadena:
AES
CBC
128 Key Size
Ejemplo Encryption Key:
6A28CE819A9E001A
Cifrado Aplicado
oTr1sm/Yk5lkJVkkRIj6QASsKukRahpvltJoXLes0q2K1llw8uWn/lpGWigdU8BMztztB2+rCrazzMPYbT7qxw==
En la ilustración 1, se puede ver el body que se debe enviar con los parámetros cifrados para solicitar el token
Ilustración 4 - Body de envio
4.3 Refrescar Token.
Método HTTP: POST https://sts_ids4_prueba.minhacienda.gov.co /connect/tokenservice
Dentro de este contexto, se busca obtener un nuevo token cuando el token entregado se encuentra próximo a vencer o vencido. Sólo se requiere el envío del refresh token en el Authorization
Entradas:
En el Body de la solicitud debe ir:
| Parámetro/Objeto | Tipo Dato | Longitud | Tipo | Descripción |
| grant-type | String | 15 | Query | Atributo obligatorio que representa el tipo de operación, siempre será la palabra "refresh_token" literal. |
| client_id | String | 50 | Query | Representa la identificación de la aplicación que se conecta. |
| Parámetro/Objeto | Tipo Dato | Longitud | Tipo | Descripción |
| client_secret* | String | 150 | Query | Representa el resultado de cifrarelclient_secret usando AES-128 conforme al procedimiento que se describe en el apartado 4.2. La longitud máxima del campo antes de cifrado es 50. |
| refresh_token | String | 50 | Query | Token de renovación automática |
Tabla 3 - Entradas Body
Datos de salida:
Un objeto DToken en el body del response con los siguientes atributos:
| Atributo | Tipo Dato | Longitud | Descripción |
| clientId | String | 50 | Identifica el ClientId al que se le genera el token. |
| accessToken | String | 50 | Un identificador del token |
| idToken | String | 500 | Es el token JWT |
| refreshToken | String | 50 | Token de renovación automática |
| grant_type | String | 15 | Siempre será "Bearer" |
| expireIn | Number | NA | Identifica el tiempo de expiración del token en segundos. |
Tabla 4 - Salidas Body
En la ilustración 2, se puede ver el body que se debe enviar con los parámetros cifrados para solicitar el token usando el token de refresco
5. MENSAJES DE RESULTADO DEL PROCESO DE CONEXIÓN
En el proceso de establecimiento de conexión al servidor de Identity server 4, puede generar los siguientes mensajes controlados por la aplicación.
| Error | Nombre Error | Descripción |
| invalid_client | Error de cliente invalido. | Esto se debe a que el client id o el client secret no concuerdan con los parametrizados. |
| invalid_decode_parameter | Error al realizar la decodificación | Esto se debe a que algún parámetro no se encripto correctamente |
| invalid_scope | Scope invalido | Esto se debe a que se está solicitando acceso a algún recurso que no está permitido para este cliente. |
| unsupported_grant_type | Grant_type invalido | Siempre se debe dejar password en grant type |
Tabla 5 - Errores
6. RECURSOS
Las siguientes secciones describen detalladamente cada uno de los recursos expuestos en el Web API:
6.1 FlujoCaja/Recaudo/Reportar
Recurso protegido para recibir los reportes de los recaudos diarios en las entidades financieras.
Método: POST
6.1.1 Parámetros de entrada
El cuerpo del mensaje recibe un objeto complejo de tipo Consolidado en formato JSON cifrado usando AES-128 conforme al procedimiento que se describe en el apartado 4.2. el resultado de este proceso se asignará a un parámetro llamado Data.
Las siguientes tablas describen los campos incluidos dentro del objeto JSON antes de cifrar.
| Nombre | Tipo | Descripción |
| encabezado | EncabezadoRequestModel | Objeto de dominio |
| informe | InformeModel | Objeto de dominio |
Tabla 6 - Definición RecaudoDiarioRequestModel
| Nombre | Tipo | Longitud | Obliga torio | Descripción |
| idTransaccion | String | 36 | Si | Número de Control de Transacción provisto por la entidad. |
| codigoBanco | Number | Si | Código Identificación de Entidad Recaudadora. | |
| fechaTransmision | Datetime | Si | Fecha de transmisión del mensaje, Formato UTC (YYYY-MM-DDTHH:MM:SS) | |
| idioma | Sgtring | 5 | Si | Lenguaje en la que está la respuesta, definida por la IETFRFC 1766. Valor por defecto es es-co. |
Tabla 7 - Definición EncabezadoRequestModel
| Nombre | Tipo | Longitud | Obliga torio | Descripción |
| fechaRecaudo | Datetime | Si | Fecha de recaudo Formato (YYYY-MM-DD). Notación yyyy-mm-dd de la ISO 8601 | |
| esReemplazo | int | Si | Indica si es el primer reporte o es un reemplazo de un reporte previo enviado. 1- Reporte Inicial 2- Reemplazo | |
| valorRecaudo | Long | Si | Valor total del recaudo reportado por concepto y tipo de recaudo. | |
| conteoDetalles | Int | Si | Conteo del número de elementos que vienen en los detalles. | |
| hash | String | Si | Campo de Control de Integridad del mensaje. Ver detalles de su generación en el apartado "Calculo del campo Hash". | |
| detalles | List | Si | Es una lista de objetos RecaudoModel que informa el recaudo por concepto y por tipo de recaudo. |
Tabla 8 - Definición InformeModel
| Nombre | Tipo | Longitud | Obliga torio | Descripción |
| tipoRecaudo | Int | 2 | Si | Especifica las formas de pago con el cual realizo el recaudo. Referenciado en el Anexo, 7.2 Tabla 13. Tipos de Recaudo. |
| concepto | String | 3 | Si | Código estadístico que especifica el medio de pago. |
| valorNormal | Number | 18 | Si | Valor de recaudo en el horario normal. |
| valorExtendido | Number | 18 | Si | Valor de recaudo en el horario extendido y/o adicional. |
Tabla 9 - Definición RecaudoModel
Cálculo del campo "Hash"
Se define como alfanúmero de 1000. Es un atributo que se debe calcular para cada operación de reporte de recaudo basado en el algoritmo RSA-2048.
Para ello se concatenan los atributos definidos con la siguiente estructura [campo1]- [campo2]-…[campoN] y a esta cadena se le aplica el algoritmo RSA-2048 y la llave publica enviada en el correo (archivo extensión. pem) para generar el hash. Esta llave está generada con un tamaño de 2048 Bits y el hash debe generarse con un tipo de cifrado RSA/ECB/PKCS1Padding, la salida y el texto cifrado deberá ser en formato Base 64.
Para calcular el HASH se debe cumplir con el siguiente orden de concatenación separados por el atributo "pipe" (|).
idTransaccion|codigoBanco|fechaRecaudo|valorRecaudado|conteoDetalles|fechaTr ansmision
6.1.2 Parámetros de salida
Las siguientes tablas describen los parámetros de salida
| Nombre | Tipo | Descripción |
| encabezado | EncabezadoRequestMotel | Objeto de dominio |
| informe | InformeModel | Objeto de dominio |
Tabla 10 - Definición RecaudoDiarioResponseModel
| Nombre | Tipo | Longitud | Obliga-torio | Descripción |
| codigoRespuesta | Number | 3 | Si | Código de respuesta retornado por el Web Service |
| severidad | String | 10 | Si | Severidad de la respuesta (SUCCESS, WARNING, ERROR) |
| descripcionEstado | String | Si | Descripción del estado de la respuesta | |
| idTransaccionOrigen | String | 36 | Si | Identificador único de la transacción. Debe coincidir con el idTransaccion de la petición. |
| fechaRespuesta | DateTime | N/A | Si | Fecha y hora de la respuesta. Aplicar la notación yyyy-mm-ddThh:mm:ssZ de la ISO 8601 |
| idioma | String | 5 | Si | Lenguaje en la que está la respuesta, definida por la IETF RFC 1766. Valor por defecto es co |
Tabla 11 - Definición EncabezadoResponseModel
Ejemplo JSON sin cifrar
Ejemplo request JSON
{
"encabezado":
{
Características para el Cifrado de la cadena:
AES
CBC
128 Key Size
Ejemplo Encryption Key:
6A28CE819A9E001A
Cifrado Aplicado
lhj4f8hmdsiZYMzBREeYXx32hfQzcTVVhhvJzAg97z5wJW1+3Nx2B5EWwiwwQNJK7KnkTNGd9f3F8nnzsF1PAXTOBiUejkVWGejxvdMFYS7AqETh9l58Ex9juQqYm5YFcHf9xTV+e6Mc1+fRjfRCJhiSALJSoOT3H0YBfqSN0mb5VFl2nemSXB16xKigYXslr+R7+8jCx0eXnhgAY6RpH9WZb+a4FUSgifaMMxk3wptG+fNDypM9SS3BGWKv5OrTMDbKDcWGtIsAHimDBZYr/OuqmVjga7uWlRo+qHy5B+gsi2kfu/Yjy0lGJ8OxKMtB0eJ2zhkzJtqpkK9fQxnIuSK74cjzuKo2wOb8x8qOx2yhI8/tCVJ9W8SrREFQ9GlXzynJ0GBeIbwMVlDGjsXaKV76xpLbE1eG+0HuWO5WkpUhwIEE+Q6I9qqD5HEGBykiqz/6vSJxecVdSXNH1vSIeCQZklKa4vtyik66dmlhBiNMuuI6WW6iD9tKm4sGrqjhnsEoqgf7IRRb3gqafhj1ZImorcJoJ2J/GJwFVCymdh/IJgisCatfP8BcO905nq5p1FcY0bbGR6Wb0+49U5qVtti7nUVBcpFV28mH6AHFfhnEretIrWlcNouy SLzct+03dCNcX1C6uQrveoPbIOS8zEuYLlrIK/zI36mcMkIBOhRxp5/tIndhALCkJazvjLtntr00VRQYrW0jB4gUIDLimaAy1jn+qTckKM4sMk2i6GK8/qvg1mHP749iQLv45Y7MB4M8sobj55Sjf/4U6yDIZLGt2lUNYt52svYBvK3mjkeHuYCAgUWgzEyGaXjh0DnixwvoMmzLyLaqj4Umz0dbzZ7h4EOoA3OYj7wUww3TV65j0xF0/Mch99+teMxRJ5OYI57uZQyBmOGoOPCBioDU4os831053Fg4qmch56ueEVIxTBo1r1Rg/MVmWUU0U1825b6WkHjb3b1vrXYvfob0l6DYkTNxlcGvi4tZLduxTDst/Yxwcy4108XwKF/YlMA/JDGl569oJYowk9hZpVkqSsHJGdA2B85wh1nwmsR6ne8Mj+3DnONPHnK8HLbI+jo8k7MdDX6zH/CLxKpIV/rd0H3mjVu4GiENYR7Hlbc3f/pnSNu3bUiJJMa/VN9W+WWj1/89FpHZXWhjU+ZOMynGZlZn+kmJYjS8nq2UvyIs3mxbGGpAEz77sL/e7QVVJPBU8gy7nlVnn+pywFW8U8U8hTnMZIxyrOHrci7DTe9FqLXmxR S8gJ1tAsfagxifybB7ZYlm3mTXAT9H36BKZK22eD5E9Y07dOahTwwXpYvV3XE=
Ejemplo Request
{
Data: lhj4f8hmdsiZYMzBREeYXx32hfQzcTVVhhvJzAg97z5wJW1+3Nx2B5EWwiwwQNJK7KnkTNGd9f3F8nnzsF1PAXTOBiUejkVWGejxvdMFYS7AqETh9l58Ex9juQqYm5YFcHf9xTV+e6Mc1+fRjfRCJhiSALJSoOT3H0YBfqSN0mb5VFl2nemSXB16xKigYXslr+R7+8jCx0eXnhgAY6RpH9WZb+a4FUSgifaMMxk3wptG+fNDypM9SS3BGWKv5OrTMDbKDcWGtIsAHimDBZYr/OuqmVjga7uWlRo+qHy5B+gsi2kfu/Yjy0lGJ8OxKMtB0eJ2zhkzJtqpkK9fQxnIuSK74cjzuKo2wOb8x8qOx2yhI8/tCVJ9W8SrREFQ9GlXzynJ0GBeIbwMVlDGjsXaKV76xpLbE1eG+0HuWO5WkpUhwIEE+Q6I9qqD5HEGBykiqz/6vSJxecVdSXNH1vSIeCQZklKa4vtyik66dmlhBiNMuuI6WW6iD9tKm4sGrqjhnsEoqgf7IRRb3gqafhj1ZImorcJoJ2J/GJwFVCymdh/IJgisCatfP8BcO905nq5p1FcY0bbGR6Wb0+49U5qVtti7nUVBcpFV28mH6AHFfhnEretIrWlcNouy SLzct+03dCNcX1C6uQrveoPbIOS8zEuYLlrIK/zI36mcMkIBOhRxp5/tIndhALCkJazvjLtntr00VRQYrW0jB4gUIDLimaAy1jn+qTckKM4sMk2i6GK8/qvg1mHP749iQLv45Y7MB4M8sobj55Sjf/4U6yDIZLGt2lUNYt52svYBvK3mjkeHuYCAgUWgzEyGaXjh0DnixwvoMmzLyLaqj4Umz0dbzZ7h4EOoA3OYj7wUww3TV65j0xF0/Mch99+teMxRJ5OYI57uZQyBmOGoOPCBioDU4os831053Fg4qmch56ueEVIxTBo1r1Rg/MVmWUU0U1825b6WkHjb3b1vrXYvfob0l6DYkTNxlcGvi4tZLduxTDst/Yxwcy4108XwKF/YlMA/JDGl569oJYowk9hZpVkqSsHJGdA2B85wh1nwmsR6ne8Mj+3DnONPHnK8HLbI+jo8k7MdDX6zH/CLxKpIV/rd0H3mjVu4GiENYR7Hlbc3f/pnSNu3bUiJJMa/VN9W+WWj1/89FpHZXWhjU+ZOMynGZlZn+kmJYjS8nq2UvyIs3mxbGGpAEz77sL/e7QVVJPBU8gy7nlVnn+pywFW8U8U8hTnMZIxyrOHrci7DTe9FqLXmxR S8gJ1tAsfagxifybB7ZYlm3mTXAT9H36BKZK22eD5E9Y07dOahTwwXpYvV3XE= }
En la ilustración 3, se puede ver el Body que se debe enviar con la información cifrada
Ilustración 6 - Body con información cifrada
En la ilustración 4, se puede ver el Header con el token solicitado que se debe adjuntar a la petición para autenticar cada petición.
Ilustración 7 - Header con el token solicitado
7. ANEXOS
7.1 Listado de conceptos
Los conceptos permitidos están descritos en la Circular Externa No. 000021 del 15 de Agosto de 2017 emitida por la Dirección de Impuestos y Aduanas Nacionales DIAN en la sección No. 3. CODIGOS ESTADISTICOS.
En la tabla 12, se relacionan el listado de código actual que maneja la aplicación flujo de caja.
| CÓDIGO | DESCRIPCION |
| 004 | RENTA |
| 005 | VENTAS |
| 006 | RETEFTE |
| 013 | SANCIONES ENTIDADES AUTORIZADAS PARA RECAUDAR |
| 055 | SANCION DECLARACION INDIVIDUAL PRECIOS DE TRANSFERENCIA |
| 056 | SANCION DECLARACION CONSOLIDADA PRECIOS TRANSFERENCIA |
| 072 | ADUANAS |
| 010 | LAUDOS ARBITRALES |
| 054 | PATRIMONIO |
| 099 | GRAVAMEN IMPUESTO FINANCIERO - GMF |
| 020 | IMPUESTO GLOBAL A LA GASOLINA Y AL ACPM |
| 021 | IMPUESTO NACIONAL AL CONSUMO |
| 022 | GANANCIAS OCACIONALES |
| 065 | IMPUESTO CREE - CONTRIBUCION ESPECIAL PARA LA EQUIDAD |
| 064 | AUTORRETENCION CREE |
| 057 | IMPUESTO A LA RIQUEZA |
| 007 | RETE VENTAS |
| 008 | RETE TIMBRE |
| 086 | CARBONO |
| 009 | RTE VTA INMUEBLES |
| 011 | SIMPLE |
| 012 | NORMALIZACION |
| 014 | COVID19 RTE IMPTO |
| 015 | COVID19 RTE APORTE |
Tabla 12 - Lista de conceptos
7.2 Tipos de recaudo
La tabla 13 indica los tipos de recaudo unificados entre las dos entidades DIAN y MHCP
| Cod. | Descripción |
| 1 | Efectivo Presencial |
| 3 | Efectivo Canales Electrónicos |
| 5 | TIDIS |
| 6 | CERT |
| 9 | TRT (Títulos renovación del Territorio) |
| 10 | CINA (Certificados de Inversión Audiovisual en Colombia) |
Tabla 13 - Tipos de Recaudos
7.3 Listado de códigos de respuestas
La tabla 14, señala los códigos y mensajes, en el caso de presentarse errores
| Código | Nombre | Mensaje |
| 200 | Éxito | La transacción ha sido exitosa |
| 400 | Formato no válido | El formato de la trama es incorrecto. Para el caso en que se presente que el mensaje llegue corrupto o mal formado o no cumpla las validaciones |
| 401 | Acceso no permitido | El header de autenticación no es válido. Acceso denegado a aplicación. |
| 403 | Ya fue enviado | Cuando la transacción fue enviada con anterioridad |
| 404 | No encontrado | Se presenta en una transacción de reemplazo y la transacción a reemplazar no fue encontrada |
| 406 | Valor incorrecto | El valor reportado en el encabezado no corresponde con lo reportado en el detalle |
| 409 | Número de transacción duplicado | El número de transacción fue reportado en otra transacción |
| 417 | Hash de verificación errado | Se genera cuando el hash RSA-2048 es incorrecto |
| 500 | Error Interno | El servidor ha encontrado una situación que no sabe cómo manejarla. Son errores no devueltos por el negocio sino por otras capas de la arquitectura |
| 502 | Error de Conexión | Falla de infraestructura. Para cuando se presenten errores en el canal de comunicación. |
| Código | Nombre | Mensaje |
| 503 | Mantenimiento del Sistema | Mantenimiento de la plataforma o sistema. Para el caso en que el cliente realice mantenimientos preventivos al sistema |
| 504 | Error de Conexión | Falla de infraestructura. Para cuando se presenten errores en el canal de comunicación |
| 505 | Error de Sincronización Horaria | Diferencia horaria entre sistemas, se válida para garantizar confiabilidad en los valores de las fechas que contiene el mensaje. |