Documentación
Empieza a emitir.
Una API JSON para los 6 comprobantes electrónicos del SRI. Prueba en el sandbox en un minuto y pasa a producción cuando estés listo.
Guía de inicio
- Paso 1
Crea un sandbox y emite
Sin cuenta, sin RUC y sin firma. Recibes una clave
fk_test_y el emisor demo3099999992001, que emite contra un SRI simulado. Para provocar los errores reales del SRI usa los datos mágicos (GET /v1/sandbox/datos-magicos).TerminalShell # 1. Crea un sandbox (sin cuenta, sin RUC, sin firma) export FK=$(curl -s -X POST https://api.devfact.152-53-13-73.sslip.io/v1/sandbox \ | jq -r .token) # 2. Emite contra el SRI simulado con el emisor demo curl -s -X POST https://api.devfact.152-53-13-73.sslip.io/v1/comprobantes \ -H "Authorization: Bearer $FK" \ -H "Content-Type: application/json" \ -d '{ "tipo": "factura", "items": [{ "descripcion": "Consultoría", "cantidad": 2, "precioUnitario": "20.00", "iva": "15" }], "pagos": [{ "formaPago": "transferencia" }] }' - Paso 2
Usa idempotencia y fija la versión
Envía una
Idempotency-Keypor cada operación de tu sistema: si repites la petición recibes el mismo comprobante sin gastar otro número. Tu clave queda fijada a la versión2026-11-01; puedes indicarla enFk-Version.POST /v1/comprobantesShell curl -X POST https://api.devfact.152-53-13-73.sslip.io/v1/comprobantes \ -H "Authorization: Bearer $FK" \ -H "Content-Type: application/json" \ -H "Idempotency-Key: pedido-1001" \ -H "Fk-Version: 2026-11-01" \ -d '{ "tipo": "factura", "items": [{ "descripcion": "Martillo", "cantidad": 1, "precioUnitario": "10.00", "iva": "15" }], "pagos": [{ "formaPago": "efectivo" }] }' - Paso 3
Guarda el XML autorizado
La respuesta
201traexmlAutorizado. Por la retención mínima, el XML y el RIDE se pueden descargar sólo durante la retención (24 horas por defecto); después responden410 PAYLOAD_PURGADO. La custodia de 7 años es tuya.DescargasShell # XML autorizado → FAC-001-001-000004521.xml curl -OJ https://api.devfact.152-53-13-73.sslip.io/v1/comprobantes/$ID/xml \ -H "Authorization: Bearer $FK" # RIDE en PDF → FAC-001-001-000004521.pdf curl -OJ https://api.devfact.152-53-13-73.sslip.io/v1/comprobantes/$ID/ride \ -H "Authorization: Bearer $FK" - Paso 4
Pasa a tu emisor y a producción
Con tu cuenta registras tu emisor y su punto de emisión, subes tu .p12 y emites en el ambiente de pruebas del SRI. Para producción: verificación en dos pasos activa, una clave
fk_live_y el número desde el que sigue cada tipo de comprobante.Activar producciónShell # Con tu clave fk_live_ (se crea con verificación en dos pasos) RUC=1799999990001 curl -X POST "https://api.devfact.152-53-13-73.sslip.io/v1/emisores/$RUC/activar-produccion" \ -H "Authorization: Bearer $FK_LIVE" \ -H "Content-Type: application/json" \ -d '{ "secuenciales": [{ "estab": "001", "ptoEmi": "001", "tipo": "factura", "siguiente": 4521 }], "confirmarRestantes": true }'
Conecta un agente (MCP)
Claude, ChatGPT, Cursor o cualquier cliente MCP emiten por ti con el servidor https://api.devfact.152-53-13-73.sslip.io/mcp. Agrega la URL y el cliente abre la pantalla de autorización de DevFact: eliges los permisos y, si quieres, el acceso a producción. Nunca pegues una clave API en un agente: el MCP sólo usa tokens OAuth que se renuevan solos y revocas en Claves API. En Claude: Configuración → Conectores → Agregar conector personalizado.
claude mcp add --transport http devfact https://api.devfact.152-53-13-73.sslip.io/mcp{
"mcpServers": {
"devfact": {
"url": "https://api.devfact.152-53-13-73.sslip.io/mcp"
}
}
}- preparar_comprobante
- Valida, calcula los totales en el servidor y devuelve un token de confirmación. No emite.
- emitir_comprobante
- Emite exactamente lo preparado (el cliente te pide confirmación). Idempotente.
- consultar_comprobante
- Estado, recorrido y, si el SRI lo rechazó, la causa con su solución.
- descargar_comprobante
- RIDE (PDF) o XML autorizado mientras siga retenido.
- estado_cuenta
- Tus emisores y qué le falta a cada uno.
- validar_identificacion · calcular_totales · …
- Gratis y sin cuenta en https://api.devfact.152-53-13-73.sslip.io/mcp/publico.
Referencia
- Referencia OpenAPIEl contrato completo de la API en OpenAPI 3.1, con ejemplos de los 6 comprobantes.openapi.yaml
- Catálogo de erroresCada código del SRI y del servicio con su causa y su solución. También en Markdown.GET /v1/errores
- Cambios de la APIQué cambió y cuándo. Los cambios incompatibles llegan sólo en una versión nueva.GET /v1/changelog
Lo esencial
- Autenticación
- Authorization: Bearer con tu clave. fk_test_ emite siempre en pruebas; fk_live_ emite en el ambiente del emisor.
- Montos
- Como texto decimal ("10.50"). Calculamos los totales con redondeo half-up a 2 decimales.
- Fechas
- YYYY-MM-DD. La fecha de emisión por defecto es hoy, en la hora de Ecuador.
- Estados
- 201 AUTORIZADO; 202 en proceso (el SRI no respondió a tiempo, se reintenta solo); 422 inválido o rechazado por el SRI.
- Webhooks
- Standard Webhooks: verifica webhook-signature con tu secreto whsec_ y deduplica por webhook-id.
- Errores
- { error: { code, message, details, requestId, source, docUrl, solucion } } con un code estable.
- Límites
- 300 peticiones por minuto por clave (429 con Retry-After) y 2 MiB por comprobante.