Skip to main content
DIAN (Dirección de Impuestos y Aduanas Nacionales) is Colombia’s tax and customs authority. A taxpayer’s online account holds what DIAN knows about their year: the electronic invoices issued to them and the information third parties reported (información exógena). These endpoints read that account as the taxpayer’s own connection, one tax year at a time.

Connect your account

DIAN answers only to a signed-in person: their DIAN account’s document type, number and password, used on their own behalf. Each query runs as your organization’s own connection, so register one before your first query. Register the account once; Croma keeps the session open and reuses it across queries. POST /co/dian-muisca/connections/v1 Register a connection once. Croma checks it with the source before saving it, and answers with its id and a masked name.
Every query then runs as one of your organization’s connections. Croma picks one, keeps its session open between queries, and moves to the next when one reaches its daily allowance. Register more than one to get more capacity a day. To run as a specific one, send its id as connection_id. How the flow works, step by step: Connections. List and delete them:
Over MCP, the same verbs are the dian_muisca_connect, dian_muisca_list_connections, dian_muisca_delete_connection tools, so an agent can connect the user’s account in conversation. When a query cannot run as any connection:
Credentials are encrypted as soon as they reach Croma, bound to your organization, and can only be opened by the isolated service that signs in to the source on your behalf. They are never returned by the API or shown to anyone. Deleting a connection destroys it permanently.

Electronic invoices

POST /co/dian-muisca/electronic-invoices/v1

Response

Each invoice has issuer_id, issuer_name, issued_on, the invoiced_amount with its credit_notes_amount and debit_notes_amount, the net_amount and deductible_amount (COP), payment_method, invoice_number and cufe.
Every call reads DIAN live as your connection, so the answer is current and is never shared between organizations.
This lookup can take longer than a typical request. It is an async job. By default the request waits inline and returns { data }, or you can poll / use a callback_url.

Third-party reports

POST /co/dian-muisca/third-party-reports/v1

Response

Each report has reporter_id and reporter_name (who reported), reported_id and reported_name (how they reported it; reported_id is null before 2023), concept, amount (COP), and suggested_use and additional_info (null before 2023).
Every call reads DIAN live as your connection, so the answer is current and is never shared between organizations.
This lookup can take longer than a typical request. It is an async job. By default the request waits inline and returns { data }, or you can poll / use a callback_url.

Full reference

Schemas, all response fields, and an interactive playground.