Facturación electrónica para desarrolladores
API REST + SDK TypeScript oficial para integrar facturación electrónica SRI Ecuador en tu app. Sandbox sin tarjeta, webhooks firmados, Postman, snippets en 6 lenguajes.
Acceso rápido
Los 4 destinos principales para developers integrando Factuplan.
-
Docs API REST
Referencia técnica completa: endpoints, payloads, errores, catálogos del SRI.
Abrir docs -
SDK Node/TypeScript
Paquete oficial factuplan en npm. Tipado completo, autocompletado, manejo de errores.
Ver SDK -
Postman Collection
Todos los endpoints con ejemplos listos. Importas, configuras variables y empiezas.
Descargar JSON -
Landing comercial API
Comparativa con otras APIs, casos de uso y CTA para crear API key.
Ver landing
Facturación electrónica SRI para desarrolladores: emite tu primera factura en 6 lenguajes
Mismo flujo, distinto stack. Snippet oficial para cada uno.
import { Factuplan } from "factuplan"
const factuplan = new Factuplan(process.env.FACTUPLAN_API_KEY!, {
ruc: "0993378150001",
})
const factura = await factuplan.invoices.create({
customer: { identificationType: "RUC", identification: "0950194407001", legalName: "Cliente" },
items: [{ description: "Servicio", quantity: 1, unitPrice: 500, taxType: "IVA_RATE", tax: 15 }],
sendEmail: true,
})
console.log(factura.accessKey) // 49 dígitos import requests, os
r = requests.post(
"https://api.factuplan.com.ec/v1/developer/invoices",
headers={"X-API-Key": os.environ["FACTUPLAN_API_KEY"], "x-taxpayer-ruc": "0993378150001"},
json={
"customer": {"identificationType": "RUC", "identification": "0950194407001", "legalName": "Cliente"},
"items": [{"description": "Servicio", "quantity": 1, "unitPrice": 500, "taxType": "IVA_RATE", "tax": 15}],
"sendEmail": True,
},
)
print(r.json()["data"]["accessKey"]) <?php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.factuplan.com.ec']);
$response = $client->post('/v1/developer/invoices', [
'headers' => ['X-API-Key' => getenv('FACTUPLAN_API_KEY'), 'x-taxpayer-ruc' => '0993378150001'],
'json' => [
'customer' => ['identificationType' => 'RUC', 'identification' => '0950194407001', 'legalName' => 'Cliente'],
'items' => [['description' => 'Servicio', 'quantity' => 1, 'unitPrice' => 500, 'taxType' => 'IVA_RATE', 'tax' => 15]],
'sendEmail' => true,
],
]);
echo json_decode($response->getBody(), true)['data']['accessKey']; package main
import (
"bytes"
"encoding/json"
"net/http"
"os"
)
func main() {
payload, _ := json.Marshal(map[string]interface{}{
"customer": map[string]string{"identificationType": "RUC", "identification": "0950194407001", "legalName": "Cliente"},
"items": []map[string]interface{}{{"description": "Servicio", "quantity": 1, "unitPrice": 500, "taxType": "IVA_RATE", "tax": 15}},
"sendEmail": true,
})
req, _ := http.NewRequest("POST", "https://api.factuplan.com.ec/v1/developer/invoices", bytes.NewBuffer(payload))
req.Header.Set("X-API-Key", os.Getenv("FACTUPLAN_API_KEY"))
req.Header.Set("x-taxpayer-ruc", "0993378150001")
http.DefaultClient.Do(req)
} require "net/http"
require "json"
require "uri"
uri = URI("https://api.factuplan.com.ec/v1/developer/invoices")
req = Net::HTTP::Post.new(uri, {
"X-API-Key" => ENV["FACTUPLAN_API_KEY"],
"x-taxpayer-ruc" => "0993378150001",
"Content-Type" => "application/json",
})
req.body = {
customer: { identificationType: "RUC", identification: "0950194407001", legalName: "Cliente" },
items: [{ description: "Servicio", quantity: 1, unitPrice: 500, taxType: "IVA_RATE", tax: 15 }],
sendEmail: true,
}.to_json
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
puts JSON.parse(res.body).dig("data", "accessKey") curl https://api.factuplan.com.ec/v1/developer/invoices \
-H "X-API-Key: $FACTUPLAN_API_KEY" \
-H "x-taxpayer-ruc: 0993378150001" \
-H "Content-Type: application/json" \
-d '{
"customer": {"identificationType": "RUC", "identification": "0950194407001", "legalName": "Cliente"},
"items": [{"description": "Servicio", "quantity": 1, "unitPrice": 500, "taxType": "IVA_RATE", "tax": 15}],
"sendEmail": true
}' Para flujos avanzados (notas de crédito, guías de remisión, retenciones, webhooks), abre la referencia completa.
Quickstart en 6 pasos
De cero a primera factura autorizada por el SRI en menos de 10 minutos.
-
Crea cuenta en app.factuplan.com.ec (sin tarjeta, 2 minutos)
-
Anda a Developer → Create API key. Copia el ak_test_* (solo se muestra una vez)
-
Guarda la key en variable de entorno FACTUPLAN_API_KEY
-
Instala el SDK: npm install factuplan (Node/TypeScript) o usa la API REST directa
-
Emite tu primera factura ficticia con factuplan.invoices.create(...)
-
Verifica el estado en el dashboard. Cuando estés listo, intercambia ak_test_* por ak_live_*
Casos de uso por industria
Productos que ya integran Factuplan API en producción.
-
E-commerce / marketplaces
Shopify, WooCommerce, Tienda Nube, Magento, plataformas custom. Emisión automática al confirmar pago.
-
POS / retail
Sistemas de caja con impresión automática del RIDE y QR para el cliente al momento del cobro.
-
ERP / Backoffice
SAP, Odoo, ERPNext, Defontana, sistemas propios. Sincronización vía API + webhooks.
-
SaaS vertical multi-tenant
Plataforma para hoteles, clínicas, talleres, gimnasios. Cada tenant emite con su propio RUC.
-
FoodTech / delivery
Apps de pedidos, dark kitchens, marketplace de restaurantes. Factura al usuario final desde el flujo de pago.
-
Pasarelas de pago
Procesadores que disparan factura al confirmar transacción. Webhook → API → autorización en segundos.
Changelog reciente
Cambios técnicos del producto que afectan integraciones.
Mayo 2026
- 🚀 Landing comercial /api y hub /desarrolladores publicados
- 📦 SDK TypeScript v0.8.0 con webhooks tipados y soporte de Modo B
- 🔧 Postman Collection actualizada: 26 endpoints en 4 secciones (emisión Modo A/B/C, comprobantes, catálogos, certificado) con variables pre-configuradas
Enero 2026
- ⚡ Transmisión inmediata al SRI activada por defecto (Resolución NAC-DGERCGC25-00000017)
- 💰 Nuevas tarifas ICE 2026 cargadas automáticamente en el catálogo
- 🔐 Webhooks firmados con HMAC SHA-256 con timestamp anti-replay
Noviembre 2025
- 📄 Ficha Técnica del SRI v2.32 implementada (catálogos actualizados)
- 🆕 Endpoint de búsqueda masiva de comprobantes recibidos en el SRI
- 🐛 Fix: validación local de RUC con tercer dígito 7 y 8 (rechazo correcto)
Soporte y comunidad
Acceso directo cuando algo se traba o necesitas un puntero rápido.
-
Soporte por WhatsApp
Hablas con un developer del equipo de Factuplan. Sin colas de ticket. Respuesta típica en menos de 1 hora hábil.
Contáctanos -
Tutoriales del blog
Guías paso a paso para Node.js, PHP, SDK TypeScript, integración WooCommerce y patrones avanzados.
Ver blog técnico -
Centro de ayuda
Documentación general, casos comunes, troubleshooting. Útil para la operación día a día y onboarding.
Centro de ayuda
¿Buscas algo más específico?
Otras páginas relevantes para developers en Factuplan.
Landing comercial /api
Propuesta de valor, comparativas, casos de uso. Para evaluar si Factuplan API encaja con tu proyecto.
Ver landingAlternativa a Contifico API
Comparativa técnica detallada entre Factuplan API y la API de Contifico, con migration steps.
Ver comparativaDeep-dive del SDK TypeScript
Por qué TypeScript, type safety, manejo de errores tipados, patrones de uso en Next.js y NestJS.
Leer post¿Cómo arranco a integrar Factuplan en mi app?
Tres pasos: 1) Crea cuenta gratis en app.factuplan.com.ec (sin tarjeta de crédito); 2) En el dashboard, anda a Developer → Create API key y copia la clave ak_test_* (solo se muestra una vez); 3) Instala el SDK con npm install factuplan (si usas Node/TypeScript) o consume la API REST directamente. La primera factura ficticia la emites en menos de 10 minutos en sandbox. Cuando esté funcionando, cambias la API key por una de producción (ak_live_*) sin tocar tu código.
¿Qué diferencia hay entre /api, /desarrolladores y /docs/api?
Las tres páginas tienen objetivos distintos: /api es la landing comercial — explica el valor, casos de uso, comparativa con otras APIs y tiene CTA para crear API key; está pensada para developers que están evaluando. /desarrolladores (esta página) es el hub que centraliza recursos para developers ya activos: docs, SDK, Postman, snippets, changelog, comunidad. /docs/api es la referencia técnica detallada de cada endpoint: payloads completos, errores, schemas. Las tres están cross-linked, pero el flujo natural es /api (decisión) → /desarrolladores (recursos) → /docs/api (referencia día a día).
¿El SDK funciona en otros lenguajes además de TypeScript?
El SDK oficial actual es para Node.js/TypeScript (paquete factuplan en npm). Para otros lenguajes (Python, PHP, Go, Ruby, .NET, etc.) la integración se hace contra la API REST directa, que está completamente documentada en /docs/api con snippets oficiales en cada lenguaje. La API REST es estándar HTTPS + JSON con sobre data/meta, así que cualquier cliente HTTP serve. Si tu proyecto justifica un SDK oficial en otro lenguaje, puedes solicitarlo en /contacto. SDKs en Python y PHP están en evaluación según demanda de la comunidad.
¿Hay un sandbox completo o solo respuestas simuladas?
Sandbox completo. Las API keys con prefijo ak_test_* emiten comprobantes ficticios que pasan por el flujo real de Factuplan (validación de datos, firma simulada, autorización simulada del SRI, generación de RIDE PDF, dispatch de webhooks). No se envían al SRI real, lo que permite probar sin consumir tu cuota de producción. Los comprobantes de sandbox se eliminan automáticamente cada hora para mantener el ambiente limpio. Los webhooks de sandbox también disparan, así puedes probar el flujo end-to-end sin tarjeta de crédito.
¿Cómo manejo webhooks en producción?
Configura tu endpoint HTTPS en Dashboard → Developer → Webhooks. Copia el webhook secret. Tu endpoint debe: 1) Leer el body raw (sin parsear antes); 2) Verificar el header x-factuplan-signature con HMAC SHA-256 del body usando tu secret; 3) Procesar el evento (idealmente async/encolado en una queue); 4) Responder 200 OK rápido (< 5 segundos). Si tu endpoint falla o tarda, Factuplan reintenta con backoff exponencial hasta 24 horas. Eventos principales: invoice.authorized, invoice.rejected, credit_note.authorized, waybill.authorized, withholding.authorized.
¿Puedo contribuir al SDK o reportar bugs?
Sí. El SDK Node/TypeScript es open source y se desarrolla públicamente. El repositorio está disponible en GitHub bajo el nombre factuplan/factuplan-node (link próximamente publicado aquí). Aceptamos issues, pull requests y feedback de la comunidad. Para reportar bugs de la API REST o del dashboard, contáctanos por WhatsApp con el requestId del response (viene en el campo meta.requestId): así nuestro equipo puede tracear el error en producción y resolverlo rápido. Para feature requests, también /contacto o directamente en GitHub.
¿Cómo se ve el roadmap del producto?
El roadmap público se mantiene en /desarrolladores/roadmap (próximamente). Mientras tanto, el changelog reciente de cambios técnicos lo ves en esta misma página. Próximos hitos confirmados: SDK Python (Q3 2026), CLI oficial para emisión desde terminal (Q3 2026), endpoints de reportería avanzada con agregaciones (Q4 2026), webhooks bidireccionales para sincronizar catálogos desde tu ERP (Q4 2026). Si necesitas algo específico que no aparece en el roadmap, ábrelo en /contacto: el equipo prioriza por demanda real de la comunidad developer.
Empieza a facturar electrónicamente hoy
1 mes gratis al comprar tu firma electrónica con FirmaOK. Sin tarjeta de crédito.
- Empresas activas
- +1.000
- Calificación clientes
- 4.9/5
- Tiempo de onboarding
- <1 día
- Disponibilidad SRI
- 24/7
- Configuración en minutos
- Cancela cuando quieras
- Soporte en español ecuatoriano