JurídicoESEN
🧾 DIAN · Circulares

Circular 2 de 2021 DIAN

(DEROGADA) - Traslado y Reporte de Recaudo de Impuestos Nacionales

Nº 22021
Ver en la fuente oficial ↗

Texto del documento

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ónFecha (dd/mm/aaaa)ResponsableDescripción
1.019/03/2019Clímaco Llamas Ernesto MedinaEspecificación Inicial del Servicio
1.114/02/2020Clímaco LlamasCorrección de url del servicio
1.230/03/2020Clímaco LlamasAjuste de tablas de códigos estadísticos acorde a la circular externa 3 de 22 de marzo de 2019
1.330/04/2020Clímaco LlamasAjuste a tabla de códigos estadísticos y tabla de tipos de recaudo.
1.3.112/05/2020Climaco LlamasAjuste a valor de atributo esReemplazo en los ejemplos.
1.4 30/10/2020Climaco LlamasSe 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 ServicioServicio de Informes de Recaudo
Nombre TécnicoInformes de Recaudo
Espacio de Nombres Producciónhttp://api.dian.gov.co/recaudo/informes
Espacio de Nombre Pruebashttp://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ónObligatoriedadLongitudTipo
Header del request para cualquier método 
clientIdEntregado por la DIAN, identificador dado a la aplicación registrada.S50 Alfanumérico
AuthorizationEs el idToken obtenido en la autenticación con identidad.S500Numé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ónEntrega de Informe de recaudo diario
Nombre Técnicoinformesdiarios
Comando HTTP Ambiente ProducciónPOST https://api.dian.gov.co/recaudo/informes/v1/informesdiarios/{fecha}
Comando HTTP Ambiente PruebasPOST https://apipruebasexternas.dian.gov.co/recaudo/informes/v1/ informesdiarios/{fecha}
Descripción OperaciónLa 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ónObligatoriedadLongitudTipo
DEncabezadoInforme  
idTransaccionIdentificador ú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ó.S36Alfanumérico
codigoBancoCorresponde al código de compensación de la entidad financiera que realiza la operación. Ver tabla de valoresS4Numérico
fechaTransmisionFecha de transmisión del mensaje. Aplicar la notación yyyy-mm-ddThh:mm:ss de la ISO 8601SN/AFecha
idiomaLenguaje preferido definido por la IETF RFC 1766. Valor por defecto es-coS5Alfanumérico
DInforme   
fechaRecaudoFecha del reporte del recaudo. Aplicar la notación yyyy-mm-dd de la ISO 8601SN/AFecha
esReemplazoIndica si es el primer reporte o es un reemplazo de un reporte previo enviado. Ver tabla de valoresS 1Numérico
valorRecaudoValor total del recaudo reportado por concepto y tipo de recaudoS18Numérico
conteoDetalles Conteo del numero de elementos que vienen en los detallesS3 Numérico
hashEs 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 hashS1000 Alfanumérico
detalles Es una lista de objetos DInformeDetalle que informa el recaudo por concepto y por tipo de recaudoS N/A DInformeDet alle
Nombre del Campo (Path)DescripciónObligatoriedadLongitudTipo
DInformeDetalle 
conceptoEspecifica el medio de pago. Los ceros a la izquierda deben informarse. Ver tabla de valores.S3Alfanumérico
tipoRecaudoEspecifica las formas de pago con el cual realizó el recaudo. Ver tabla de valores.S2 Numérico
valorNormalValor recaudado en el horario normal S18Numérico
valorExtendidoValor recaudado en el horario extendido y/o adicionalS18Numérico
DInformeDiario 
encabezadoObjeto de tipo DEncabezadoInformeS N/A DEncabezad oInforme
informe Objeto de tipo DInformeSN/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ónObligatoriedadLongitudTipo
DEncabezadoRespuesta 
idTransaccionOrigenIdentificador único de la transacción. Debe coincidir con el idTransaccion de la petición.S36Alfanumérico
codigoRespuestaCódigo de respuesta retornado por el Web Service de la DIAN. Ver tabla de valoresS3Numérico
severidadSeveridad de la respuesta. Ver tabla de valoresS10Alfanumérico
descripcionEstado Descripción del estado de la respuesta, generado por el sistema.S255 Alfanumérico
fechaRespuesta Fecha y hora de la respuesta. Aplicar la notación yyyy-mm-ddThh:mm:ss de la ISO 8601S N/AFecha
idioma Lenguaje en la que está la respuesta, definida por la IETF RFC 1766. Valor por defecto es-coS5Alfanumérico
DConfirmacionInformeDiario 
versionServicioVersión de Servicio S36Alfanumérico
comprobante Número de ComprobanteS 36Alfanumérico
estadoEstado de la operación. Ver tabla de valoresS36Alfanumérico
hashCadena de confirmación que envía la DIAN y se genera usando el PrivateKeyDian, para que el banco lo verifique con la PublicKeyDian.S 1000alfanumérico
DRespInformeDiario  
encabezadoObjeto de tipo DEncabezadoRespuesta SN/A DEncabezad oRespuesta
confirmacionObjeto de tipo DConfirmacionInformeDiarioSN/ADDocumento

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).

RiesgoCaptura de información en tránsito
Detalle del riesgoUna 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 controlCifrado de los datos en tránsito entre las dos entidades Elección
ControlesControl: 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.
RiesgoSuplantación de la DIAN
Detalle del riesgoUna 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 controlMecanismo para autenticar al recaudadorElección
ControlesControl: 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
RiesgoSuplantación de la Entidad Financiera
Detalle del riesgoSe 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 controlMecanismo de autenticación de la Entidad FinancieraElección
ControlesControl: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
RiesgoPerdida de integridad de los mensajes
Detalle del riesgoLa 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 datosElección
ControlesControl: 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.
RiesgoPosible ausencia de validez jurídica de mensajes intercambiados con la Entidad Financiera por falta de una firma digital o firma electrónica.
Detalle del riesgoLas 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 controlMecanismo de no repudio con validez jurídicaElección
ControlesControl: 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 RespuestaNombre RespuestaDetalle de la RespuestaAcción a Seguir por el Banco
200ÉxitoLa transacción ha sido exitosaN/A
400Formato InvalidoEl 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
401Acceso no PermitidoEl header de autenticación no es válido. Acceso denegado a aplicación.Obtener un token valido y enviar la trama
403Ya fue enviadoEl informe ya fue enviado para la fecha de recaudo especificadaSe requiere informar que es un reemplazo con una fecha-hora superior al enviado anteriormente.
404No se encuentra un informe con los criterios dados.Cuando se envía el informe de reemplazo y no se encuentra un informe inicialAjustar los datos del informe y enviar nuevamente
405Plazo cerradoLa fecha de recaudo reportada en el informe supera la fecha límite para la entrega del mismoAjustar los datos del informe y enviar nuevamente
406Valor IncorrectoEl valor total del recaudo reportado no es igual a la sumatoria del detalle reportadoAjustar los datos del informe y enviar nuevamente
409Nro. de Transacción Duplicado El identificador de la transacción ya se encuentra relacionado a otro informeAjustar los datos del informe y enviar nuevamente
417Hash de verificación erradoSe genera cuando el hash RSA-2048 es incorrecto. Ajustar los datos del informe y enviar nuevamente
503Mantenimiento 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 RespuestaNombre Respuesta Detalle de la Respuesta Acción a Seguir por el Banco
504Error de ConexiónFalla 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 RespuestaDetalle de la Respuesta
ERRORHubo un error en la petición lo suficientemente severa para que no se pudiera dar una respuesta. La transacción no fue procesada.
WARNINGHubo 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ódigoDescripción
1 BANCO DE BOGOTA
2BANCO POPULAR
6ITAÚ CORPBANCA COLOMBIA S A
7BANCOLOMBIA
9CITIBANK
12BANCO GNB SUDAMERIS
13BBVA COLOMBIA
19BANCO COLPATRIA
23BANCO DE OCCIDENTE
32BANCO CAJA SOCIAL
40BANCO AGRARIO
51BANCO DAVIVIENDa
52BANCO AV VILLAS

Indicador del informe

Los valores para el campo indicado son listados a continuación:

CódigoDescripción
1Inicial
2Reemplazo

Horario

Los valores para el campo indicado son listados a continuación:

CódigoDescripción
1Normal
2Extendido

Tipo de Recaudo

CódigoDescripción
1Efectivo Presencial
3Efectivo Canales Electrónicos
5 TIDIS
6CERT
9TRT (Títulos renovación del territorio)
10CINA (Certificados de Inversión Audiovisual en Colombia )

Estado del pago

Los valores para el campo indicado son listados a continuación:

CódigoDescripción
ProcessedEl 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ódigoDescripción
004Renta
005Impuesto a las Ventas
006Retención en la Fuente RENTA
007Retención en la Fuente VENTAS
008Retención en la Fuente TIMBRE
009Retención Impuesto Nacional al Consumo de Bienes Inmuebles
010Retención Contribución Especial Laudos Arbitrales
011Impuesto Unificado bajo el Régimen Simple de Tributación
012Impuesto Complementario de Normalización Tributaria
020Impuesto Global a la Gasolina y ACPM
021Impuesto Nacional al Consumo
022Ganancia Ocasional
054Impuesto al Patrimonio e Impuesto para Preservar la Seguridad Democrática Decreto 1838/2002
055Sanción Declaración Individual Precios de Transferencia
056Sanción Declaración Consolidada Precios de Transferencia
057Impuesto a la Riqueza y su complementario de Normalización Tributaria Ley 1739 de 2014
064Retención Impuesto Sobre la Renta para la Equidad CREE
065Impuesto Sobre la Renta para la Equidad CREE
072 Aduanas (Arancel, IVA (Otros, Intereses y Sanciones Cambiarias)
086Impuesto Nacional al Carbono
099Gravamen 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

FECHAVERSIÓNDESCRIPCIÓN DEL CAMBIOASESOR SUG
  

APROBACIÓN

FECHAVERSIÓN DESCRIPCIÓN DEL CAMBIOASESOR 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

ComponenteURL
Autenticaciónhttps://sts_ids4_prueba.minhacienda.gov.co/connect/tokenservice
Web APIhttps://ws_fcaja_prueba.minhacienda.gov.co/FlujoCaja

3.2 Ambiente productivo

ComponenteURL
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/ObjetoTipo Dato Longitud TipoDescripción
grant-typeString15QueryAtributo obligatorio que representa el tipo de operación, siempre será la palabra "password" literal.
client_idString50QueryRepresenta la identificación de la aplicación flujo de caja que se conecta.
client_secret*String150QueryRepresenta 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.
scopeString30QueryAtributo obligatorio que representa el identificador del recurso al que se va a acceder seguido de la palabra "flujo_caja offline_access" literal.
UsernameString  15QueryUsuario
Password*String 150QueryRepresenta 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

AtributoTipo DatoLongitud Descripción
clientId String50Identifica el ClientId al que se le genera el token.
accessTokenString50Un identificador del token
idTokenString500Es el token JWT
refreshTokenString50Token de renovación automática
grant_typeString15 Siempre será "Bearer"
expireInNumberNAIdentifica 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/ObjetoTipo DatoLongitud Tipo Descripción
grant-typeString15QueryAtributo obligatorio que representa el tipo de operación, siempre será la palabra "refresh_token" literal.
client_id String50QueryRepresenta la identificación de la aplicación que se conecta.
Parámetro/ObjetoTipo DatoLongitudTipo Descripción
client_secret* String150QueryRepresenta 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_tokenString50 QueryToken de renovación automática

Tabla 3 - Entradas Body

Datos de salida:

Un objeto DToken en el body del response con los siguientes atributos:

AtributoTipo  DatoLongitud Descripción
clientIdString 50Identifica el ClientId al que se le genera el token.
accessTokenString50Un identificador del token
idTokenString500Es el token JWT
refreshTokenString50Token de renovación automática
grant_typeString15 Siempre será "Bearer"
expireInNumber 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.

ErrorNombre ErrorDescripció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_parameterError al realizar la decodificaciónEsto se debe a que algún parámetro no se encripto correctamente
invalid_scopeScope invalidoEsto se debe a que se está solicitando acceso a algún recurso que no está permitido para este cliente.
unsupported_grant_typeGrant_type invalidoSiempre 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 TipoDescripción
encabezadoEncabezadoRequestModel Objeto de dominio
informeInformeModelObjeto de dominio

Tabla 6 - Definición RecaudoDiarioRequestModel

NombreTipoLongitudObliga torioDescripción
idTransaccionString36SiNúmero de Control de Transacción provisto por la entidad.
codigoBancoNumberSiCódigo Identificación de Entidad Recaudadora.
fechaTransmisionDatetimeSiFecha de transmisión del mensaje, Formato UTC (YYYY-MM-DDTHH:MM:SS)
idiomaSgtring 5SiLenguaje en la que está la respuesta, definida por la IETFRFC 1766. Valor por defecto es es-co.

Tabla 7 - Definición EncabezadoRequestModel

NombreTipoLongitudObliga torio Descripción
fechaRecaudoDatetimeSi Fecha de recaudo Formato (YYYY-MM-DD). Notación yyyy-mm-dd de la ISO 8601
esReemplazointSiIndica si es el primer reporte o es un reemplazo de un reporte previo enviado. 1- Reporte Inicial 2- Reemplazo
valorRecaudoLong SiValor total del recaudo reportado por concepto y tipo de recaudo.
conteoDetallesIntSiConteo del número de elementos que vienen en los detalles.
hashStringSi Campo de Control de Integridad del mensaje. Ver detalles de su generación en el apartado "Calculo del campo Hash".
detallesListSiEs una lista de objetos RecaudoModel que informa el recaudo por concepto y por tipo de recaudo.

Tabla 8 - Definición InformeModel

NombreTipoLongitudObliga torioDescripción
tipoRecaudoInt2Si Especifica las formas de pago con el cual realizo el recaudo. Referenciado en el Anexo, 7.2 Tabla 13. Tipos de Recaudo.
conceptoString 3SiCódigo estadístico que especifica el medio de pago.
valorNormal Number 18 Si Valor de recaudo en el horario normal.
valorExtendidoNumber18SiValor 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

NombreTipoDescripción
encabezadoEncabezadoRequestMotelObjeto de dominio
informeInformeModelObjeto de dominio

Tabla 10 - Definición RecaudoDiarioResponseModel

NombreTipoLongitudObliga-torio Descripción
codigoRespuestaNumber3SiCódigo de respuesta retornado por el Web Service
severidadString10SiSeveridad de la respuesta (SUCCESS, WARNING, ERROR)
descripcionEstadoStringSiDescripción del estado de la respuesta
 idTransaccionOrigenString 36SiIdentificador único de la transacción. Debe coincidir con el idTransaccion de la petición.
fechaRespuesta DateTimeN/ASiFecha y hora de la respuesta. Aplicar la notación yyyy-mm-ddThh:mm:ssZ de la ISO 8601
 idiomaString5Si 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ÓDIGODESCRIPCION
004RENTA
005VENTAS
006RETEFTE
013SANCIONES ENTIDADES AUTORIZADAS PARA RECAUDAR
055SANCION DECLARACION INDIVIDUAL PRECIOS DE TRANSFERENCIA
056SANCION DECLARACION CONSOLIDADA PRECIOS TRANSFERENCIA
072ADUANAS
010LAUDOS ARBITRALES
054PATRIMONIO
099GRAVAMEN IMPUESTO FINANCIERO - GMF
020IMPUESTO GLOBAL A LA GASOLINA Y AL ACPM
021 IMPUESTO NACIONAL AL CONSUMO
022  GANANCIAS OCACIONALES
065IMPUESTO CREE - CONTRIBUCION ESPECIAL PARA LA EQUIDAD
064AUTORRETENCION CREE
057 IMPUESTO A LA RIQUEZA
007RETE VENTAS
008 RETE TIMBRE
086 CARBONO
009RTE VTA INMUEBLES
011SIMPLE
 012NORMALIZACION
014COVID19 RTE IMPTO
015COVID19 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
1Efectivo Presencial
3Efectivo Canales Electrónicos
5TIDIS
6CERT
9TRT (Títulos renovación del Territorio)
10CINA (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 NombreMensaje
200Éxito La transacción ha sido exitosa
400Formato no válidoEl 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
401Acceso no permitido El header de autenticación no es válido. Acceso denegado a aplicación.
403Ya fue enviadoCuando la transacción fue enviada con anterioridad
404No encontradoSe presenta en una transacción de reemplazo y la transacción a reemplazar no fue encontrada
406Valor incorrectoEl valor reportado en el encabezado no corresponde con lo reportado en el detalle
409Número de transacción duplicadoEl 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
500Error InternoEl 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
502Error de ConexiónFalla de infraestructura. Para cuando se presenten errores en el canal de comunicación.
CódigoNombreMensaje
503Mantenimiento del SistemaMantenimiento de la plataforma o sistema. Para el caso en que el cliente realice mantenimientos preventivos al sistema
504Error de Conexión Falla de infraestructura. Para cuando se presenten errores en el canal de comunicación
505Error de Sincronización HorariaDiferencia horaria entre sistemas, se válida para garantizar confiabilidad en los valores de las fechas que contiene el mensaje.