Saltar al contenido principal
La DIAN (Dirección de Impuestos y Aduanas Nacionales) es la autoridad tributaria de Colombia, y cada factura electrónica, nota crédito y débito, documento soporte, documento de nómina y evento pasa por su sistema de facturación electrónica. Una cuenta allí guarda todo lo que la empresa o persona emitió y recibió. Estos endpoints leen esa cuenta con la conexión propia del contribuyente.

Conecta tu cuenta

El sistema de facturación electrónica de la DIAN no tiene contraseña: el acceso es un enlace que la DIAN envía al correo registrado en el RUT de quien lo solicita (para una empresa, su representante legal). Solicítalo con el endpoint de solicitudes de acceso de abajo, o en el sistema de facturación electrónica de la DIAN, y registra el enlace aquí dentro de los 60 minutos en que la DIAN lo acepta. La DIAN mantiene ese acceso abierto cerca de una hora, así que registra el enlace cuando vayas a consultar y corre lo que necesites en esa ventana. Después, las consultas responden 422 connection_rejected: solicita un enlace nuevo y regístralo otra vez, y se renueva la misma conexión, que conserva su id. POST /co/dian-facturacion/connections/v1 Registra una conexión una vez. Croma la verifica con la fuente antes de guardarla y responde con su id y un nombre enmascarado.
Desde entonces, cada consulta corre como una de las conexiones de tu organización. Croma elige una, mantiene su sesión abierta entre consultas y pasa a la siguiente cuando una alcanza su cupo diario. Registra más de una para tener más capacidad al día. Para usar una en particular, envía su id como connection_id. Registrar una cuenta que ya está conectada la renueva: la conexión toma los nuevos valores, conserva su id y responde 200, así que nada que guarde el id tiene que cambiar. Cómo funciona el flujo, paso a paso: Conexiones. Lístalas y elimínalas:
Por MCP, los mismos verbos son las herramientas dian_facturacion_connect, dian_facturacion_list_connections, dian_facturacion_delete_connection. Conectar desde un agente nunca pasa las credenciales por la conversación: el agente recibe un enlace seguro y el usuario ingresa los datos de la cuenta en la consola de Croma. Cuando una consulta no puede correr con ninguna conexión:
Las credenciales se cifran en cuanto llegan a Croma, quedan ligadas a tu organización y solo puede abrirlas el servicio aislado que inicia sesión en la fuente en tu nombre. La API nunca las devuelve ni se muestran a nadie. Eliminar una conexión la destruye de forma permanente.

Solicitudes de acceso

POST /co/dian-facturacion/access-requests/v1 Live Haz que la DIAN envíe el enlace de acceso con el que se registra una conexión, sin salir de tu producto: la persona (o el representante legal de la empresa) lo recibe en el correo de su RUT.

Respuesta

sent es true cuando la DIAN aceptó la solicitud y envió el enlace al correo del RUT de la persona; message es la respuesta de la DIAN. El enlace sirve por expires_in_minutes (60). Regístralo como conexión dentro de ese tiempo.
Esta llamada corre sin conexión: es como se empieza una. Se cobra como cualquier otra llamada.

Documentos emitidos

POST /co/dian-facturacion/issued-documents/v1 Live

Respuesta

Cada documento tiene su cufe (la llave), document_type_code y document_type, series y number, issued_on y received_at, el issuer y el recipient (nit, name), currency, payment_form y payment_method (códigos de la DIAN), cada impuesto que la DIAN totaliza en taxes y las withholdings (ReteIVA, ReteRenta, ReteICA), el total, el status de validación de la DIAN y su radian_status como título valor. Además de facturas, las listas traen notas crédito y débito, documentos soporte, nómina y los eventos (application responses) que la cuenta emitió o recibió.
Cada llamada lee la DIAN en vivo con tu conexión, así que la respuesta está al día y nunca se comparte entre organizaciones.
Esta consulta puede tardar más que una solicitud típica. Es un trabajo asíncrono. Por defecto la solicitud espera en línea y devuelve { data }, o puedes hacer polling / usar un callback_url.

Documentos recibidos

POST /co/dian-facturacion/received-documents/v1 Live La misma forma que los documentos emitidos.
Cada llamada lee la DIAN en vivo con tu conexión, así que la respuesta está al día y nunca se comparte entre organizaciones.
Esta consulta puede tardar más que una solicitud típica. Es un trabajo asíncrono. Por defecto la solicitud espera en línea y devuelve { data }, o puedes hacer polling / usar un callback_url.

Un documento

POST /co/dian-facturacion/document/v1 Live

Respuesta

found dice si la cuenta tiene el documento en esa fecha; cuando es false el resto viene vacío. Si no, recibes el encabezado del documento (document_type, series, number, issued_on, issued_at, due_on, issuer, recipient, currency, payment_form, payment_method, notes), sus lines (description, quantity, unit, unit_price, line_total y los taxes de cada línea), sus propios totals, los taxes y el total como los muestra el registro de la DIAN, el legitimate_holder, las validations de la DIAN, sus events (acuse de recibo, recibo del bien, aceptación, endoso…) y los archivos originales: xml (UBL 2.1) y pdf_base64. Nómina, documentos soporte y eventos no traen líneas ni archivos aquí; su encabezado, validaciones y eventos sí.
Toma cufe e issued_on de una fila de los documentos emitidos o recibidos.
Esta consulta puede tardar más que una solicitud típica. Es un trabajo asíncrono. Por defecto la solicitud espera en línea y devuelve { data }, o puedes hacer polling / usar un callback_url.

Reporte mensual

POST /co/dian-facturacion/monthly-reports/v1 Live La DIAN lo emite a las cuentas que facturan electrónicamente, normalmente en las primeras semanas del mes siguiente.

Respuesta

available dice si la DIAN emitió un reporte para el mes; cuando es false el resto viene vacío. Un reporte trae su reference, dated_on, cutoff_date y replaces_previous; documents[] con, por tipo de documento, lo issued y lo received (month_count, month_amount, year_count, year_amount); e indicators[] del mes y los dos anteriores (count, daily_average_count, amount, daily_average_amount, emitidos y recibidos).
Esta consulta puede tardar más que una solicitud típica. Es un trabajo asíncrono. Por defecto la solicitud espera en línea y devuelve { data }, o puedes hacer polling / usar un callback_url.

Perfil

POST /co/dian-facturacion/profile/v1 Live

Respuesta

El nit, name, business_name y email de la cuenta, su status en el sistema de facturación electrónica de la DIAN, el reception_email donde recibe facturas, sus legal_representatives, sus operation_modes (software propio, de un proveedor tecnológico o el de la DIAN) y los numbering_ranges asociados a su software (prefix, resolution, from_number, to_number, associated_on, expires_on).
Esta consulta puede tardar más que una solicitud típica. Es un trabajo asíncrono. Por defecto la solicitud espera en línea y devuelve { data }, o puedes hacer polling / usar un callback_url.

Referencia completa

Esquemas, todos los campos de respuesta y un playground interactivo.