Dashboard

Resumen automatizado de ingresos

Desconectado
EN VIVO
Sincronizando Tasas...
Período:
–
HOY
Bs. 0,00
Recibidos Hoy
7 DÍAS
Bs. 0,00
Esta Semana
ESTE MES
Bs. 0,00
Facturación Mensual
AUDITADO
0
Total Transacciones
Acciones Rápidas:

Tendencia de Ingresos

Recepciones Recientes En Vivo

Cargando...
Total Auditado 0
BASE DE DATOS
Monto Conciliado Bs. 0,00
CONFIRMADO
En Revisión 0
PENDIENTES
Efectividad 100%
TRAZABILIDAD

Libro Mayor de Pagos En Vivo

Mostrando todos los registros

FECHA Y HORA NRO. REFERENCIA / USER ORIGEN / MÉTODO MONTO RECIBIDO ESTADO ACCIONES
Métricas Consolidadas (Multimoneda)
TOTAL RECAUDADO
Bs. 0,00
Volumen Total Conciliado
100% AUDITADO
0
Procesados Exitosamente
PENDIENTES
0
Requieren Revisión
INCIDENCIAS
0
Anulados / Erróneos

Crecimiento del Monto Acumulado

Evolución continua de ingresos netos
Tiempo Real

Distribución por Canal de Pago

Participación de volumen por cada canal
Canales
Pago Móvil 0 ops (0%)
Binance P2P 0 ops (0%)
Zinli / Otros 0 ops (0%)
Ticket Promedio
Bs. 0,00
Monto medio por operación verificada
Mayor Operación
Bs. 0,00
Cobro individual más alto registrado
Última Conciliación
Sin registros
Fecha del último pago verificado

Nodo de Vinculación Móvil (Android) Enlace Cifrado Activo

Sincroniza tu smartphone Android para capturar y conciliar pagos bancarios en tiempo real desde notificaciones Push o SMS oficial.

Identificador de Sesión (Tenant) Cargando...
Servidor de Destino Cargando...
Seguridad de Transmisión AES-256 + Token Bearer

Código de Enlace Rápido

Escaneo sin contraseñas para la app móvil
Instantáneo
Listo para Vincular

Presiona el botón para generar el código QR firmado con tu identificador de cliente y token de autenticación seguro.

Proceso de Sincronización

Guía paso a paso y optimización del lector
3 Pasos
1
Abrir PagoFino en tu Smartphone

Abre la app en tu teléfono Android. Si utilizas MacroDroid, descarga la macro autogenerada en el apartado de Integración.

2
Escanear el Código QR de Conexión

En el menú de la aplicación, selecciona "Escanear QR de Conexión" y enfoca el código QR generado en esta pantalla.

3
Habilitar Permiso de Notificaciones

Concede el permiso "Acceso a Notificaciones" en los ajustes de Android para que el lector detecte en vivo los pagos de BDV, Banesco, Mercantil, BNC o SMS.

Optimización de Batería en Android
Evita que Android cierre el lector en segundo plano
Xiaomi / MIUI: Ajustes → Apps → Inicio Automático (Activar) → Ahorro de batería: Sin Restricciones.
Samsung: Batería → Límites de uso en segundo plano → Añadir a Apps nunca suspendidas.
Motorola / Pixel: Mantener presionado ícono → Info de app → Batería → Sin Restricciones.
Cifrado de Extremo a Extremo
TLS 1.3 / SSL
Canal autenticado con token Bearer seguro
Modos de Captura Soportados
Push + SMS
Apps Bancarias oficiales y números bancarios SMS
Velocidad de Conciliación
< 2.0 Segundos
Desde la notificación del banco hasta el dashboard

Central de Integración Automática Gateway Activo

Conecta tus canales bancarios, exchanges y billeteras digitales para capturar y conciliar cobros en tiempo real.

POST Configura Supabase en Ajustes
Autenticación Bearer protegida

Macro Notificaciones Push (Apps Bancarias)

Captura pagos móviles y transferencias al instante desde la notificación de tu banco (BDV, Banesco, Mercantil, BNC) sin requerir SMS.

Archivo .macro autogenerado

Macro Mensajería SMS (Provincial, Bancamiga)

Extrae referencias y montos directamente desde los SMS oficiales emitidos por los bancos (77107, 5001, etc.).

Archivo .macro autogenerado

Configuración y Estructura en MacroDroid

1
Crear la Macro y las Variables Locales
Crea las variables antes de las acciones para que aparezcan en los menús desplegables

1. Abre MacroDroid y toca en Añadir Macro. En el nombre escribe: PagoFino BDV.

2. Ve a la sección inferior de Variables locales y toca el botón +:

var_monto Tipo: Cadena (String)
var_referencia Tipo: Cadena (String)
2
Configurar el Disparador (Panel Rojo)
Define qué evento activará la lectura del pago en tu teléfono
Para Apps Bancarias (Push)
  1. Toca + en el panel rojo de Disparadores.
  2. Ve a Eventos de dispositivo → Notificación → Notificación recibida.
  3. Selecciona la app de tu banco (ej: BDV, Banesco, Mercantil).
  4. En "Coincidencia de texto", déjalo en Cualquiera.
Para Pagos por SMS (Provincial/Mercantil)
  1. Toca + en el panel rojo de Disparadores.
  2. Ve a Eventos de llamadas/SMS → SMS Recibido.
  3. Selecciona Seleccionar Número(s) y escribe el número emisor (ej: 77107 o 5001).
  4. En "Contenido del SMS", déjalo en Cualquiera.
3
Configurar las Acciones de Extracción (Panel Azul)
Expresiones regulares de alta precisión para extraer monto y referencia
Acción 1: Extraer Monto Guardar en: var_monto
[0-9][0-9.]*,[0-9]{2}|(?<=Bs\. )[0-9]+\.[0-9]+|(?<=Bs )[0-9]+\.[0-9]+
*Compatible con BNC, BDV, Banesco, Mercantil y Bancamiga, filtrando comas y decimales automáticamente.
Acción 2: Extraer Referencia Guardar en: var_referencia
(?i)(?<=Ref )[0-9]+|(?<=Ref: )[0-9]+|(?<=Ref:)[0-9]+|(?<=Ref\. )[0-9]+|(?<=operaci[oó]n )[0-9]+|(?<=referencia )[0-9]+|(?<=Ref)[0-9]+|(?<=desde el )[0-9]+(?!.*(?:Ref|operaci[oó]n|referencia))
*Detecta cualquier variante (Ref, Ref:, Ref., Operación, Referencia o Teléfono emisor Bancamiga).
4
Acción HTTP POST (Envío Directo a Supabase)
Petición web que registra la transacción en tu base de datos

Toca + en el panel azul → Aplicaciones → Petición HTTP:

  • Método: POST
  • URL: Configura Supabase en Ajustes
  • Pestaña Cabeceras: Agrega apikey y Authorization con el token Bearer.
  • Pestaña Cuerpo: Tipo Personalizado (JSON). Pega este payload:
Payload JSON (MacroDroid)
{
  "referencia": "[system_time]_[lv=var_referencia]",
  "monto": "[lv=var_monto]",
  "moneda": "Bs"
}
✓
Guardar y Activar Macro
En la esquina inferior derecha de MacroDroid toca el botón de Check (✔️). ¡Tu integración estará activa y escuchando pagos en vivo!

Automatización Cripto Serverless (Binance USDT)

Ejecución en los servidores de Google Apps Script sin necesidad de servidores ni descargas.
Abrir Google Apps Script
1
Nuevo Proyecto en Google Apps Script
Inicia sesión en Gmail con la cuenta donde recibes los correos de confirmación de Binance
Ve a script.google.com y haz clic en el botón "Nuevo Proyecto".
2
Pega el Script Oficial con tus Credenciales Inyectadas
Tus credenciales de Supabase se vinculan automáticamente en este bloque de código
BinanceListener.js (Google Apps Script)
function checkBinanceEmails() {
  var supabaseUrl = "URL_DE_TU_SUPABASE/rest/v1/pagos";
  var supabaseKey = "TU_API_KEY";

  // Lista de remitentes autorizados de Binance
  var ALLOWED_SENDERS = [
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]",
    "[email protected]"
  ];

  for (var loop = 0; loop < 6; loop++) {
    var threads = GmailApp.search(
      'subject:"[Binance] Payment Receive Successful" is:unread newer_than:1d'
    );

    for (var i = 0; i < threads.length; i++) {
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
        var msg = messages[j];
        if (!msg.isUnread()) continue;

        var senderRaw = msg.getFrom();
        var emailMatch = senderRaw.match(/<([^>]+)>/);
        var senderEmail = emailMatch ? emailMatch[1].toLowerCase() : senderRaw.toLowerCase().trim();

        var isBinanceOfficial = ALLOWED_SENDERS.indexOf(senderEmail) !== -1 ||
                                /^do-?not-?reply@([a-z0-9-]+\.)*binance\.com$/i.test(senderEmail);

        if (!isBinanceOfficial) {
          msg.markRead();
          continue;
        }

        var body = msg.getPlainBody();
        if (
          body.indexOf("You received an incoming transfer") === -1 ||
          body.indexOf("This is an automated message") === -1
        ) {
          msg.markRead();
          continue;
        }

        var amountMatch = body.match(/Amount:\s*\n?\s*([0-9.,]+)\s*USDT/i);
        var monto = amountMatch ? parseFloat(amountMatch[1].replace(/,/g, "")) : 0;

        var fromMatch = body.match(/From:\s*\n?\s*(.+)/i);
        var remitente = fromMatch ? fromMatch[1].replace(/[\r\n*_]/g, "").trim() : "BIN-" + msg.getId().substring(0, 8).toUpperCase();

        var timeMatch = body.match(/Time:\s*\n?\s*(\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2})/i);
        var binanceTime = timeMatch ? timeMatch[1].replace(/[\s:-]/g, "") : String(Math.floor(msg.getDate().getTime() / 1000));

        var referencia = binanceTime + "_" + remitente;
        if (monto <= 0) { msg.markRead(); continue; }

        var payload = {
          cliente_id: "TU_USUARIO",
          referencia: referencia,
          monto: monto,
          moneda: "USDT",
          estado: "pending"
        };

        try {
          var response = UrlFetchApp.fetch(supabaseUrl, {
            method: "post",
            headers: {
              apikey: supabaseKey,
              Authorization: "Bearer " + supabaseKey,
              "Content-Type": "application/json",
              Prefer: "resolution=ignore-duplicates"
            },
            payload: JSON.stringify(payload),
            muteHttpExceptions: true
          });
          var code = response.getResponseCode();
          if (code >= 200 && code < 300) { msg.markRead(); }
          else if (code === 409) { msg.markRead(); }
        } catch (e) {}
      }
    }
    if (loop < 5) Utilities.sleep(10000);
  }
}
3
Crear el Disparador Automático
Configura la ejecución cada 1 minuto
1. Guarda el proyecto (icono de disquete).
2. En el menú izquierdo, haz clic en el ícono de reloj (Disparadores).
3. Toca en Añadir disparador → Selecciona la función checkBinanceEmails → Fuente: Basado en el tiempo → Tipo: Minutos → Cada minuto.
4. Guarda y acepta los permisos de Google. ¡Listo! Cada pago de Binance USDT se registrará automáticamente.

Integración Billetera Digital Zinli (Dólares USD)

Captura automática de pagos recibidos en tu correo oficial de Zinli ("¡Recibiste un Zinli!").
Abrir Google Apps Script
1
Nuevo Proyecto en Google Apps Script
Inicia sesión en Gmail con la cuenta asociada a tus cobros de Zinli
Ve a script.google.com y crea un "Nuevo Proyecto".
2
Script de Integración para Zinli
Pega el código con tus credenciales preconfiguradas
ZinliListener.js (Google Apps Script)
function checkZinliEmails() {
  var supabaseUrl = "URL_DE_TU_SUPABASE/rest/v1/pagos";
  var supabaseKey = "TU_API_KEY";
  var ZINLI_SENDER = "[email protected]";

  for (var loop = 0; loop < 6; loop++) {
    var threads = GmailApp.search(
      'subject:"Recibiste un Zinli" is:unread newer_than:1d'
    );

    for (var i = 0; i < threads.length; i++) {
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
        var msg = messages[j];
        if (!msg.isUnread()) continue;

        var senderRaw = msg.getFrom();
        var emailMatch = senderRaw.match(/<([^>]+)>/);
        var senderEmail = emailMatch ? emailMatch[1].toLowerCase() : senderRaw.toLowerCase().trim();
        if (senderEmail !== ZINLI_SENDER) {
          msg.markRead();
          continue;
        }

        var body = msg.getPlainBody();
        if (
          body.indexOf("Recibiste un Zinli") === -1 ||
          body.indexOf("Referencia") === -1
        ) {
          msg.markRead();
          continue;
        }

        var amountMatch = body.match(/Monto[\s\S]*?\$([0-9]+(?:[.,][0-9]+)?)/i);
        var monto = amountMatch ? parseFloat(amountMatch[1].replace(/,/g, "")) : 0;

        var refMatch = body.match(/Referencia[\s\S]*?([0-9]{6,})/i);
        var referencia = refMatch ? refMatch[1].trim() : "ZIN-" + msg.getId().substring(0, 12).toUpperCase();

        if (monto <= 0) { msg.markRead(); continue; }

        var payload = {
          cliente_id: "TU_USUARIO",
          referencia: referencia,
          monto: monto,
          moneda: "USD",
          estado: "pending"
        };

        try {
          var response = UrlFetchApp.fetch(supabaseUrl, {
            method: "post",
            headers: {
              apikey: supabaseKey,
              Authorization: "Bearer " + supabaseKey,
              "Content-Type": "application/json",
              Prefer: "resolution=ignore-duplicates"
            },
            payload: JSON.stringify(payload),
            muteHttpExceptions: true
          });
          var code = response.getResponseCode();
          if (code >= 200 && code < 300) { msg.markRead(); }
          else if (code === 409) { msg.markRead(); }
        } catch (e) {}
      }
    }
    if (loop < 5) Utilities.sleep(10000);
  }
}
3
Crear el Disparador para Zinli
Configura la ejecución periódica cada 1 minuto
1. Guarda el proyecto.
2. Ve a Disparadores (ícono de reloj).
3. Toca en Añadir disparador → Función checkZinliEmails → Fuente: Basado en el tiempo → Tipo: Minutos → Cada minuto.
4. Guarda y acepta los permisos de Google.

Automatización Banplus Pago Móvil (Email)

Captura notificaciones emitidas por Banplus ("Pago Movil Interbancario").
Abrir Google Apps Script
1
Nuevo Proyecto en Google Apps Script
Inicia sesión en Gmail con la cuenta donde recibes los correos de Banplus
Ve a script.google.com y crea un "Nuevo Proyecto".
2
Script de Integración para Banplus
Pega el código con tus credenciales preconfiguradas
BanplusListener.js (Google Apps Script)
function checkBanplusEmails() {
  var supabaseUrl = "URL_DE_TU_SUPABASE/rest/v1/pagos";
  var supabaseKey = "TU_API_KEY";

  var ALLOWED_SENDERS = [
    "[email protected]",
    "[email protected]"
  ];

  for (var loop = 0; loop < 6; loop++) {
    var threads = GmailApp.search(
      'subject:"Pago Movil Interbancario" is:unread newer_than:1d'
    );

    for (var i = 0; i < threads.length; i++) {
      var messages = threads[i].getMessages();
      for (var j = 0; j < messages.length; j++) {
        var msg = messages[j];
        if (!msg.isUnread()) continue;

        var senderRaw = msg.getFrom();
        var emailMatch = senderRaw.match(/<([^>]+)>/);
        var senderEmail = emailMatch ? emailMatch[1].toLowerCase() : senderRaw.toLowerCase().trim();

        var isBanplusOfficial = ALLOWED_SENDERS.indexOf(senderEmail) !== -1 ||
                                /^[a-z0-9._-]+@([a-z0-9-]+\.)*banplus\.com$/i.test(senderEmail);

        if (!isBanplusOfficial) {
          msg.markRead();
          continue;
        }

        var body = msg.getPlainBody();
        var hasBanplusMark = body.indexOf("Banplus") !== -1 || body.indexOf("banplus.com") !== -1;
        var isAprobado = body.toUpperCase().indexOf("APROBADA") !== -1 ||
                         body.toUpperCase().indexOf("TRANSACCION APROBADA") !== -1;

        if (!hasBanplusMark || !isAprobado) {
          msg.markRead();
          continue;
        }

        var refMatch = body.match(/(?:N[úu\?]?mero\s+de\s+Operaci[óo\?]?n|Operaci[óo\?]?n)\s*[:\r\n\s]*([0-9]{6,})/i);
        var referencia = refMatch ? refMatch[1].trim() : "BP-" + msg.getId().substring(0, 10).toUpperCase();

        var amountMatch = body.match(/Monto\s*[:\r\n\s]*(?:Bs\.?|VES)?\s*([0-9.,]+)/i);
        var monto = 0;
        if (amountMatch) {
          var montoStr = amountMatch[1].trim();
          var lastDot = montoStr.lastIndexOf('.');
          var lastComma = montoStr.lastIndexOf(',');
          if (lastComma > lastDot) {
            monto = parseFloat(montoStr.replace(/\./g, '').replace(',', '.'));
          } else if (lastDot > lastComma) {
            monto = parseFloat(montoStr.replace(/,/g, ''));
          } else if (lastComma !== -1) {
            monto = parseFloat(montoStr.replace(',', '.'));
          } else {
            monto = parseFloat(montoStr);
          }
        }

        if (monto <= 0) { msg.markRead(); continue; }

        var payload = {
          cliente_id: "TU_USUARIO",
          referencia: referencia,
          monto: monto,
          moneda: "Bs",
          estado: "pending"
        };

        try {
          var response = UrlFetchApp.fetch(supabaseUrl, {
            method: "post",
            headers: {
              apikey: supabaseKey,
              Authorization: "Bearer " + supabaseKey,
              "Content-Type": "application/json",
              Prefer: "resolution=ignore-duplicates"
            },
            payload: JSON.stringify(payload),
            muteHttpExceptions: true
          });
          var code = response.getResponseCode();
          if (code >= 200 && code < 300) {
            msg.markRead();
          } else if (code === 409) {
            msg.markRead();
          }
        } catch (e) {}
      }
    }
    if (loop < 5) Utilities.sleep(10000);
  }
}
3
Crear el Disparador para Banplus
Ejecución periódica cada 1 minuto
1. Guarda el proyecto (icono de disquete).
2. En el menú izquierdo, haz clic en el ícono de reloj (Disparadores).
3. Toca en Añadir disparador → Función checkBanplusEmails → Fuente: Basado en el tiempo → Tipo: Minutos → Cada minuto.
4. Guarda y acepta los permisos de Google.

Configuración General y Preferencias Clúster Central Conectado

Gestiona los parámetros de liquidación, márgenes cambiarios, alertas auditivas y copias de seguridad contables.

Moneda de Cálculo Bs. (Bolívares)
Motor de Tasas Binance P2P + BCV
Alertas del Sistema Sonido + Notificaciones
Arquitectura Cloud Clúster Masivo Multi-Tenant

Parámetros Financieros & Tasas

Moneda de liquidación, márgenes y fijación de cotización
Finanzas
Moneda de Visualización

Moneda en la que se calculan y totalizan los balances e ingresos del sistema

Margen P2P USDT (%)

Ajuste porcentual sobre la tasa automática para igualar anuncios altos de Binance (Ej: 1.04)

Tasa Manual Fija (USDT / USD)

Sobrescribir las APIs de mercado y forzar una tasa personalizada en Bolívares

Experiencia & Notificaciones

Alertas auditivas, notificaciones del sistema y temas
Sistema
Alerta Sonora de Pagos

Emite un tono audible instantáneo al ingresar y conciliar pagos bancarios en vivo

Modo Oscuro (Dark Theme)

Alternar entre la estética moderna Dark Cyber y el modo claro de alto contraste

Notificaciones de Escritorio

Recibe alertas nativas emergentes en la pantalla de Windows o Mac

Mantenimiento & Respaldos Contables

Descarga de historial y operaciones de contingencia local
Almacenamiento
Respaldo en Excel (.xlsx)

Exporta un archivo de hoja de cálculo con el historial completo de pagos conciliados, montos, referencias y fechas para auditoría contable.

Borrar Historial de la Cuenta

Elimina de forma irreversible el historial de pagos de esta cuenta. Los pagos y datos de otros clientes en el sistema masivo están 100% protegidos e intactos.