Integración · Punto de venta

API de facturación electrónica para sistemas POS

Emite el comprobante de cada venta sin frenar la caja, incluso con alto volumen.

EVENTOS EN TU POS→ comprobante

Venta cerrada · Caja 2 Factura

Devolución Nota de crédito

Cierre de caja Conciliación

Para quién es esta página

Proveedores de software de punto de venta y equipos técnicos que mantienen un POS propio.

¿Tienes un restaurante, cafetería o gimnasio?

El reto

Lo que tendrás que resolver

01

El cliente espera en la caja: la facturación no puede añadir segundos a cada venta.

02

Mucho volumen en horas pico, con varias cajas vendiendo a la vez.

03

Cada caja suele tener su propio punto de emisión y su secuencial.

04

La conexión del local puede ser inestable, y el SRI puede demorar.

Cómo se integra

Cómo se integra con tu POS

Tu software no necesita generar XML, firmarlo ni hablar con los servicios del SRI.

  1. 01 Conecta Genera tu API key y úsala solo desde tu backend.
  2. 02 Engánchate al evento correcto Cuando ocurra en tu sistema, envía los datos a Flashpi.
  3. 03 Guarda el resultado Registra la clave_acceso y el estado en tu documento.
  4. 04 Mantén el estado al día Recibe webhooks o consulta el comprobante cuando lo necesites.

En qué momento emitir cada comprobante

Evento en tu POSComprobante
Venta cerradaFactura
DevoluciónNota de crédito
Cierre de cajaConciliación de comprobantes pendientes

Cola local para no bloquear la venta

La clave de un POS es cobrar primero y facturar sin bloquear. Guarda cada venta en una cola local y deja que un proceso en segundo plano la envíe a Flashpi.

sqlcomprobantes_pendientes
CREATE TABLE comprobantes_pendientes (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  venta_id TEXT NOT NULL UNIQUE,
  payload TEXT NOT NULL,
  intentos INTEGER NOT NULL DEFAULT 0,
  estado TEXT NOT NULL DEFAULT 'PENDIENTE',
  clave_acceso TEXT
);

Y un proceso que la vacía:

jsworker.mjs
// worker.mjs: procesa la cola de comprobantes pendientes del POS
const BASE_URL = "https://api.flashpi.ec/v1";
const API_KEY = process.env.FLASHPI_API_KEY;
const MAX_INTENTOS = 8;

async function emitir(pendiente) {
  const res = await fetch(`${BASE_URL}/facturas`, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${API_KEY}`,
      "Content-Type": "application/json",
    },
    body: pendiente.payload,
  });
  const data = await res.json();
  if (!res.ok) throw new Error(`Flashpi ${res.status}`);
  return data;
}

// Ejecútala cada pocos segundos con tu planificador de tareas
export async function procesarCola(db) {
  const pendientes = await db.pendientes(20); // tu capa de acceso a datos

  for (const p of pendientes) {
    try {
      // Si un intento anterior pudo llegar al SRI y perdiste la respuesta,
      // consulta el estado antes de reenviar para no duplicar el comprobante.
      const r = await emitir(p);
      await db.marcarEmitido(p.id, r.clave_acceso, r.estado);
    } catch (err) {
      const intentos = p.intentos + 1;
      const estado = intentos >= MAX_INTENTOS ? "REVISAR" : "PENDIENTE";
      await db.registrarFallo(p.id, intentos, estado);
    }
  }
}

Respuesta esperada al emitir:

json200 OK · comprobante autorizado
{
  "estado": "AUTORIZADO",
  "clave_acceso": "(49 dígitos)",
  "numero_autorizacion": "(número de autorización del SRI)",
  "fecha_autorizacion": "(fecha y hora)"
}
Buenas prácticas

Buenas prácticas para tu POS

  1. 1 No bloquees la venta Cobra, guarda en la cola y entrega el comprobante cuando esté autorizado.
  2. 2 Un punto de emisión por caja Con su propio secuencial, para no pelear por números entre cajas.
  3. 3 Reintenta con espera creciente Y marca para revisión los que fallen demasiadas veces.
  4. 4 Imprime o envía el comprobante Al cliente apenas esté autorizado.
  5. 5 Prepara el consumidor final Ten un flujo rápido para ventas sin datos del cliente.
Incluido

Lo que Flashpi te da

  • API REST con JSON Versionada en /v1 y descrita con OpenAPI 3.1. Ver referencia
  • Ambiente de pruebas del SRI Valida tu integración antes de producción. Cómo probarlo
  • Colección de Postman Para explorar los endpoints.
  • SDKs open source en GitHub
  • Webhooks Para recibir el estado de cada comprobante.
  • Ejemplos por lenguaje y soporte técnico
  • Estado del servicio en tiempo real status.flashpi.ec
Preguntas frecuentes

Preguntas sobre la integración con POS

¿Qué pasa si se cae internet en el local?

Tu POS sigue vendiendo y guarda los comprobantes en la cola local. Cuando vuelve la conexión, se envían en orden.

¿Se puede facturar en horas pico sin que se haga lenta la caja?

Sí, si desacoplas la venta de la emisión con una cola, como en el ejemplo de arriba.

¿Cómo evito duplicar un comprobante si perdí la respuesta?

Antes de reenviar, consulta el estado por clave de acceso. Si el comprobante ya existe, no lo vuelvas a enviar.

¿Funciona con varias cajas?

Sí. Cada caja usa su punto de emisión y envía a la misma API.

Empieza hoy

Integra tu POS con el SRI

Prueba la API en el ambiente de pruebas y cuéntanos tu caso. Te ayudamos a planear la integración.