Source: https://afacturar.com/integradores/2242/
Timestamp: 2020-07-10 05:12:11+00:00

Document:
Documentación Afacturar
Documentación para 2242
Resolución DIAN 2242 del 2015
Factura contingencia
Factura de mandato
Ir a documentación Resolución DIAN Validación previa
Manual de uso para conector de integración
Afacturar Electrónicamente
Fecha de creación: 2018-06-01 18:36:00
Última actualización: 2019-03-14 13:00:00
Por: Teleinte
Email: info@teleinte.com
Esta interfaz de programación es una API RESTful que se usa para entregar información a la plataforma Afacturar, en la cual se hacen las validaciones necesarias para poder procesar, construir y firmar documentos electrónicos que se entregarán a la DIAN, a los adquirientes (compradores) y a otras entidades si se requiere.
Para realizar una búsqueda puede usar el buscador del navegador (teclas Ctrl + F en Windows y Cmd + F en Mac).
Todas las llamadas a la API deben comenzar con la URL base para cada uno de los ambientes disponibles:
Producción https://api.afacturar.com/api/v2/
Pruebas https://api-pruebas.afacturar.com/api/v2/
La API utiliza Tokens para la autentificación
"Authorization": "Bearer 18aks5jhfd8ewre33y87tri8sdawfliuoij983dh4r93q8y4r732659243865p9no9am3s348765... vfr56uhfdwqasdfty890olkj... gfr56yg"
Las llamadas a la API deben ser realizadas a través de peticiones GET o POST según el caso
Todas las respuestas que no sean devueltas con un código HTTP 200 se consideran como error.
Todas las respuestas son devueltas en formato JSON
Categorías de la API
Factura de venta (Factura Nacional)
Interactuar con la API - PostMan
Si quieres probar nuestra API de una manera rápida te recomendamos el uso de PostMan. Postman es una extensión de Google Chrome que permite interactuar con HTTP API's de forma sencilla a través de una interfaz amigable para construir peticiones y obtener respuestas.
Especificación detallada para recibir información de factura para ser procesadas en la plataforma
Adicionar nuevas variables al JSON, estas no son obligatorias.
facturas[0].detalle_factura[i].valores_unitarios, este grupo de variables es utilizado para la representación gráfica
facturas[0].detalle_factura[i].valor_total_a_pagar, esta variable es utilizada la para representación gráfica
generalidades.rg_tipo, generalidades.rg_base_64, generalidades.rg_px_qr, generalidades.rg_px_cufe, estas variables se utilizan cuando el integrador envía la representación gráfica en formato PDF codificado en base 64; y SOFE Afacturar® (Sistema Operativo de Factuaración Electrónica de Afacturar®) se encarga de insertar el CUFE y el QR, en la posición dada en las variables. El tamaño del QR siempre es de 3X3 cm.
generalidades.notificacion, este grupo de variables se utilizan para el envio de la notificación al adquiriente, en una de ellas se determina si es envio autmatico o no. Si es automático es necesario llenar la información del correo electrónico del obligado.
La API de producción y desarrollo solo se pueden consumir via https.
Las URL del ambiente de producción y desarrollo se cambiaron, y las anteriores se deshabilitaran el 31 de Marzo de 2019.
Se modifica la estructura donde se reportan las notas de todos los documentos electrónicos que permite mayor flexibilidad y claridad a la hora de reportar información adicional que se requiere en las representaciones gráficas.
En el array de nota estandarización de valores de impuestos adicionales e información adicional de cada obligado en un formato similar a json.
En la salida se adicionaron dos opciones qr_url_imagen (Url de la imagen del qr de la factura en formato svg) y qr_url_imagen_base_64 (Url de la imagen del qr en base 64 de la factura en formato txt). Estas se adicionaron en caso que el integrador quiera generar el pdf.
Adicionar en encabezado el fecha_vencimiento
Adicionar en encabezado el numero_orden
Adicionar en encabezado el prefijo
Adicionar en valor_factura el valor_total_impuesto_1
Adicionar en valor_factura el valor_total_impuesto_2
Adicionar en valor_factura el valor_total_impuesto_3
Adicionar en valor_factura el valor_total_impuesto_4
Adicionar el número de resolución entregado por la DIAN para la facturación electronica
Adicionar el tipo de petición de cada recurso
2 Con respecto a la versión anterior se han hecho las siguientes modificaciones:
Un json por factura
Quitar informacion_obligado
Cambiar en el encabezado el tipo de dato de nota por array
Adicionar en encabezado el tipo_de_pago
Adicionar en informacion_adquiriente la información del RUT - Responsabilidades, Calidades y atributos. Usuarios aduaneros
Adicionar en informacion_adquiriente el correo_electronico para el envio de notificaciones
Adicionar en informacion_adquiriente el numero_movil para el envio de notificaciones
Adicionar en detalle_factura el valor y porcentaje de descuento en el detalle
Organizar en detalle_factura la información de impuestos y adicionar el valor_impuestos Cambiar en valor_factura el nombre de valor_impuestos por valor_base_calculo_impuestos
Adicionar en valor_factura el valor_anticipo
Adicionar en valor_factura el valor_descuento
Quitar en generalidades el numero_facturas_emitidas
POST /factura_nacional
documento_obligado:
"facturas":[{
"encabezado":{
"id_factura":"",
"fecha":"",
"hora":"",
"nota":["{'':'','':'','':'','':'','':'','':''}"],
"moneda":"",
"tipo_factura":"",
"tipo_de_pago":"",
"numero_resolucion_facturacion":"",
"fecha_vencimiento":"",
"numero_orden":"",
"prefijo":""
"informacion_adquiriente":{
"tipo_contribuyente":"",
"tipo_regimen":"",
"tipo_identificacion":"",
"identificacion":"",
"correo_electronico":"",
"numero_movil":"",
"razon_social":"",
"primer_nombre":"",
"segundo_nombre":"",
"apellido":""
"departamento":"",
"zona":"",
"ciudad":"",
"direccion":"",
"RUT":{
"resp_calidades_atributos":[{}],
"usuario_aduanero":[{}]
"detalle_factura":[
"numero_linea":"",
"cantidad":"",
"valor_unitario":"",
"descripcion":"",
"descuento":{
"porcentaje_descuento":"",
"valor_descuento":""
"impuestos_detalle":{
"codigo_impuesto":"",
"porcentaje_impuesto":"",
"valor_base_impuesto":"",
"valor_impuesto":""
"valor_total_detalle":"",
"valores_unitarios":{
"valor_descuento":"",
"valor_impuesto":"",
"valor_con_descuento":"",
"valor_a_pagar":""
"valor_total_a_pagar":""
"valor_base_calculo_impuesto":"",
"valor_total_impuesto":""
"valor_factura":{
"valor_base":"",
"valor_base_calculo_impuestos":"",
"valor_anticipo":"",
"valor_descuento_total":"",
"valor_total_impuesto_1":"",
"valor_total_impuesto_2":"",
"valor_total_impuesto_3":"",
"valor_total_impuesto_4":"",
"total_factura":""
"generalidades":{
"identificador_transmision":"",
"rg_tipo":"",
"rg_base_64":"",
"rg_px_qr":	{
"x":"",
"y":"",
"size":""
"rg_px_cufe":	{
"notificacion":	{
"es_automatico":"",
"correo_obligado":"",
"asunto":"",
"con_copia":""
documento_obligado Identificación del obligado
data La tabla siguiente muestra la explicación de data
id_factura String Mínimo 1 caracteres Si Identificador del documento: Número de factura de venta. Incluye prefijo + consecutivo de factura. No se permiten caracteres adicionales como espacios o guiones.
fecha Fecha AAAA-MM-DD Si Fecha de emisión de la factura a efectos fiscales.
hora Hora HH24:MM:SS Si Hora de emisión de la factura
nota array El listado de la estandarización de las variables se puede ver aqui SI
Las notas se van a distribuir en un formato similar a JSON, en el cual se cambia la comilla doble por sencilla, tanto en el nombre de la variable, como en su valor, esto debido a la restricción de algunos caracteres especiales que no son soportados en este campo.
Este JSON termina siendo un STRING que se debe enviar dividido en las posiciones del array de nota, de acuerdo con las restricciones que defina la DIAN:
A la fecha (2019-01-11) existe una restricción de enviar como mínimo 15 caracteres(*)
La estructura a utilizar es:
{'variable_1': 'valor_1', 'variable_2':'valor_2'}
Enviar valores nulos o vacíos
nota[0] = “{‘variable_1': 'null', 'variable_2':'valor_2', 'variable_3':''}”
División del STRING en varias posiciones del array
nota[0] = “{‘variable_1': 'null', 'variab”
nota[1] = “le_2':'valor_2', 'variable_3':''}”
El API genera la concatenación del STRING y lo convierte a formato JSON y realiza la respectiva validación.
Hay que tener en cuenta que los caracteres (',\', \,) no se deben enviar, porque no son soportados en el API.
Si alguna variable es diferente a las del listado de especificaciones, se debe consultar con el personal de operación de Teleinte S.A.S, para realizar la respectiva validación, y en caso que no exista una variable, se estudiará el caso para determinar la adición o no de la variable que cumpla con la descripción requerida.
(*) Estas restricciones pueden cambiar en cualquier momento por parte de la DIAN, de acuerdo al nuevo proceso que estandarización y validación que están estableciendo.
moneda Parametrizado COP- Colombia, USD - dolares. Inf adicional Ver Si Divisa consolidada aplicable a toda la factura
tipo_factura Parametrizado 1= Factura de venta
2= Factura de exportación
3= Factura de contingencia Si Código de tipo de documento autorizado para efectos tributarios
tipo_de_pago Parametrizado 10 = Efectivo
20 = Cheque
41 = Transferencia bancaría
42 = Consignación bancaría Si Medios de pago
numero_resolucion_facturacion String 18 caracteres Si Número de resolución entregado por la DIAN, para la facturación electronica
fecha_vencimiento Date AAAA-MM-DD No Fecha de vencimiento
numero_orden String Minimo 3 caracteres No Número de orden
prefijo String Minimo 3 caracteres No Prefijo de facturación
informacion_adquiriente
tipo_contribuyente Parametrizado 1= Persona juridica
2= Persona natural Si Tipo de documento de identificación de persona
tipo_regimen Parametrizado 0= Simplificado
2= Común Si Régimen al que pertenece
tipo_identificacion Parametrizado 11= Registro civil
12= Tarjeta de identidad
13= Cedula ciudadania
21= Tarjeta de extranjería
22= Cedula de extranjería
31= NIT
41= Pasaporte
42= Documento de identificación extranjero Si Tipo de identificación Tributaria o similar
identificacion Numérico 1...n Si Número completo de Identificación Tributaria o similar
correo_electronico Email xxxx@xx.xx Si Dirección de correo electronico, uilizado para el envio de notificaciones
numero_movil String 3111111111 No Número de móvil para el envio de notificaciones
nombre array Depende del tipo de contribuyente Depende del tipo de contribuyente.
Persona juridica {razon_social}.
Persona natural {primer_nombre, segundo_nombre, apellidos}. Si
razon_social Alfanumérico Mínimo 3 caracteres Opcional dependiendo el tipo de contribuyente. Si es NIT es obligatorio Nombre comercial
primer_nombre Alfabético Mínimo 3 caracteres Si
segundo_nombre Alfabético No
apellido Alfabético Mínimo 3 caracteres Si
departamento Alfabético Mínimo 3 caracteres Si
zona Alfabético Mínimo 3 caracteres Si Localidad, barrio, entre otros
ciudad Alfabético Mínimo 3 caracteres Si
direccion Alfabético Mínimo 2 caracteres Si Texto libre para establecer la dirección. No se recomienda detallar en otros campos más detallados conceptos como número de edificio, letra, escalera, etc.
pais Parametrizado Estandar ISO 3166-1, formato Alpha-2 code. Inf adicional Ver Si
RUT array Información del RUT - Registro Unico Tributario. Responsabilidades, Calidades y Atributos, numeral 53 y Usuarios aduaneros, numeral 54. Si
resp_calidades_atributos array Parametrizado.Inf adicional Ver Si Lista de codigos de las responsabilidades, calidades y atributos registrados en el RUT, numeral 53
usuario_aduanero array Parametrizado.Inf adicional Ver No Lista de codigos usuarios aduaneros registrados en el RUT, numeral 54
numero_linea Numerico 1...n Si Número de Línea
(Cant) Numerico 1...n Si Cantidad de productos o servicios solicitados. Número de unidades servidas/prestadas.
(VU) String patron decimal Separador con punto, dos decimales Si El precio unitario es el precio por unidad de un bien o servicio, que en una factura ha de ir indicado antes de la aplicación del impuesto o descuento
descripcion Alfanumérico Mínimo de 2 caracteres Si Descripción del artículo que pertenece a la línea de la factura
descuento array Rebaja o reducción del precio de la lista.
(VD*Cant) No
porcentaje_descuento String patron decimal Separador con punto, dos decimales No Porcentaje de descuento a la linea de la factura
valor_descuento
(VD) String patron decimal Separador con punto, dos decimales No Valor total del descuento efectuado a la linea de la factura.
impuestos_detalle array Información de impuesto por detalle Si
codigo_impuesto Parametrizado 01= IVA
02= Impuesto al consumo
03= ICA
04= Impuesto nacional al consumo Si Es la clase que se utiliza para describir el esquema del impuesto del detalle
porcentaje_impuesto
%Imp String patron decimal Separador con punto, dos decimales Si Importe del impuesto retenido a la linea de la factura
valor_base_impuesto
((VU-VD)*Cant) String patron decimal Separador con punto, dos decimales Si La base gravable es el valor sobre el cual se aplica la tarifa del Impuesto sobre las Ventas.
valor_impuesto
(((VU-VD)*Cant) * %Imp) String patron decimal Separador con punto, dos decimales Si Es un gravamen que recae sobre el consumo de bienes y servicios
valor_total_detalle
(VU*Cant) String patron decimal Separador con punto, dos decimales Si Coste Total.
valores_unitarios array Información de valores unitarios Si
(VD) String patron decimal Separador con punto, dos decimales No Valor del descuento por producto o servicio
VImp = (VU * %Imp) String patron decimal Separador con punto, dos decimales No Importe del impuesto retenido por producto o servicio
valor_con_descuento
(VU-CVD) String patron decimal Separador con punto, dos decimales No Valor unitario del producto o servicio menos el descuento
valor_a_pagar
(VU-VD)+VImp String patron decimal Separador con punto, dos decimales No Valor a pagar por producto o servicio
valor_total_a_pagar
((VU-VD)*Cant)+VImp String patron decimal Separador con punto, dos decimales Si Coste Total. Resultado: Unidad de Medida x Precio Unidad
04= Impuesto nacional al consumo Si Es la clase que se utiliza para describir el esquema del impuesto
porcentaje_impuesto String patron decimal Separador con punto, dos decimales Si Número de importe del impuesto retenido
valor_base_calculo_impuesto String patron decimal Separador con punto, dos decimales Si Base Imponible sobre la que se calcula la retención de impuesto
valor_total_impuesto String patron decimal Separador con punto, dos decimales Si Importe del impuesto retenido
valor_base String patron decimal Separador con punto, dos decimales Si Total Importe bruto antes de valor_impuestos
valor_base_calculo_impuestos String patron decimal Separador con punto, dos decimales Si Importe del impuesto retenido
valor_anticipo String patron decimal Separador con punto, dos decimales No Valor de los anticipos efectuados a la factura
valor_descuento_total String patron decimal Separador con punto, dos decimales No Valor de descuento aplicado a la factura
valor_total_impuesto_1 String patron decimal Separador con punto, dos decimales Si Valor total del impuesto de IVA
valor_total_impuesto_2 String patron decimal Separador con punto, dos decimales Si Valor total del impuesto al consumo
valor_total_impuesto_3 String patron decimal Separador con punto, dos decimales Si Valor total del impuesto de ICA
valor_total_impuesto_4 String patron decimal Separador con punto, dos decimales Si Valor total del impuesto nacional al consumo
total_factura String patron decimal Separador con punto, dos decimales Si Total importe bruto +Total valor_impuestos
version Decimal Si Identificación consecutiva de la especificación
identificador_transmision Alfanumerico No Código único para identificar el paquete transmitido
rg_base_64 Alfanumerico No Representación grafica del documento en base 64
rg_tipo String Si hay información en rg_base_64 Valor determinado "", HTML O PDF
rg_px_qr array Información de configuración de QR en la representación grafica Si hay información en rg_base_64
x numerico Pixeles Posicionamiento en x dentro del documento electronico
y numerico Pixeles Posicionamiento en y dentro del documento electronico
size numerico Pixeles Tamaño del qr
rg_px_cufe array Información de configuración de CUFE en la representación grafica Si hay información en rg_base_64
x numerico Pixeles Posicionamiento en x(abscisas) en el plano cartesiano en el cuarto cuadrante, es decir las columnas empezando de 0.
y numerico Pixeles Posicionamiento en y(ordenadas) en el plano cartesiano en el cuarto cuadrante, es decir las filas empezando de 0.
size numerico Pixeles Tamaño de la letra
notificacion array Información de configuración de envio de notificaciones No
es_automatico String Determinado SI o NO
correo_obligado String Correo electronico Dirección de correo del obligado
asunto String Minimo 80 caracteres Texto para el envio de las notificaciones
con_copia String Minimo 5 caracteres Dirección(s) de correo electronico, separadas por coma
documento_obligado: 830020470
"id_factura":"1104",
"fecha":"2019-01-01",
"hora":"09:00:00",
"{'son':'XXXXXX','vr_rte_ica':'1500.00','pct_rte_ica':'0.00','vr_rte_iva':'500.00','pct_rte_iva':'0.00','vr_rte_fte':'0.00','pct_rte_fte':'0.00'}"
"moneda":"COP",
"tipo_factura":1,
"tipo_de_pago":10,
"numero_resolucion_facturacion":"012345678912345678",
"tipo_contribuyente":1,
"tipo_regimen":2,
"tipo_identificacion":31,
"identificacion":830010101,
"correo_electronico":"aaaaa@prueba.com",
"numero_movil":"3111111111",
"razon_social":"Pruebas S.A.S",
"departamento":"Bogota",
"zona":"Engativa",
"ciudad":"Bogota",
"direccion":"Cra 01",
"pais":"CO",
"resp_calidades_atributos":["O-01","O-03"],
"usuario_aduanero":["A-99"]
"numero_linea":1,
"cantidad":10,
"valor_unitario":"1500.00",
"descripcion":"Producto uno",
"porcentaje_descuento":"0",
"valor_descuento":"5000.00"
"codigo_impuesto":1,
"porcentaje_impuesto":"19.00",
"valor_base_impuesto":"10000.00",
"valor_impuesto":"1900.00"
"valor_total_detalle":"15000.00",
"valor_descuento":"500",
"valor_impuesto":"190.00",
"valor_con_descuento":"1000.00",
"valor_a_pagar":"1190.00"
"valor_total_a_pagar":"11900.00"
"numero_linea":2,
"valor_unitario":"45000.00",
"descripcion":"Producto dos",
"valor_descuento":"0.00"
"porcentaje_impuesto":"5.00",
"valor_base_impuesto":"225000.00",
"valor_impuesto":"11250.00"
"valor_total_detalle":"225000.00",
"valor_descuento":"0",
"valor_impuesto":"2250.00",
"valor_con_descuento":"45000.00",
"valor_a_pagar":"47250.00"
"valor_total_a_pagar":"236250.00"
"numero_linea":3,
"valor_unitario":"18000.00",
"descripcion":"Producto 3",
"valor_base_impuesto":"36000.00",
"valor_impuesto":"0.00"
"valor_total_detalle":"36000.00",
"valor_descuento":"0.00",
"valor_impuesto":"0.00",
"valor_con_descuento":"18000.00",
"valor_a_pagar":"18000.00"
"valor_total_a_pagar":"36000.00"
"impuestos":[{
"valor_base_calculo_impuesto":"10000.00",
"valor_total_impuesto":"1900.00",
"porcentaje_impuesto":"19.00"
"valor_base_calculo_impuesto":"225000.30",
"valor_total_impuesto":"11250.30",
"porcentaje_impuesto":"5.00"
"valor_base":"276000.00",
"valor_base_calculo_impuestos":"271000.00",
"valor_anticipo":"0.00",
"valor_descuento_total":"5000.00",
"valor_total_impuesto_1":"13150.00",
"valor_total_impuesto_2":"0.00",
"valor_total_impuesto_3":"0.00",
"valor_total_impuesto_4":"0.00",
"total_factura":"284150.00"
"identificador_transmision":"Prueba_xwsr1234",
"codigo_error": 0,
"descripcion_error": "OK",
"tiempo_ejecucion": 0.002655029296875,
"transaccion": "5b185bc380da5",
"cufe": "2ef68fd31a57a336e29617459f7b5402cd0c7ebe",
"id_factura": "1104",
"url_representacion_xml": "http://xxxxx/files/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xml",
"url_representacion_grafica": "http://xxxxx/files/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf",
"qr_url_imagen": "http://xxxxx/files/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.svg",
"qr_url_imagen_base_64": "http://xxxxx/files/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.txt"
Salida con errores de semantica
"codigo_error": 400,
"descripcion_error": "ERROR",
"tiempo_ejecucion": 0.0024139881134033203,
"transaccion": "5b185d0a92c30",
"propiedad": "facturas[0].impuestos[1].valor_base_calculo_impuesto",
"descripcion": "Does not match the regex pattern ^[0-9]+(\\.[0-9]{2})$"
Salida con errores HTTP
"codigo_error": 500,
"descripcion_error": "Unauthenticated."
Si usted usa cURL para consumir el API, usted debe incluir la URI con doble comilla para enviar los multiples parametros a transmitir.
Si requiere ejemplos en otras tecnologías (HTTP, C(LibCurl, C#, GO, Java, JavaScript, NodeJS, ObjectiveC, OCaml, PHP, Python, Ruby, Shell, Swift) envienos la solicitud a info@afacturar.com
https://api-pruebas.afacturar.com/api/v2/factura_nacional \
-H 'authorization: Bearer token_obligado \
-F 'data={
"facturas": [
"id_factura": "990010006",
"fecha": "2019-01-01",
"{'\''son'\'':'\''XXXXXX'\'','\''vr_rte_ica'\'':'\''1500.00'\'','\''pct_rte_ica'\'':'\''0.00'\'','\''vr_rte_iva'\'':'\''500.00'\'','\''pct_rte_iva'\'':'\''0.00'\'','\''vr_rte_fte'\'':'\''0.00'\''}"
"moneda": "COP",
"tipo_factura": 1,
"tipo_de_pago": 10,
"numero_resolucion_facturacion": "9000000032882632",
"fecha_vencimiento": "",
"numero_orden": "",
"prefijo": ""
"informacion_adquiriente": {
"tipo_contribuyente": 1,
"tipo_regimen": 2,
"tipo_identificacion": 31,
"identificacion": 830010101,
"correo_electronico": "aaaaa@prueba.com",
"numero_movil": "3111111111",
"razon_social": "Pruebas S.A.S",
"primer_nombre": "",
"segundo_nombre": "",
"apellido": ""
"departamento": "Bogota",
"zona": "Engativa",
"ciudad": "Bogota",
"direccion": "Cra 01",
"pais": "CO",
"RUT": {
"resp_calidades_atributos": [
"O-01",
"O-03"
"usuario_aduanero": [
"A-99"
"detalle_factura": [
"numero_linea": 1,
"valor_unitario": "1500.00",
"descripcion": "Producto uno",
"porcentaje_descuento": "0.00",
"valor_descuento": "5000.00"
"impuestos_detalle": {
"codigo_impuesto": 1,
"porcentaje_impuesto": "19.00",
"valor_base_impuesto": "10000.00",
"valor_impuesto": "1900.00"
"valor_total_detalle": "15000.00",
"valores_unitarios": {
"valor_descuento": "500.00",
"valor_impuesto": "190.00",
"valor_con_descuento": "1000.00",
"valor_a_pagar": "1190.00"
"valor_total_a_pagar": "11900.00"
"numero_linea": 2,
"cantidad": 5,
"valor_unitario": "45000.00",
"descripcion": "Producto dos",
"valor_descuento": "0.00"
"porcentaje_impuesto": "5.00",
"valor_base_impuesto": "225000.00",
"valor_impuesto": "11250.00"
"valor_total_detalle": "225000.00",
"valor_descuento": "0.00",
"valor_impuesto": "2250.00",
"valor_con_descuento": "45000.00",
"valor_a_pagar": "47250.00"
"valor_total_a_pagar": "236250.00"
"numero_linea": 3,
"valor_unitario": "18000.00",
"descripcion": "Producto 3",
"porcentaje_descuento": "0",
"valor_base_impuesto": "36000.00",
"valor_impuesto": "0.00"
"valor_total_detalle": "36000.00",
"valor_impuesto": "0.00",
"valor_con_descuento": "18000.00",
"valor_a_pagar": "18000.00"
"valor_total_a_pagar": "36000.00"
"valor_base_calculo_impuesto": "10000.00",
"valor_total_impuesto": "1900.00",
"porcentaje_impuesto": "19.00"
"valor_base_calculo_impuesto": "225000.30",
"valor_total_impuesto": "11250.30",
"porcentaje_impuesto": "5.00"
"valor_factura": {
"valor_base": "276000.00",
"valor_base_calculo_impuestos": "271000.00",
"valor_anticipo": "0.00",
"valor_descuento_total": "5000.00",
"valor_total_impuesto_1": "13150.00",
"valor_total_impuesto_2": "0.00",
"valor_total_impuesto_3": "0.00",
"valor_total_impuesto_4": "0.00",
"total_factura": "284150.00"
"generalidades": {
"identificador_transmision": "Prueba_xwsr1234",
"rg_tipo": "",
"rg_base_64": "",
"rg_px_qr": {
"rg_px_cufe": {
"notificacion": {
"es_automatico": "",
"correo_obligado": "",
"asunto": "",
"con_copia": ""
-F documento_obligado=830020470
Especificación detallada para recibir información de la nota crédito para ser procesadas en la plataforma
1.3 Adicionar nuevas variables al Json, estas no son obligatorias.
facturas[0].detalle_factura[i].valores_unitarios, este grupo de variables es utilizada la para representación grafica
facturas[0].detalle_factura[i].valor_total_a_pagar, esta variable es utilizada la para representación grafica
generalidades.rg_tipo, generalidades.rg_base_64, generalidades.rg_px_qr, generalidades.rg_px_cufe, estas variables se utilizan cuando el integrador envia la representación grafica en formato PDF encriptado en base 64 y SOFE se encarga de insertar el CUFE y el QR, en la posición dada en loas variables. El tamaño del QR siempre es de 3X3 cm.
generalidades.notificacion, este grupo de variables se utilizan para el envio de la notificación al adquiriente, en una de ellas se determina si es envio autmatico o no. Si es automatico es necesario llenar la información del correo electronico del obligado. 05 de Marzo de 2019
1.2 Formato json para notas crédito.
Nuevos campos de acuerdo a la resolución 000001 del 5 de enero del 2018
Nueva información para cumplir politica de firma, anexo 2. 2018-04-23
1.3 Adicionar el tipo de petición de cada recurso
1.4 Adicionar en valor_nota_credito el valor_total_impuesto_1
Adicionar en valor_nota_credito el valor_total_impuesto_2
Adicionar en valor_nota_credito el valor_total_impuesto_3
Adicionar en valor_nota_credito el valor_total_impuesto_4
POST /nota_credito
"nota_credito":{
"id_nota_credito":"",
"nota":["{'':'','':'','':'','':'','':'','':''}"]
"tipo_nota_credito":""
"informacion_factura":{
"codigo_unico_factura":"",
"hora":""
"detalle_factura":[{
"valor_nota_credito":{
"total_nota_credito":""
nota_credito
id_nota_credito String Mínimo 1 caracteres Si Identificador del documento: Número de la nota crédito. Incluye prefijo + consecutivo de factura. No se permiten caracteres adicionales como espacios o guiones.
fecha Fecha AAAA-MM-DD Si Fecha de emisión de la nota crédito.
hora Hora HH24:MM:SS Si Hora de emisión de la nota crédito
tipo_nota_credito Parametrizado 1=Devolución de parte de los bienes; no aceptación de partes del servicio
2=Anulación de factura electrónica
3=Rebaja total aplicada
4=Descuento total aplicado
5=Otros Si Código de tipo de nota de crédito
informacion_factura
id_factura String Mínimo 1 caracteres Si Identificador del documento: Número de la factura.
codigo_unico_factura String Si CUFE- Codigo unico de la factura electronica
cantidad Numerico 1...n Si Cantidad del artículo solicitado. Número de unidades servidas/prestadas.
valor_unitario String patron decimal Separador con punto, dos decimales Si Precio unitario de la unidad de bien o servicio servido/prestado,en la moneda indicada en la Cabecera de la Factura. Siempre sin valor_impuestos
porcentaje_impuesto String patron decimal Separador con punto, dos decimales Si Importe del impuesto retenido a la linea de la factura
valor_base_impuesto String patron decimal Separador con punto, dos decimales Si Valor del descuento del detalle
valor_impuesto String patron decimal Separador con punto, dos decimales Si Valor del descuento del detalle
valor_total_detalle String patron decimal Separador con punto, dos decimales Si Coste Total. Resultado: Unidad de Medida x Precio Unidad
valor_nota_credito
total_nota_credito String patron decimal Separador con punto, dos decimales Si Total importe bruto +Total valor_impuestos
Ejemplo de entrada una factura
documento_obligado: 830000000
"nota_credito": [
"id_nota_credito": "120",
"fecha": "2019-03-05",
"hora": "08:42:52",
"tipo_nota_credito": 2
"informacion_factura": {
"id_factura": "1141",
"codigo_unico_factura": "e5f94a7710016d7096f158ad0be7ad849d694fee",
"fecha": "2018-07-05",
"hora": "09:55:15"
"identificacion": 900730299,
"correo_electronico": "acanon@teleinte.com",
"numero_movil": "",
"razon_social": "Pixelpro SAS",
"departamento": "Bogota D.C.",
"zona": "Usaquen",
"direccion": "Carrera 10 No. 96 - 29 Oficina 211",
"valor_unitario": "11000.00",
"valor_base_impuesto": "0.00",
"valor_total_detalle": "11000.00",
"valor_impuesto": "11000.00",
"valor_a_pagar": "11000.00"
"valor_total_a_pagar": "11000.00"
"valor_base_calculo_impuesto": "0.00",
"valor_total_impuesto": "0.00"
"valor_nota_credito": {
"valor_base": "11000.00",
"valor_base_calculo_impuestos": "11000.00",
"valor_total_impuesto_1": "0.00",
"total_nota_credito": "11000.00"
"identificador_transmision": "Prueba",
"tiempo_ejecucion": 0.0052449703216552734,
"transaccion": "5b563aa703738",
"id_nota_credito": "13",
"url_representacion_grafica": "http://xxxxx/files/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf"
"descripcion_error": "Hay un problema con su solicitud",
"tiempo_ejecucion": 0.0046150684356689453,
"transaccion": "5b563ad57d17a",
"propiedad": "nota_credito[0].encabezado.tipo_nota_credito",
"descripcion": "Does not have a value in the enumeration [1,2,3,4,5]"
"propiedad": "nota_credito[0].informacion_factura.fecha",
"descripcion": "Invalid date \"20180705\", expected format YYYY-MM-DD"
"codigo_error": 401,
https://api-pruebas.afacturar.com/api/v2/nota_credito \
-H 'authorization: Bearer token_obligado' \
"{'\''son'\'':'\''XXXXXX'\'','\''vr_rte_ica'\'':'\''1500.00'\'','\''pct_rte_ica'\'':'\''0.00'\'','\''vr_rte_iva'\'':'\''500.00'\'','\''pct_rte_iva'\'':'\''0.00'\'','\''vr_rte_fte'\'':'\''0.00'\'','\''pct_rte_fte'\'':'\''0.00'\''}"
Especificación detallada para recibir información de la nota debito para ser procesadas en la plataforma
1.2 Formato JSON para notas debito.
1.3 Adicionar en valor_nota_debito el valor_total_impuesto_1
Adicionar en valor_nota_debito el valor_total_impuesto_2
Adicionar en valor_nota_debito el valor_total_impuesto_3
Adicionar en valor_nota_debito el valor_total_impuesto_4
POST /nota_debito
"nota_debito":[{
"id_nota_debito":"",
"tipo_nota_debito":""
"valor_nota_debito":{
"valor_total_impuesto_1":"0.00",
"total_nota_debito":""
nota_debito
id_nota_debito String Mínimo 1 caracteres Si Identificador único asignado a la nota de abono por parte del Acreedor.
División del en varias posiciones del array
tipo_nota_debito Parametrizado 1 = Intereses
2 = Gastos por cobrar
3 = Cambio del valor Si Código de tipo de nota debito
valor_nota_debito
total_nota_debito String patron decimal Separador con punto, dos decimales Si Total importe bruto +Total valor_impuestos
rg_tipo String Si hay información en rg_base_64 Valor determinado HTML O PDF
Ejemplo de entrada una nota debito
"nota_debito": [
"id_nota_debito": "14030",
"hora": "10:28:00",
"{'son':'XXXXXX'}"
"tipo_nota_debito": 3
"id_factura": "990001076",
"codigo_unico_factura": "7ffd8ff81950fb237e60ec5633d8bd10623de4ea",
"fecha": "2019-02-18",
"hora": "10:28:00"
"tipo_regimen": 0,
"tipo_identificacion": 13,
"identificacion": 95000001,
"correo_electronico": "bb@disenamos.com",
"numero_movil": "2010101",
"razon_social": "Diseñamos",
"departamento": "Amazonas",
"zona": "",
"ciudad": "LETICIA",
"direccion": "Calle 567 89-00",
"O-03",
"O-07",
"O-11",
"O-13",
"O-17"
"valor_nota_debito": {
"total_nota_debito": "11000.00"
"identificador_transmision": "95000001_20190220170822",
"tiempo_ejecucion": 0.0050101280212402344,
"transaccion": "5b577cb3614b0",
"id_nota_debito": "1012",
"id_factura": "FA125689",
"codigo_unico_factura": "12036fc4932f2ba503e9bb7fa607900fc98c3c954",
"tiempo_ejecucion": 0.0048849582672119141,
"transaccion": "5b577dc21904a",
"propiedad": "nota_debito[0].encabezado.tipo_nota_debito",
"descripcion": "Does not have a value in the enumeration [1,2,3]"
"propiedad": "nota_debito[0].informacion_adquiriente.tipo_identificacion",
"descripcion": "Does not have a value in the enumeration [11,12,13,21,22,31,41,42,1]"
https://api-pruebas.afacturar.com/api/v2/nota_debito \
-H 'postman-token: c304c2f7-b4fb-a1c6-5e20-6892a5444495' \
"{'\''son'\'':'\''XXXXXX'\''}"
1.2 Adicionar en encabezado el fecha_vencimiento
1.1 Generar documentación de la factura de contingencia 24 de Julio de 2018
POST /factura_contingencia
"informacion_factura_contingencia":{
"id_factura_contingencia":"",
"copia_factura":"",
"fecha_contingencia":""
numero_resolucion_facturacion String Minimo 5 caracteres Si Número de resolución entregado por la DIAN, para la facturación electronica
informacion_factura_contingencia
id_factura_contingencia String Minimo de 3 caracteres Si Identificador manual factura contingencia.
copia_factura Boleano 1 ó 0 Si Indicar si la factura ha sido transcrita de manera manual
fecha_contingencia Si Fecha en la que fue realizada la factura de contingencia (manual)
descuento array Información de descuento No
porcentaje_descuento String patron decimal Separador con punto, dos decimales No Porcentaje de descuento del detalle
valor_descuento String patron decimal Separador con punto, dos decimales No Valor de descuento efectuado al detalle
"id_factura":"990005011",
"fecha":"2019-03-05",
"hora":"09:00:47",
"'son':'XXXXXX','vr_rte_ica':'1500.00','pct_rte_ica':'0.00','vr_rte_iva':'500.00','pct_rte_iva':'0.00','vr_rte_fte':'0.00','pct_rte_fte':'0.00'}"
"tipo_factura":3,
"numero_resolucion_facturacion":"9000000032882632",
"id_factura_contingencia":"1010",
"copia_factura":"true",
"fecha_contingencia":"2018-04-04"
"identificacion":831017049,
"correo_electronico":"info@pruebas.co",
"numero_movil":"3015663266",
"razon_social":"telefonia S.A.S",
"direccion":"Trv. 71 bis 74 a 07",
"resp_calidades_atributos":[
"O-03","O-05","O-07","O-10","O-13"
"usuario_aduanero":[
"A-22","A-23"
"valor_descuento":"500.00",
"identificador_transmision":"FC_001",
"tiempo_ejecucion": 0.0073328018188476562,
"transaccion": "5b57918594a19",
"cufe": "31dfb2f342c428636a197a96eaa3088a997048fe",
"id_factura_contingencia": "1010",
"tiempo_ejecucion": 0.0059170722961425781,
"transaccion": "5b579208898f7",
"propiedad": "facturas[0].encabezado.tipo_de_pago",
"descripcion": "Does not have a value in the enumeration [10,20,41,42]"
"propiedad": "facturas[0].informacion_adquiriente.tipo_contribuyente",
"descripcion": "String value found, but a number is required"
"descripcion": "Does not have a value in the enumeration [1,2]"
https://api-pruebas.afacturar.com/api/v2/factura_contingencia \
-H 'postman-token: 04048a90-e629-f94c-fb56-d7a767201288' \
"'\''son'\'':'\''XXXXXX'\'','\''vr_rte_ica'\'':'\''1500.00'\'','\''pct_rte_ica'\'':'\''0.00'\'','\''vr_rte_iva'\'':'\''500.00'\'','\''pct_rte_iva'\'':'\''0.00'\'','\''vr_rte_fte'\'':'\''0.00'\'','\''pct_rte_fte'\'':'\''0.00'\''}"
1 Generar documentación de la factura de mandato 21 de Febrero de 2019
POST /factura_mandato
"informacion_mandantes":[{
"contratos":[{
"tipo":""
"datos_mandante":{
"numero_contrato":"",
"identificacion_mandante":"",
"nombre_mandante":""
numero String Mínimo 2 caracteres Si Identificador del contrato de mandato o su equivalente firmado por el vendedor
fecha Fecha AAAA-MM-DD Si Fecha de suscripción del contrato
tipo String Valor definido "Contrato Mandato" Si Tipo o clase el Contrato: de Mandato, en Colombia el Contrato de Consorcio es equivalente al de Unión Temporal y otros similares
informacion_mandantes
datos_mandante array Información del mandante Si
numero_contrato String Mínimo 2 caracteres Si Información del identificador del contrato
identificacion_mandante Numérico 1...n Si Identificación del mandante
nombre_mandante String Mínimo 2 caracteres Si Nombre del mandante
"fecha":"2018-04-05",
"nota":[
"Factura prueba",
"Factura prueba Json varias notas",
"pruebas teleinte-construccion MAFI"
"numero_resolucion_facturacion":"547356756778678",
"numero":"123456",
"tipo":"mandato"
"identificacion":"123456789",
"correo_electronico":"email@pruebas.com",
"razon_social":"Mandante Uno",
"departamento":"Cundinamarca",
"zona":"Centro",
"direccion":"Carrera 10 N. 10-10",
"resp_calidades_atributos":["O-03","O-05","O-07","O-10","O-13"],
"usuario_aduanero":["A-22","A-23"]
"correo_electronico":"telefonia123.info@pruebas.co",
"cantidad":560,
"valor_unitario":"3975.00",
"descripcion":"SERVICIO DE SOPORTE, ADMINISTRACION MARZO",
"porcentaje_descuento":"10.00",
"valor_descuento":"222600.00"
"valor_base_impuesto":"2003400.00",
"valor_impuesto":"380646.00"
"valor_total_detalle":"2384046.00",
"numero_contrato":"123456",
"identificacion_mandante":"123456789",
"nombre_mandante":"Mandante Uno"
"descripcion":"SERVICIO DE SOPORTE Junio",
"porcentaje_descuento":"25.00",
"valor_descuento":"93750.00"
"valor_base_impuesto":"281250.00",
"valor_impuesto":"53437.50"
"valor_total_detalle":"334687.50",
"valor_base_calculo_impuesto":"2284650.00",
"valor_total_impuesto":"434083.50"
"valor_base":"2601000.00",
"valor_base_calculo_impuestos":"2601000.00",
"valor_descuento_total":"316350.00",
"valor_total_impuesto_1":"2284650.00",
"total_factura":"2718733.50"
"identificador_transmision":"FC_001"
http://afapi.sinfo.co/api/v2/factura_contingencia \
-H 'authorization: Bearer su-token-asignado-para-pruebas-1071-caracteres' \
-F documento_obligado=830067814
"valor_total_detalle":"2384046.00"
"valor_total_detalle":"334687.50"
"valor_base_calculo_impuestos":"2284650.00",
}	' \
Lista las trasacciones recibidas para ser procesadas en la DIAN
1 Generar documentación de transacciones 25 de Febrero de 2019
POST /transacciones_emitidas
uniqid:
uniqid Identificador de la transacción
uniqid: XXXXXXXXX
"fc": "YYYY-MM-DD HH:MI:SE",
"milseg_ejecucion": "0.0",
"tipo_documento": "xxxxx",
"uniqid": "xxxxxxxxx",
"numero_documento": "xx",
"adquiriente_nombre": "xxxxxxx",
"adquiriente_documento": "xxxxxxxx",
"fecha_documento": "YYYY-MM-DD HH:MI:SE",
"url_representacion_xml": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.xml",
"url_representacion_pdf": "https://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pdf",
"correo_adquiriente": "xxxxxx@xxx.xxx",
"cufe": "xxxxxxxxxxxxxxxxxxxxx",
"url_rta_envio_dian": null,
"consulta_doc_dian_estado": null,
"consulta_doc_dian_url_rta": null,
"aceptacion_rechazo_fecha": null,
"aceptacion_rechazo_ip": null,
"aceptacion_rechazo_estado": null,
"aceptacion_rechazo_observaciones": null,
"aceptacion_rechazo_causal": null,
"acuse_recibo": "N",
"acuse_recibo_fecha": null,
"acuse_recibo_ip": null,
"correos_enviados": 0
"codigo_error": 11,
"descripcion_error": [
"The documento obligado field is required."
"tiempo_ejecucion": 0.0013968944549560547,
"transaccion": "5c743d8744af1"
https://api-pruebas.afacturar.com/api/v2/transacciones_emitidas \
-F documento_obligado=XXXXXXXXX
Cuando usted hace un llamado a la API, puede recibir los siguientes mensajes de error en la respuesta. Puede que haya algo mal con su solicitud o puede que algo esté mal de nuestra parte. Los errores responden con un código de error y JSON que contiene un mensaje, una descripción y un código API más preciso.
400 Solicitud incorrecta Hay un problema con su solicitud Compruebe que su solicitud sigue la documentación de la API y utiliza la sintaxis correcta.
401 No autorizado No tiene la autorización necesaria para realizar la solicitud. Asegúrese de estar utilizando una clave API válida con los permisos necesarios para su solicitud.
403 Prohibido El servidor entendió la solicitud, pero se negó a cumplirla. Vea si su plan en Afacturar.com incluye el recurso que está solicitando y su clave API tiene las autorizaciones necesarias.
404 No encontrado El servidor no pudo encontrar el recurso solicitado. Cambie su URL de solicitud para que coincida con un punto final API válido.
405 Método no permitido El recurso no tiene el método especificado. (por ejemplo, PUT en las transmisiones) Cambie el método para seguir la documentación del recurso.
409 Conflicto Un conflicto surgió de su solicitud. (por ejemplo, el OFE no esta asociado al código de autorización) Modificar la carga útil para eliminar el conflicto..
415 Tipo de medio no admitido La solicitud no está en un formato compatible. Verifique que su encabezado Content-Type sea compatible y que su solicitud cumpla con la documentación.
422 Entidad no procesable La solicitud fue sintácticamente correcta pero falló debido a errores semánticos. Asegúrese de que su solicitud incluya todos los campos obligatorios y que sus datos sean válidos.
429 Exceder el límite de envío Se excede el numero de transacciones permitido (120 por minuto). Verifique que se encuentra dentro de los límites acordados con Afacturar.
500 Error de servidor interno Algo salió mal de nuestro lado. Pruebe la solicitud nuevamente más tarde. Si el error no se resuelve, póngase en contacto con el soporte técnico soporte@afacturar.com.
503 Servicio no disponible Estamos experimentando niveles de tráfico más altos de lo normal. Prueba la solicitud nuevamente, ya estamos enterado del problema para aumentar la capacidad.

References: Resolución 
 Resolución 
 resolución 
 resolución 
 resolución 
 resolución