(DIAN - Individuals) Extraction of income and tax returns from PDF file (Format 210) - Colombia
Lets integrate (DIAN - Individuals) Extraction of income and tax returns from PDF file (Format 210) - Colombia in your system. First, get your Apitude API key, then send a POST request to Apitude... And that's it!.
That POST request should return the following
{
"message": "Request processed successfully",
"url": "/api/v1.0/requests/dian-personal-tax-files-co/e0606c19-a32d-410f-b2eb-d57a665677bc/",
"request_id": "e0606c19-a32d-410f-b2eb-d57a665677bc"
}
This response will contains a unique request ID that you should poll using a GET as follows
How does the response looks like?
{
"result": {
"data": {
"records": [
{
"otros": {
"code": 93,
"value": 0.0,
"section": "descuentos"
},
"deudas": {
"code": 29,
"value": 4424000.0,
"section": "patrimonio"
},
"sanciones": {
"code": 104,
"value": 0.0,
"section": "liquidacion_privada"
},
"donaciones": {
"code": 92,
"value": 0.0,
"section": "descuentos"
},
"renta_presuntiva": {
"code": 68,
"value": 0.0,
"section": "renta_presuntiva"
},
"rentas_gravables": {
"code": 66,
"value": 0.0,
"section": "cedula_general"
},
"tax_records_year": 2019,
"dian_signature_date": "2020-09-22 11:54:38",
"total_saldo_a_favor": {
"code": 106,
"value": 0.0,
"section": "liquidacion_privada"
},
"total_saldo_a_pagar": {
"code": 105,
"value": 0.0,
"section": "liquidacion_privada"
},
"general_y_de_pensiones": {
"code": 85,
"value": 46540000.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"impuesto_neto_de_renta": {
"code": 95,
"value": 46540000.0,
"section": "liquidacion_privada"
},
"total_impuesto_a_cargo": {
"code": 98,
"value": 46540000.0,
"section": "liquidacion_privada"
},
"total_patrimonio_bruto": {
"code": 28,
"value": 340051000.0,
"section": "patrimonio"
},
"renta_liquida_de_capital": {
"code": 48,
"value": 9977000.0,
"section": "rentas_de_capital"
},
"renta_liquida_de_trabajo": {
"code": 37,
"value": 189728000.0,
"section": "rentas_de_trabajo"
},
"renta_liquida_no_laboral": {
"code": 60,
"value": 0.0,
"section": "rentas_no_laborales"
},
"total_patrimonio_liquido": {
"code": 30,
"value": 335627000.0,
"section": "patrimonio"
},
"saldo_a_pagar_por_impuesto": {
"code": 103,
"value": 0.0,
"section": "liquidacion_privada"
},
"costos_y_gastos_procedentes": {
"code": 52,
"value": 0.0,
"section": "rentas_no_laborales"
},
"rentas_exentas_de_pensiones": {
"code": 72,
"value": 0.0,
"section": "cedula_de_pensiones"
},
"renta_liquida_cedula_general": {
"code": 61,
"value": 319848000.0,
"section": "cedula_general"
},
"total_descuentos_tributarios": {
"code": 94,
"value": 0.0,
"section": "descuentos"
},
"ganancias_ocasionales_gravables": {
"code": 84,
"value": 0.0,
"section": "ganancias_ocasionales"
},
"renta_liquida_rentas_de_capital": {
"code": 41,
"value": 9977000.0,
"section": "rentas_de_capital"
},
"renta_liquida_rentas_de_trabajo": {
"code": 34,
"value": 309871000.0,
"section": "rentas_de_trabajo"
},
"renta_presuntiva_y_de_pensiones": {
"code": 86,
"value": 0.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"rentas_exentas_de_la_casilla_79": {
"code": 80,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"costos_por_ganancias_ocasionales": {
"code": 82,
"value": 0.0,
"section": "ganancias_ocasionales"
},
"costos_y_deducciones_procedentes": {
"code": 40,
"value": 898000.0,
"section": "rentas_de_capital"
},
"impuestos_pagados_en_el_exterior": {
"code": 91,
"value": 0.0,
"section": "descuentos"
},
"devoluciones_rebajas_y_descuentos": {
"code": 50,
"value": 0.0,
"section": "rentas_no_laborales"
},
"impuesto_de_ganancias_ocasionales": {
"code": 96,
"value": 0.0,
"section": "liquidacion_privada"
},
"renta_liquida_cedula_de_pensiones": {
"code": 71,
"value": 0.0,
"section": "cedula_de_pensiones"
},
"renta_liquida_rentas_no_laborales": {
"code": 53,
"value": 0.0,
"section": "rentas_no_laborales"
},
"ingresos_no_constitutivos_de_renta": {
"code": 51,
"value": 0.0,
"section": "rentas_no_laborales"
},
"rentas_liquidas_pasivas_de_capital": {
"code": 42,
"value": 0.0,
"section": "rentas_de_capital"
},
"ingresos_brutos_rentas_no_laborales": {
"code": 49,
"value": 0.0,
"section": "rentas_no_laborales"
},
"rentas_liquidas_pasivas_no_laborales": {
"code": 54,
"value": 0.0,
"section": "rentas_no_laborales"
},
"retenciones_anio_gravable_a_declarar": {
"code": 101,
"value": 46062000.0,
"section": "liquidacion_privada"
},
"ingresos_brutos_por_rentas_de_capital": {
"code": 38,
"value": 10875000.0,
"section": "rentas_de_capital"
},
"ingresos_brutos_por_rentas_de_trabajo": {
"code": 31,
"value": 327116000.0,
"section": "rentas_de_trabajo"
},
"renta_liquida_gravable_cedula_general": {
"code": 67,
"value": 199705000.0,
"section": "cedula_general"
},
"renta_liquida_ordinaria_cedula_general": {
"code": 63,
"value": 199705000.0,
"section": "cedula_general"
},
"rentas_exentas_y_deducciones_imputables": {
"code": 36,
"value": 120143000.0,
"section": "rentas_de_trabajo"
},
"por_dividendos_y_participaciones_anio_2016": {
"code": 87,
"value": 0.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"renta_liquida_gravable_cedula_de_pensiones": {
"code": 73,
"value": 0.0,
"section": "cedula_de_pensiones"
},
"ganancias_ocasionales_no_gravadas_y_exentas": {
"code": 83,
"value": 0.0,
"section": "ganancias_ocasionales"
},
"compensaciones_por_exceso_de_renta_presuntiva": {
"code": 65,
"value": 0.0,
"section": "cedula_general"
},
"compensaciones_por_perdidas_rentas_de_capital": {
"code": 47,
"value": 0.0,
"section": "rentas_de_capital"
},
"anticipo_renta_para_el_anio_gravable_siguiente": {
"code": 102,
"value": 7631000.0,
"section": "liquidacion_privada"
},
"renta_liquida_ordinaria_anio_2016_y_anteriores": {
"code": 76,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"anticipo_renta_liquidado_anio_gravable_anterior": {
"code": 99,
"value": 8109000.0,
"section": "liquidacion_privada"
},
"compensaciones_por_perdidas_rentas_no_laborales": {
"code": 59,
"value": 0.0,
"section": "rentas_no_laborales"
},
"perdida_liquida_del_ejercicio_rentas_de_capital": {
"code": 46,
"value": 0.0,
"section": "rentas_de_capital"
},
"perdida_liquida_del_ejercicio_rentas_no_laborales": {
"code": 58,
"value": 0.0,
"section": "rentas_no_laborales"
},
"rentas_exentas_y_deducciones_imputables_limitadas": {
"code": 62,
"value": 120143000.0,
"section": "cedula_general"
},
"subcedula_anio_2017_y_siguientes_numeral_3_art_49": {
"code": 77,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"subcedula_anio_2017_y_siguientes_parrafo_2_art_49": {
"code": 78,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"total_impuesto_sobre_las_rentas_liquidas_gravables": {
"code": 90,
"value": 46540000.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"ingresos_no_constitutivos_de_renta_rentas_de_capital": {
"code": 39,
"value": 0.0,
"section": "rentas_de_capital"
},
"ingresos_no_constitutivos_de_renta_rentas_de_trabajo": {
"code": 32,
"value": 17245000.0,
"section": "rentas_de_trabajo"
},
"dividendos_y_participaciones_2016_y_anteriores_y_otros": {
"code": 74,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"ingresos_no_constitutivos_de_renta_cedula_de_pensiones": {
"code": 70,
"value": 0.0,
"section": "cedula_de_pensiones"
},
"renta_liquida_ordinaria_del_ejercicio_rentas_de_capital": {
"code": 45,
"value": 9977000.0,
"section": "rentas_de_capital"
},
"renta_liquida_ordinaria_del_ejercicio_rentas_no_laborales": {
"code": 57,
"value": 0.0,
"section": "rentas_no_laborales"
},
"rentas_exentas_y_deducciones_imputables_rentas_de_capital": {
"code": 44,
"value": 0.0,
"section": "rentas_de_capital"
},
"renta_liquida_pasiva_dividendos_y_o_recibidos_del_exterior": {
"code": 79,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"compensaciones_por_perdidas_anio_gravable_2016_y_anteriores": {
"code": 64,
"value": 0.0,
"section": "cedula_general"
},
"rentas_exentas_y_deducciones_imputables_rentas_no_laborales": {
"code": 56,
"value": 0.0,
"section": "rentas_no_laborales"
},
"costos_y_deducciones_procedentes_trabajadores_independientes": {
"code": 33,
"value": 0.0,
"section": "rentas_de_trabajo"
},
"ingresos_por_ganancias_ocasionales_en_el_pais_y_del_exterior": {
"code": 81,
"value": 0.0,
"section": "ganancias_ocasionales"
},
"ingresos_brutos_por_rentas_de_pensiones_del_pais_y_del_exterior": {
"code": 69,
"value": 0.0,
"section": "cedula_de_pensiones"
},
"rentas_exentas_y_deducciones_imputables_a_las_rentas_de_capital": {
"code": 43,
"value": 0.0,
"section": "rentas_de_capital"
},
"rentas_exentas_y_deducciones_imputables_a_las_rentas_de_trabajo": {
"code": 35,
"value": 120143000.0,
"section": "rentas_de_trabajo"
},
"rentas_exentas_y_deducciones_imputables_a_las_rentas_no_laborales": {
"code": 55,
"value": 0.0,
"section": "rentas_no_laborales"
},
"por_dividendos_y_participaciones_anio_2017_y_siguientes_1a_subcedula": {
"code": 88,
"value": 0.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"descuento_por_impuestos_pagados_en_el_exterior_por_ganancias_ocasionales": {
"code": 97,
"value": 0.0,
"section": "liquidacion_privada"
},
"ingresos_no_constitutivos_de_renta_cedula_de_dividendos_y_participaciones": {
"code": 75,
"value": 0.0,
"section": "cedula_de_dividendos_y_participaciones"
},
"por_dividendos_y_participaciones_anio_2017_y_siguientes_2a_subcedula_y_otros": {
"code": 89,
"value": 0.0,
"section": "impuesto_sobre_las_rentas_liquidas_gravables"
},
"saldo_a_favor_del_anio_gravable_anterior_sin_solicitud_de_devolucion_y_o_compensacion": {
"code": 100,
"value": 0.0,
"section": "liquidacion_privada"
}
}
]
},
"error": "",
"end_at": "2023-01-07 05:23:01.110942",
"status": 200,
"message": "successful",
"queried_by": "testUser",
"service_name": "dian-personal-tax-files-co"
}
}
Ok, but what does each field in that JSON means?
The general parts:
message:
The message is an Apitude generatedstring
with an informational text about the request.result:
The result is contains the main part of the request.result.error:
The error is astring
generated by apitude for the request if everything worked it will be blank.result.message:
The message is astring
with two optionssuccessful
orunsuccessful
depending of how your request finished.result.queried_by:
The queried_by field is astring
that lets you know what user started the request.result.end_at:
The end_at field is astring formatted date
that lets you know at what time the request ended in Apitude.result.service_name:
The service_name field is astring
that echos the service called. For this service it will always bedian-personal-tax-files-co
.result.status:
The status field is ainteger
that represents whether the service returned data from the input sent in the request. It could be one of the following values:200
: The service returned response data for the payload that was sent in the creation of the request.404
: The service did not returned data for the payload that was sent in the creation of the request.400
: The service did not started because your input was invalid.500
: Apitude tried to execute your request, however the service Apitude uses to execute your request was down. Please wait some time and try again, Apitude will not charged you for requests with this code.
Depending on the service, you want it to return different codes. For example, if you are checking the user against a security list to whitelist the user you should look for a
404
, because a200
would mean the user is in fact in the list. Other cases however, like creating objects in the name of a user you want the code to be200
, since it will imply the creation was a success.
The data in the response:
Process steps
- The pdf of the Income Statement is received in any of the formats by the Client. li>
- The client must have requested this document from his client, which must meet the following specifications:
- Document in 210, 110 or 260 format downloaded directly from the client's Muisca platform
- Scanned documents or photos of documents are not accepted.
- The Client uploads the Income Tax Declaration document in the Apitude API
- The Apitude API validates that the uploaded document is original and not tampered with in any part. If the document meets the originality requirements, the process continues, otherwise the process ends there.
- The API extracts all the values of each one of the fields of the Income Statement and returns in a JSON each one of the names and the values of each field to the Client.
About this service
This service allows you to process through API the PDF (Format 210) of an income statement from the DIAN system in Colombia (Muisca) and obtain all the data stored in it, while validating the authenticity of the PDF against the DIAN. The process is 100% automatic and safe, there is no human intervention. If the email (Optional) field is sent in the API request, the results will be delivered both in the REST response and via CSV file to the sent email.
Who can you query using this service?:
This service (dian-personal-tax-files-co) is available for you to query individuals only.
Get API Access