Skip to main content

Dos Lineas,Una Tarifa de Iva,Descuento en linea y global

Método: POST
URL: http://coapi.test/api/ubl2.1/invoice

PRIMER ENVIO DE FACTURA

  • Si se instalo un dominio se debe utilizar de la siguiente manera:

http://midominio.com/api/ubl2.1/invoice

  • Requiere un token de autorizacion el cual fue devuelto al realizar el Paso 1 - Config Company, si este token se extravio, se puede consultar en la tabla de la base de datos de la API en la tabla users, en el campo API_TOKEN.

  • En URL el ultimo parametro corresponde al id del set de pruebas que la dian entrego al momento de registrar el modo de operacion software propio.

.../ubl2.1/invoice/iddelsetdepruebasdeladian

  • Este endpoint se puede utilizar de dos modos:
  1. Asincrono: .../ubl2.1/invoice/iddelsetdepruebasdeladian

  2. Sincrono: .../ubl2.1/invoice

  • El modo sincrono no afecta al set de pruebas, pero la respuesta de la DIAN incluye posibles errores de validacion y estado de la factura, valida o no valida.

  • El modo asincrono, afecta el set de pruebas y en la respuesta no se incluye el resultado de la factura, solo se entrega un ZIP_KEY el cual debe ser consultado mediante el endpoint:

.../ubl2.1/status/zip

de la seccion 03 - Consultas de estado para asi poder establecer si la factura fue valida o no y los errores de validación.

Autenticación

  • Tipo: Bearer Token
  • Header: Authorization: Bearer <TOKEN>

Headers

KeyValue
Content-Typeapplication/json
Acceptapplication/json

Body

{
"number": 994500240, // Número consecutivo de la factura
"type_document_id": 1, // 1 = Factura electrónica
"date": "2025-07-22", // Fecha de emisión
"time": "04:08:12", // Hora de emisión
"resolution_number": "18760000001", // Número de resolución DIAN
"prefix": "SETP", // Prefijo autorizado

"customer": {
"identification_number": "900428042", // NIT del cliente
"name": "TAMPAC TECNOLOGÍA EN AUTOMATIZACIÓN SAS"
},

"payment_form": {
"payment_form_id": 1, // Contado
"payment_method_id": 30, // Transferencia electrónica
"payment_due_date": "2025-07-22", // Fecha de vencimiento (igual a emisión si es contado)
"duration_measure": "0" // Días de plazo
},

"allowance_charges": [
{
"discount_id": 1,
"charge_indicator": false, // false = es descuento, true = es recargo
"allowance_charge_reason": "Descuento Global",
"amount": "100.00", // Descuento global aplicado sobre el total
"base_amount": "1900.00" // Base sobre la cual se calculó el descuento
}
],

"legal_monetary_totals": {
"line_extension_amount": "1900.00", // Subtotal (suma de líneas con descuentos de línea aplicados)
"tax_exclusive_amount": "1900.00", // Total sin IVA (antes del IVA, pero después de descuentos por línea)
"tax_inclusive_amount": "2261.00", // Total con IVA incluido (1900 + 361 IVA)
"allowance_total_amount": "100.00", // Descuento total informado en la sección global
"charge_total_amount": "0.00", // Total de recargos (en este caso, ninguno)
"payable_amount": "2161.00" // Total a pagar: 2261.00 - 100.00 (descuento global)
},

"tax_totals": [
{
"tax_id": 1, // 1 = IVA
"tax_amount": "361.00", // IVA total sumando ambas líneas (180.50 + 180.50)
"percent": "19.00", // Porcentaje de IVA
"taxable_amount": "1900.00" // Base gravable total (suma de 950 + 950)
}
],

"invoice_lines": [
{
"unit_measure_id": 70, // Unidad de medida
"invoiced_quantity": "1", // Cantidad facturada
"line_extension_amount": "950.00", // Precio - descuento de línea (1000 - 50)
"free_of_charge_indicator": false, // No es gratuito
"description": "Producto de prueba 1",
"code": "PRUEBA1",
"type_item_identification_id": 4, // Código del tipo de ítem
"price_amount": "1000.00", // Precio original antes de descuento
"base_quantity": "1",

"allowance_charges": [
{
"discount_id": 10,
"charge_indicator": false,
"allowance_charge_reason": "Descuento por promoción",
"amount": "50.00", // Descuento de la línea
"base_amount": "1000.00"
}
],

"tax_totals": [
{
"tax_id": 1,
"tax_amount": "180.50", // IVA de esta línea: 950 x 0.19
"taxable_amount": "950.00", // Base gravable después del descuento de línea
"percent": "19.00"
}
]
},

{
"unit_measure_id": 70,
"invoiced_quantity": "1",
"line_extension_amount": "950.00", // 1000 - 50
"free_of_charge_indicator": false,
"description": "Producto de prueba 2",
"code": "PRUEBA2",
"type_item_identification_id": 4,
"price_amount": "1000.00",
"base_quantity": "1",

"allowance_charges": [
{
"discount_id": 11,
"charge_indicator": false,
"allowance_charge_reason": "Descuento por volumen",
"amount": "50.00",
"base_amount": "1000.00"
}
],

"tax_totals": [
{
"tax_id": 1,
"tax_amount": "180.50", // 950 x 0.19
"taxable_amount": "950.00",
"percent": "19.00"
}
]
}
]
}

Ejemplo cURL

curl -X POST "http://apidian2024.oo/api/ubl2.1/invoice" \
-H "Authorization: Bearer <TOKEN>" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
--data-raw '{
"number": 994553111, // Número consecutivo de la factura
"type_document_id": 1, // 1 = Factura electrónica
"date": "2025-11-27", // Fecha de emisión
"time": "04:08:12", // Hora de emisión
"resolution_number": "18760000001", // Número de resolución DIAN
"prefix": "SETP", // Prefijo autorizado

"customer": {
"identification_number": "900428042", // NIT del cliente
"name": "TAMPAC TECNOLOGÍA EN AUTOMATIZACIÓN SAS"
},

"payment_form": {
"payment_form_id": 1, // Contado
"payment_method_id": 30, // Transferencia electrónica
"payment_due_date": "2025-07-22", // Fecha de vencimiento (igual a emisión si es contado)
"duration_measure": "0" // Días de plazo
},

"allowance_charges": [
{
"discount_id": 1,
"charge_indicator": false, // false = es descuento, true = es recargo
"allowance_charge_reason": "Descuento Global",
"amount": "100.00", // Descuento global aplicado sobre el total
"base_amount": "1900.00" // Base sobre la cual se calculó el descuento
}
],

"legal_monetary_totals": {
"line_extension_amount": "1900.00", // Subtotal (suma de líneas con descuentos de línea aplicados)
"tax_exclusive_amount": "1900.00", // Total sin IVA (antes del IVA, pero después de descuentos por línea)
"tax_inclusive_amount": "2261.00", // Total con IVA incluido (1900 + 361 IVA)
"allowance_total_amount": "100.00", // Descuento total informado en la sección global
"charge_total_amount": "0.00", // Total de recargos (en este caso, ninguno)
"payable_amount": "2161.00" // Total a pagar: 2261.00 - 100.00 (descuento global)
},

"tax_totals": [
{
"tax_id": 1, // 1 = IVA
"tax_amount": "361.00", // IVA total sumando ambas líneas (180.50 + 180.50)
"percent": "19.00", // Porcentaje de IVA
"taxable_amount": "1900.00" // Base gravable total (suma de 950 + 950)
}
],

"invoice_lines": [
{
"unit_measure_id": 70, // Unidad de medida
"invoiced_quantity": "1", // Cantidad facturada
"line_extension_amount": "950.00", // Precio - descuento de línea (1000 - 50)
"free_of_charge_indicator": false, // No es gratuito
"description": "Producto de prueba 1",
"code": "PRUEBA1",
"type_item_identification_id": 4, // Código del tipo de ítem
"price_amount": "1000.00", // Precio original antes de descuento
"base_quantity": "1",

"allowance_charges": [
{
"discount_id": 10,
"charge_indicator": false,
"allowance_charge_reason": "Descuento por promoción",
"amount": "50.00", // Descuento de la línea
"base_amount": "1000.00"
}
],

"tax_totals": [
{
"tax_id": 1,
"tax_amount": "180.50", // IVA de esta línea: 950 x 0.19
"taxable_amount": "950.00", // Base gravable después del descuento de línea
"percent": "19.00"
}
]
},

{
"unit_measure_id": 70,
"invoiced_quantity": "1",
"line_extension_amount": "950.00", // 1000 - 50
"free_of_charge_indicator": false,
"description": "Producto de prueba 2",
"code": "PRUEBA2",
"type_item_identification_id": 4,
"price_amount": "1000.00",
"base_quantity": "1",

"allowance_charges": [
{
"discount_id": 11,
"charge_indicator": false,
"allowance_charge_reason": "Descuento por volumen",
"amount": "50.00",
"base_amount": "1000.00"
}
],

"tax_totals": [
{
"tax_id": 1,
"tax_amount": "180.50", // 950 x 0.19
"taxable_amount": "950.00",
"percent": "19.00"
}
]
}
]
}'

Probar endpoint

POST
Enviar Factura (Síncrono / Asíncrono con TestSetId)
BASE URL
Se guarda localmente en tu navegador.
BEARER TOKEN
Se guarda solo en esta sesión/pestaña.
PATH PARAMS
TestSetId (opcional)
URL FINAL
/api/ubl2.1/invoice
BODY JSON
RESPUESTA
Envía la solicitud para ver la respuesta aquí.