Inicio rápido
Flashpi es una API REST para los comprobantes electrónicos de Ecuador. Envías JSON simple con nombres de campo en inglés; Flashpi numera el comprobante, arma el XML del SRI y lo valida contra el esquema oficial, lo firma, lo envía al SRI, sigue su autorización, genera el RIDE (el PDF imprimible) y se lo envía por correo a tu cliente. Ese envío por correo se está habilitando: mientras tanto, entregas tú el RIDE y el XML (consulta RIDE y correo).
En esta guía creas una API key de prueba, emites una factura con el emisor demo compartido en el ambiente de pruebas del SRI, esperas la respuesta del SRI en la misma solicitud y descargas el RIDE. Todavía no necesitas un certificado de firma propio.
Antes de empezar
Sección titulada «Antes de empezar»- Una cuenta de Flashpi. Regístrate en la consola con Google o con tu correo y una contraseña. Verifica el correo con el enlace que te enviamos cuando haga falta (Gmail y Google Workspace ya quedan verificados): el sandbox se activa cuando el propietario de la cuenta verifica su correo. Cuando inicias sesión por primera vez, la consola te pide, como propietario de la cuenta, activar la verificación en dos pasos con una app de autenticación antes de cualquier otra cosa.
curl(o cualquier cliente HTTP) en un servidor o en tu computadora. La API está enhttps://api.flashpi.com.ec.
Emite tu primera factura
Sección titulada «Emite tu primera factura»-
Crea una API key de prueba. En la consola, elige Pruebas en el selector de ambiente (en el menú de la izquierda, debajo de tu cuenta; en el teléfono, arriba a la derecha). Abre API keys y crea una llave con alcance Toda la cuenta (
account) y acceso de lectura y escritura: el diálogo dice Crear API key de pruebas. Cópiala enseguida: Flashpi solo guarda un hash y la muestra una sola vez. Guárdala en una variable de entorno:Ventana de terminal export FLASHPI_API_KEY="fp_test_..."Las llaves de prueba (
fp_test_) emiten en el ambiente de pruebas del SRI, donde los comprobantes no tienen efecto tributario. Consulta Autenticación y API keys. -
Copia el ID del emisor demo. El Resumen de la consola muestra el emisor demo (Signia Digital S.A., la empresa que opera Flashpi), su ID, su establecimiento y punto de emisión (
001y001) y la cuota de prueba del día (50 comprobantes por cuenta y por día). También aparece en Emisores, marcado como emisor demo.GET /v1/issuerssolo lista tus propios emisores, así que toma el ID de la consola. Consulta Sandbox y emisor demo. -
Envía la factura en modo síncrono. Reemplaza
<demo issuer id>por el ID y<your email>por tu propio correo, para que te llegue a ti el correo que recibiría un cliente real cuando el envío por correo esté habilitado. Conoptions.waitForAuthorization, la solicitud espera la respuesta del SRI (hasta 15 segundos por defecto).Ventana de terminal curl https://api.flashpi.com.ec/v1/invoices \-H "Authorization: Bearer $FLASHPI_API_KEY" \-H "Idempotency-Key: $(uuidgen)" \-H "Content-Type: application/json" \-d '{"issuerId": "<demo issuer id>","establishment": "001","emissionPoint": "001","customer": {"idType": "ruc","id": "1790000000001","name": "Supermercados La Pradera S.A.","email": "<your email>"},"items": [{"code": "SRV-001","description": "Monthly accounting services","quantity": "1","unitPrice": "450.00","taxes": [{ "type": "vat", "rate": "15" }]}],"payments": [{ "method": "other_financial_system", "amount": "517.50" }],"options": { "waitForAuthorization": true }}'Los montos y las cantidades son cadenas decimales. Tú envías el precio y la tarifa del IVA; Flashpi calcula el subtotal, el IVA (
67.50) y el total (517.50). Los pagos deben sumar ese total. LaIdempotency-Keyhace que la solicitud se pueda reintentar sin riesgo (consulta Idempotencia). -
Lee la respuesta. Cuando el SRI responde dentro de la espera, la respuesta es
200 OKcon el comprobante en su estado final, aquíauthorized:{"id": "01a14116-1c50-73e7-8aab-349c93e541da","type": "invoice","environment": "test","status": "authorized","issuerId": "01a0f7fa-bd80-7d58-8d62-73a4adc597cb","establishment": "001","emissionPoint": "001","sequential": 4821,"number": "001-001-000004821","accessKey": "1510202601099341137200110010010000048217014625315","issueDate": "2026-10-15","xmlVersion": "2.1.0","counterparty": { "id": "1790000000001", "name": "Supermercados La Pradera S.A." },"totals": {"subtotal": "450.00","discount": "0.00","taxes": [{ "type": "vat", "rate": "15", "taxableBase": "450.00", "amount": "67.50" }],"tip": "0.00","total": "517.50"},"authorization": {"number": "1510202601099341137200110010010000048217014625315","authorizedAt": "2026-10-15T19:42:13.000Z"},"ride": { "status": "pending", "template": null, "generatedAt": null },"email": { "requested": true, "status": "queued", "deliveries": [], "warnings": [] },"sriMessages": [{"code": "test_environment","message": "The document was processed in the SRI test environment and has no tax validity.","severity": "warning"}],"failure": null,"voidedAt": null,"createdAt": "2026-10-15T19:42:10.512Z","updatedAt": "2026-10-15T19:42:13.204Z"}En el ambiente de pruebas, el SRI agrega la advertencia
test_environmenta todo comprobante que autoriza; no cambia la autorización. El encabezadoLocationapunta al comprobante (/v1/documents/{id}), yx-request-ididentifica la solicitud si alguna vez escribes a soporte.Si el SRI tarda más que la espera, la respuesta es
202 Acceptedcon el comprobante enpending_sri. No se pierde nada: Flashpi sigue trabajando y el comprobante termina por su cuenta. Vuelve a leerlo conGET /v1/documents/{id}, o recibe los webhooksinvoice.authorizedeinvoice.rejected. Un comprobanterejectedtrae los motivos del SRI ensriMessages. -
Descarga el RIDE. Flashpi genera el RIDE justo después de la autorización, así que normalmente tarda unos segundos más que la autorización:
Ventana de terminal curl https://api.flashpi.com.ec/v1/documents/01a14116-1c50-73e7-8aab-349c93e541da/pdf \-H "Authorization: Bearer $FLASHPI_API_KEY" \-o factura-001-001-000004821.pdfMientras
ride.statussiga enpending, esto responde409con el códigoride_not_available: espera un momento y vuelve a intentarlo, o espera el webhookdocument.ride.generated.GET /v1/documents/{id}/xmldevuelve el XML autorizado.
Qué acaba de pasar
Sección titulada «Qué acaba de pasar»- Flashpi validó la solicitud, asignó el siguiente secuencial de la numeración del emisor demo (la comparten todas las cuentas del sandbox, así que no esperes números consecutivos), generó la clave de acceso de 49 dígitos, armó el XML (factura 2.1.0) y lo validó contra el esquema del SRI.
- Firmó el XML con el certificado de prueba del emisor demo, lo envió al ambiente de pruebas del SRI y consultó su autorización. La solicitud esperó esa respuesta por el modo síncrono.
- Tras la autorización, generó el RIDE con la plantilla de tu cuenta y dejó en cola el correo con el RIDE y el XML para
customer.email.
Siguientes pasos
Sección titulada «Siguientes pasos»- Sigue los comprobantes con webhooks en lugar de esperar en la solicitud: Webhooks y Modo síncrono y asíncrono.
- Emite otros comprobantes: notas de crédito, comprobantes de retención, guías de remisión y más, todo en Emitir comprobantes.
- Usa tu propio RUC: crea tu emisor desde su certificado de firma (
.p12): Flashpi lee el RUC y el titular, tú revisas y completas su perfil tributario, y el mismo certificado sirve para pruebas y producción. Tus propios emisores también funcionan con llaves de prueba, sin la cuota diaria del emisor demo. - Pasa a producción: las llaves de producción (
fp_live_) emiten comprobantes con efecto tributario en el ambiente de producción del SRI. Un propietario de la cuenta las crea en la consola, con verificación en dos pasos, cuando la cuenta ya tiene un emisor propio con un certificado aceptado. Un certificado subido con el alta desde el certificado ya firma en producción; uno subido a un emisor con una llave solo firma los comprobantes del ambiente de esa llave (Certificados). Las solicitudes son las mismas: solo cambian la llave y elissuerId.