La API de facturación electrónica DIAN que integra en 5 minutos.
Emite Facturas Electrónicas, Notas Débito/Crédito, Documento Soporte y Eventos RADIAN con una llamada REST JSON. Sin SDKs obligatorios, sin lidiar con SOAP ni certificados enredados y con validación DIAN en menos de 500ms.
curl -X POST https://api.emytu.com/v1/invoices \
-H "Authorization: Bearer emytu_live_sec_994a..." \
-H "Idempotency-Key: ord_77281_f92" \
-H "Content-Type: application/json" \
-d '{
"numbering_prefix": "SETT",
"customer": {
"identification": "901234567",
"dv": "8",
"legal_name": "ACME Colombia S.A.S.",
"email": "contabilidad@acme.co"
},
"payment_means": { "code": "10", "method": "cash" },
"items": [
{
"sku": "SUB-PRO-01",
"name": "Suscripción Software Anual",
"quantity": 1,
"price": 1200000,
"tax_rate": 19.0
}
]
}' import { EmytuClient } from '@emytu/sdk';
const emytu = new EmytuClient({ apiKey: process.env.EMYTU_API_KEY });
const invoice = await emytu.invoices.create({
idempotencyKey: 'ord_77281_f92',
numberingPrefix: 'SETT',
customer: {
identification: '901234567',
dv: '8',
legalName: 'ACME Colombia S.A.S.',
email: 'contabilidad@acme.co',
},
paymentMeans: { code: '10', method: 'cash' },
items: [
{
sku: 'SUB-PRO-01',
name: 'Suscripción Software Anual',
quantity: 1,
price: 1_200_000,
taxRate: 19.0,
},
],
});
console.log(`Factura validada por DIAN: ${invoice.cufe}`); import requests
response = requests.post(
"https://api.emytu.com/v1/invoices",
headers={
"Authorization": "Bearer emytu_live_sec_994a...",
"Idempotency-Key": "ord_77281_f92",
},
json={
"numbering_prefix": "SETT",
"customer": {
"identification": "901234567",
"dv": "8",
"legal_name": "ACME Colombia S.A.S.",
"email": "contabilidad@acme.co",
},
"payment_means": {"code": "10", "method": "cash"},
"items": [{
"sku": "SUB-PRO-01",
"name": "Suscripción Software Anual",
"quantity": 1,
"price": 1200000,
"tax_rate": 19.0,
}],
},
)
invoice = response.json()
print(f"Factura generada: {invoice['number']} - CUFE: {invoice['cufe']}") <?php
use Illuminate\Support\Facades\Http;
$response = Http::withToken(config('services.emytu.secret'))
->withHeaders(['Idempotency-Key' => 'ord_77281_f92'])
->post('https://api.emytu.com/v1/invoices', [
'numbering_prefix' => 'SETT',
'customer' => [
'identification' => '901234567',
'dv' => '8',
'legal_name' => 'ACME Colombia S.A.S.',
'email' => 'contabilidad@acme.co',
],
'payment_means' => ['code' => '10', 'method' => 'cash'],
'items' => [[
'sku' => 'SUB-PRO-01',
'name' => 'Suscripción Software Anual',
'quantity' => 1,
'price' => 1200000,
'tax_rate' => 19.0,
]],
]);
$invoice = $response->json(); package main
import (
"bytes"
"encoding/json"
"net/http"
)
func emitInvoice() (*http.Response, error) {
payload := map[string]interface{}{
"numbering_prefix": "SETT",
"customer": map[string]string{
"identification": "901234567",
"legal_name": "ACME Colombia S.A.S.",
"email": "contabilidad@acme.co",
},
}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://api.emytu.com/v1/invoices", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer emytu_live_sec_994a...")
req.Header.Set("Idempotency-Key", "ord_77281_f92")
return http.DefaultClient.Do(req)
} {
"status": "accepted",
"number": "SETT-10492",
"cufe": "f8319e7a20c91823abdf0175bca...",
"qr_code_url": "https://emytu.com/qr/f8319e...",
"xml_url": "https://storage.emytu.com/xml/SETT-10492.xml",
"pdf_url": "https://storage.emytu.com/pdf/SETT-10492.pdf",
"payable_amount": 1428000.00,
"dian_validation": {
"status_code": "00",
"message": "Documento validado por la DIAN con éxito.",
"track_id": "dian_trk_081a9f7"
}
} Diseñado para sistemas que no pueden fallar
Cada detalle de la API de Emytu fue construido pensando en la resiliencia técnica, velocidad de respuesta y cero fricción con la DIAN.
Idempotencia Nativa
Envía el encabezado Idempotency-Key en cada emisión. Si tu red sufre un timeout o tu servidor se reinicia, reintenta sin riesgo de generar una doble factura ni alterar consecutivos fiscales.
Firma XAdES-BES en Memoria
Nuestro motor canónico procesa el XML UBL 2.1 y aplica la firma digital PKCS#12 en menos de 80ms, calculando el CUFE/CUDE con SHA-384 sin bloquear tus hilos.
Webhooks con Firma HMAC
Recibe notificaciones instantáneas cuando un documento cambie de estado (accepted, rejected, eventos RADIAN). Valida la autenticidad con la firma criptográfica X-Emytu-Signature.
Multi-Tenancy para SaaS y ERPs
¿Tienes cientos de clientes que facturan? Aprovisiona empresas hijas (tenants), asigna sus resoluciones DIAN y gestiona sus certificados mediante endpoints dedicados.
Sandbox & Habilitación DIAN
Ambiente de pruebas aislado. Ejecuta el set de pruebas oficial de la DIAN para nuevos emisores en una sola llamada y pasa a producción sin trámites presenciales.
PDF, XML y QR Instantáneos
Obtén URLs CDN de alta velocidad para el XML firmado (UBL 2.1) y la representación gráfica en PDF lista para descargar, enviar por WhatsApp o adjuntar a correos transaccionales.
¿Por qué no integrar directamente con la DIAN?
Construir infraestructura propia para la DIAN te cuesta semanas de ingeniería, mantenimiento de servidores SOAP y dolores de cabeza ante contingencias. Con Emytu pasas a producción en horas.
Integración Directa
- 3 a 6 semanas de desarrollo
Implementar librerías SOAP/WSDL, digest de XML UBL 2.1 y firma PKCS#12 en disco.
- Bloqueos por caídas de la DIAN
Si la DIAN responde con timeout, tu servidor se congela o genera facturas duplicadas.
- Errores crípticos de validación
Códigos opacos como
Regla FAU02sin indicación de qué campo falló. - Mantenimiento continuo de resoluciones
Modificaciones constantes por cada nuevo anexo técnico o cambio normativo.
API REST Moderna
- 1 llamada POST JSON en 5 minutos
Envías datos limpios; nosotros generamos el XML, firmamos y validamos en <500ms.
- Contingencia Tipo 04 Automática
Colas en BullMQ con CUFE inmediato en memoria. Tu usuario nunca espera a la DIAN.
- Respuestas y Errores Claros en Español
Mensajes explicativos con el campo exacto a corregir y sugerencias en el JSON.
- Multi-Tenant, Webhooks & Idempotencia
Infraestructura completa lista para escalar a cientos de empresas y millones de docs.
Una sola API para todos los comprobantes DIAN
Todos los tipos de documentos fiscales bajo una interfaz homogénea y consistente.
Emitir Factura Electrónica de Venta
Genera la factura, aplica firma digital XAdES-BES, envía a la DIAN y retorna el CUFE y URLs en una respuesta síncrona.
numbering_prefix string Prefijo del rango de numeración autorizado por la DIAN (ej. "SETT", "FE"). customer object Identificación (NIT/CC), dígito de verificación, razón social y correo del adquiriente. items array Líneas de la factura: SKU, descripción, cantidad, precio unitario y tarifa de IVA/ICA/INC. payment_means object Medio de pago (código DIAN: 10 efectivo, 48 tarjeta, 31 transferencia, etc.) y vencimiento. Emitir Nota Crédito
Anula o ajusta el valor de una factura emitida previamente, referenciando su CUFE y número original.
billing_reference object Número de la factura referenciada y su CUFE original. discrepancy_code string Concepto de corrección DIAN (ej. "1": Devolución, "2": Anulación total, "3": Descuento). items array Líneas objeto de ajuste o devolución con sus impuestos proporcionales. Emitir Documento Soporte a No Obligados
Soporta compras de bienes y servicios prestados por personas naturales que no expiden factura electrónica.
seller object Datos del proveedor no obligado (Cédula de Ciudadanía, nombre completo, ciudad). transmission_type string "individual" (por operación) o "accumulated" (acumulado semanal por proveedor). Registrar Eventos RADIAN en Facturas a Crédito
Obligatorio para deducir costos y gastos en facturas a crédito recibidas de tus proveedores.
event_code string 030 (Acuse de recibo), 032 (Recibo del bien o servicio), 033 (Aceptación expresa). invoice_cufe string CUFE oficial de la factura electrónica recibida. Factura a nombre de tus clientes sin enredos
Si desarrollas un SaaS (salud, restaurantes, e-commerce, colegios, veterinarias) o un ERP, Emytu maneja la infraestructura fiscal de cada uno de tus tenants de forma aislada e instantánea.
Crea el Tenant por API
POST /v1/tenants registra el NIT y razón social de tu cliente.
Asigna Certificado y Resolución
Sube el .p12 y la autorización DIAN sin tocar base de datos.
Emite con Tenant-Key
Envía X-Tenant-Id en tus requests y Emytu aísla firmas y consecutivos.
Calculadora de volumen para Desarrolladores
Sin costos ocultos de configuración, sin cobro por certificados de prueba y con soporte técnico dedicado por WhatsApp.
Integra en tu stack favorito
Kits de desarrollo oficiales, plantillas de código y conectores no-code listos para producción.
Node.js / TypeScript
Cliente SDK con tipado estricto, manejo automático de reintentos y soporte de streams.
npm i @emytu/sdk Python
Librería ligera compatible con Django, FastAPI y scripts de automatización contable.
pip install emytu PHP / Laravel
Service Provider y Facades para Laravel y aplicaciones PHP nativas.
composer require emytu/laravel Nodo Oficial n8n
Emite facturas y recibe eventos DIAN en tus flujos de automatización visual.
n8n-nodes-emytuColección Postman
Todos los endpoints documentados con variables de entorno y ejemplos pre-cargados.
Descargar Colección →Extensión de Navegador
Emisión en 1-clic desde cualquier panel web, CRM o punto de venta.
Chrome & EdgeDudas técnicas resueltas
¿Cómo manejan los certificados digitales de los emisores?
Puedes cargar el certificado digital .p12 de tu empresa (o el de tus clientes vía API) en nuestro almacén encriptado (AES-256-GCM). Emytu realiza la firma digital XAdES-BES en memoria al momento de emitir. También podemos gestionar la expedición del certificado digital directamente con la entidad certificadora autorizada.
¿Qué sucede si los servidores de la DIAN sufren una caída o lentitud?
Emytu implementa contingencia automática de tipo 04 (Contingencia DIAN). El documento se firma, se le asigna su CUFE y se encola de forma segura en BullMQ con reintentos exponenciales hasta que la DIAN restablezca su servicio, notificando a tu webhook cuando la validación sea confirmada.
¿Puedo probar todo el flujo antes de contratar o salir a producción?
Sí. Al solicitar tu API Key de desarrollador recibes acceso inmediato al Sandbox de Emytu. Puedes emitir documentos de prueba ficticios o conectar el Set de Pruebas oficial de habilitación DIAN sin costo.
¿Cuáles son los límites de peticiones (Rate Limiting)?
El entorno Sandbox permite hasta 60 peticiones por minuto. En producción los límites se configuran a la medida de tu volumen, soportando ráfagas de alta concurrencia (ej. Black Friday o días sin IVA) de cientos de facturas por segundo.
¿La API soporta todos los anexos técnicos vigentes de la DIAN?
Sí. Cumplimos al 100% con la Resolución 000165 de 2023, Anexo Técnico 1.9 de Facturación Electrónica, Anexo 1.3 de Documento Soporte y la reglamentación vigente de Eventos RADIAN.