🇪🇸 API en Español

💡 Esta API es una capa de traducción sobre el motor principal. Todos los campos están en español para facilitar la integración a desarrolladores hispanohablantes. Internamente usa el mismo motor — misma seguridad, validación y transmisión DIAN.

Endpoints Disponibles

POST/facturacion-es/

Genérico — tipo en el body

POST/facturacion-es/factura

Factura Electrónica

POST/facturacion-es/nota-credito

Nota Crédito

POST/facturacion-es/nota-debito

Nota Débito

POST/facturacion-es/documento-soporte

Documento Soporte

POST/facturacion-es/nota-ajuste-ds

Nota Ajuste Doc. Soporte

POST/facturacion-es/pos

Tiquete POS Electrónico

POST/facturacion-es/exportacion

Factura de Exportación

Comparación: API Estándar vs API en Español

❌ API Estándar (inglés técnico)

JSON
{
  "id_tipo_documento": 1,
  "customer": {
    "identification_number": "900123456",
    "name": "Empresa XYZ"
  },
  "invoice_lines": [
    {
      "price_amount": 50000,
      "invoiced_quantity": 1,
      "description": "Producto"
    }
  ],
  "transmit": true
}

✅ API en Español

JSON
{
  "cliente": {
    "numero_identificacion": "900123456",
    "nombre": "Empresa XYZ"
  },
  "lineas": [
    {
      "precio": 50000,
      "cantidad": 1,
      "descripcion": "Producto",
      "iva": 19
    }
  ],
  "transmitir": true
}

POST /facturacion-es/factura

Emitir una factura electrónica con campos en español.

Campos Principales

CampoTipoRequeridoDescripción
tipostringNoSolo endpoint genérico: "factura", "nc", "nd", "ds", "exportacion"
clienteobjectDatos del cliente (ver tabla abajo)
lineasarrayLíneas del documento. Alias: productos, items
observacionesstringNoNotas u observaciones. Alias: notas
transmitirbooleanNotrue para enviar a DIAN inmediatamente. Alias: enviar_dian
referenciastringNoReferencia única de tu sistema (previene duplicados). Alias: referencia_externa, id_unico
documento_referenciaintegerNoSolo NC/ND: ID del documento original
concepto_notastringNoSolo NC/ND: código del concepto
ambientestringNo1=Producción, 2=Habilitación (default)
asincronobooleanNotrue = respuesta 202 + procesamiento en background
totalesobjectNoTotales manuales. Si se omite, se auto-calculan desde las líneas.
impuestosarrayNoImpuestos globales manuales. Si se omite, se agrupan desde las líneas.

Objeto: cliente

CampoTipoRequeridoDescripción
nombrestringRazón social o nombre del cliente
numero_identificacionstringNIT o cédula. Alias: nit, cedula
correostringEmail para envío del documento. Alias: correo_electronico
direccionstringNoDirección del cliente
telefonostringNoTeléfono de contacto
tipo_documentointegerNo13=CC, 31=NIT, 22=CE, 41=Pasaporte
tipo_organizacionintegerNo1=Persona Jurídica, 2=Persona Natural

Objeto: lineas[]

CampoTipoRequeridoDescripción
descripcionstringDescripción del producto/servicio. Alias: producto, nombre_producto
cantidadnumberCantidad (default: 1)
precionumberPrecio unitario. Alias: precio_unitario, valor_unitario
ivanumberNo⚡ Shortcut: % de IVA (ej: 19). Código DIAN: 01
incnumberNo⚡ Shortcut: % INC - Impuesto Nacional al Consumo (ej: 8). Código DIAN: 04
icanumberNo⚡ Shortcut: % ICA (ej: 1.04). Código DIAN: 03
retefuentenumberNo⚡ Shortcut: % ReteFuente. Código DIAN: 07
reteivanumberNo⚡ Shortcut: % ReteIVA. Código DIAN: 06
reteicanumberNo⚡ Shortcut: % ReteICA. Código DIAN: 05
bolsasnumberNo⚡ Shortcut: % Imp. Bolsas Plásticas. Código DIAN: 22
impuestosarrayNoArray detallado (alternativa a shortcuts). Cada uno: { tipo: "iva"|"inc"|"01"|"04", porcentaje, base, valor }
codigostringNoCódigo del producto. Alias: codigo_producto, referencia
unidad_medidastringNoCódigo unidad de medida (default: "94" = Unidad)

⚡ Shortcuts de Impuestos: Pasa iva: 19, inc: 8, ica: 1.04, etc. directamente en cada línea. El sistema auto-calcula base, valor, y totaliza por tipo de impuesto. También puedes combinar varios: { iva: 19, inc: 8 } para restaurantes. Para impuestos no estándar usa el array impuestos con { tipo, porcentaje }.

🧮 Auto-cálculo: Si no envías totales ni impuestos globales, el sistema los calcula automáticamente sumando las líneas. Subtotal, total de impuestos, total a pagar y tax_totals agrupados por tipo se generan solos.

⚙️ Reglas Automáticas en Producción (DIAN Anexo 1.8):
  • Transmisión Síncrona: En el ambiente de producción (o utilizando API keys de producción sk_live_...), la transmisión de los documentos se procesa siempre de forma síncrona (SendBillSync) para prevenir rechazos por falta de autorización para envíos por lotes asíncronos.
  • Supresión de Impuestos Vacíos: Para evitar advertencias restrictivas (como las notificaciones FAX05 y FAX14) en el portal oficial de la DIAN, el sistema suprime dinámicamente los bloques vacíos ICA (03) e INC (04) con base/porcentaje en 0.00 al operar en producción.
  • Alineación de Fechas y Firma: La fecha y hora de emisión del documento XML se auto-sincronizan en tiempo real con la marca de tiempo de la firma digital (con zona horaria Colombia -05:00), eliminando de raíz el rechazo por regla FAD09e.
  • Recálculo Transaccional del CUFE/CUDE: El código CUFE/CUDE se calcula e inyecta dinámicamente integrando el desfase horario oficial de -05:00 tanto en el cálculo matemático como en el tag IssueTime del XML, garantizando la consistencia exacta requerida.

Ejemplo: Factura Electrónica

CURL
curl -X POST https://api.jcflow.com.co/v1/api/facturacion-es/factura \
  -H "Content-Type: application/json" \
  -H "X-API-Key: sk_test_tu_api_key" \
  -d '{
  "cliente": {
    "nombre": "Papelería El Lápiz S.A.S",
    "numero_identificacion": "900111222",
    "correo": "admin@ellapiz.com",
    "direccion": "Cra 10 #20-30, Medellín"
  },
  "lineas": [
    {
      "descripcion": "Resma de papel carta",
      "cantidad": 10,
      "precio": 15000,
      "iva": 19
    },
    {
      "descripcion": "Caja de lapiceros x12",
      "cantidad": 5,
      "precio": 8000,
      "iva": 19
    }
  ],
  "observaciones": "Entrega en bodega principal",
  "transmitir": true,
  "referencia": "VENTA-2026-001"
}'
Probar EndpointPOST /facturacion-es/factura

POST /facturacion-es/nota-credito

Emitir una nota crédito. Requiere documento_referencia (ID de la factura original).

JSON
{
  "documento_referencia": 42,
  "concepto_nota": "2",
  "cliente": {
    "nombre": "Papelería El Lápiz S.A.S",
    "numero_identificacion": "900111222"
  },
  "lineas": [
    {
      "descripcion": "Devolución resma de papel",
      "cantidad": 5,
      "precio": 15000,
      "iva": 19
    }
  ],
  "observaciones": "Devolución por producto defectuoso",
  "transmitir": true
}

POST /facturacion-es/nota-debito

Emitir una nota débito. Misma estructura que nota crédito.

POST /facturacion-es/documento-soporte

Emitir documento soporte para proveedores no obligados a facturar.

POST /facturacion-es/

Endpoint único para todos los tipos. El tipo se envía en el campo tipo del body.

Valores aceptados para tipo:

ValorDocumento
"factura" o "fe"Factura Electrónica
"nota_credito" o "nc"Nota Crédito
"nota_debito" o "nd"Nota Débito
"documento_soporte" o "ds"Documento Soporte
"nota_ajuste_ds" o "na"Nota Ajuste DS
"exportacion" o "fx"Factura de Exportación

Ejemplo: Múltiples impuestos (IVA + INC)

JSON
{
  "tipo": "factura",
  "cliente": {
    "nombre": "Restaurante La Sazón",
    "nit": "900333444",
    "correo": "contable@lasazon.co"
  },
  "lineas": [
    {
      "producto": "Almuerzo ejecutivo",
      "cantidad": 100,
      "precio": 25000,
      "iva": 19,
      "inc": 8
    },
    {
      "producto": "Servicio de meseros",
      "cantidad": 1,
      "precio": 500000,
      "iva": 19
    }
  ],
  "notas": "Evento 15 de mayo — 100 personas",
  "transmitir": true
}

Ejemplo: Array detallado de impuestos

JSON
{
  "cliente": {
    "nombre": "Importadora ABC",
    "nit": "900555666",
    "correo": "compras@abc.com"
  },
  "lineas": [
    {
      "descripcion": "Maquinaria industrial",
      "cantidad": 1,
      "precio": 50000000,
      "impuestos": [
        {
          "tipo": "iva",
          "porcentaje": 19
        },
        {
          "tipo": "advalorem",
          "porcentaje": 5
        }
      ]
    }
  ],
  "transmitir": true
}

Tabla de Aliases

Muchos campos aceptan múltiples nombres para mayor flexibilidad:

Campo principalAliases
nombrerazon_social
numero_identificacionnit, cedula
correocorreo_electronico, email
descripcionproducto, nombre_producto
precioprecio_unitario, valor_unitario
lineasproductos, items
observacionesnotas
transmitirenviar_dian
referenciareferencia_externa, id_unico