apiCEP
    Volver al blog

    Cómo confirmar el pago SPEI y emitir la factura CFDI automáticamente en tu plataforma de servicios

    Dos pasos manuales donde debería haber cero

    Cuando un cliente de una plataforma de servicios digitales paga por transferencia SPEI, el proceso ideal desde su perspectiva es: pago → servicio activo → factura en el correo.

    En la realidad de la mayoría de las plataformas en México, ese proceso requiere que el cliente haga dos acciones manuales adicionales: primero entra al portal a reportar su pago (sube el comprobante), y después, en esa misma sesión o en otra, solicita su factura ingresando sus datos fiscales. Ambas cosas dentro de un período limitado — muchas plataformas solo permiten solicitar la factura en las primeras horas tras el pago.

    Si el cliente no lo hace a tiempo, pierde su factura. Si tu equipo no procesa la notificación a tiempo, el servicio queda suspendido aunque el dinero ya llegó.

    apiCEP elimina esos dos pasos manuales con una sola llamada a la API.


    El problema de los dos pasos: más fricción de la que parece

    El proceso de "reporta tu pago y solicita tu factura" tiene un costo que se distribuye entre el cliente, el área de pagos y el área de facturación:

    Para el cliente:

    • Tiene que recordar hacer un paso extra después de pagar — no es intuitivo
    • Si paga tarde en la noche o en fin de semana, puede perderse la ventana para solicitar la factura
    • Si olvidó dar de alta sus datos fiscales en el portal, tiene que hacerlo antes de poder solicitar el CFDI

    Para el equipo de la plataforma:

    • Alguien tiene que revisar cada comprobante reportado manualmente
    • El área de facturación no puede generar el CFDI hasta que pagos confirme la transacción
    • Los dos flujos (confirmación de pago y emisión de factura) son procesos separados que necesitan coordinarse

    El resultado más común: servicios que se activan con horas de retraso, facturas que se pierden porque el cliente no las solicitó a tiempo, y tickets de soporte de "¿por qué mi servicio sigue suspendido si ya pagué?".


    Cómo apiCEP une los dos pasos en uno

    apiCEP valida el comprobante SPEI contra Banxico y, cuando el pago es válido, devuelve los datos completos de la operación — incluyendo el RFC del ordenante extraído directamente del CEP oficial de Banxico.

    Eso significa que una sola llamada a apiCEP le da a tu sistema lo que necesita para hacer dos cosas automáticamente:

    1. Confirmar el pago y activar el servicio — con banxicoConfirmed: true
    2. Generar el CFDI automáticamente — con el RFC del cliente extraído del cepDetails

    Sin que el cliente reporte nada. Sin que solicite la factura por separado. Sin que nadie del equipo intervenga.


    La integración técnica: pago confirmado y CFDI generado en una llamada

    curl -X POST https://api.apicep.cloud/validate-transfer \\
      -H \"Authorization: Bearer TU_API_KEY\" \\
      -H \"Content-Type: application/json\" \\
      -d '{
        \"imageUrl\": \"https://tuplataforma.com/uploads/comprobante-suscripcion-1291.jpg\",
        \"beneficiary\": {
          \"clabe\": \"TU_CLABE_18_DIGITOS\",
          \"bank\": \"NOMBRE_DE_TU_BANCO\",
          \"name\": \"Tu Plataforma de Servicios S.A. de C.V.\"
        }
      }'
    

    La respuesta incluye tanto los datos de validación como los datos fiscales del cliente:

    {
      \"status\": \"valid\",
      \"confidence\": 0.97,
      \"extracted\": {
        \"amount\": 2490.00,
        \"senderName\": \"Comercializadora Hernández S.A. de C.V.\",
        \"date\": \"2026-05-01\"
      },
      \"validation\": {
        \"banxicoConfirmed\": true
      },
      \"cepDetails\": {
        \"operationDate\": \"2026-05-01T10:22:45\",
        \"trackingKey\": \"2026BBVA0000112233\",
        \"senderRfc\": \"CHE940215ABC\",
        \"senderName\": \"Comercializadora Hernández S.A. de C.V.\",
        \"senderBank\": \"BBVA MEXICO\",
        \"senderAccount\": \"012345678901234567\",
        \"senderAccountType\": \"CLABE\",
        \"amount\": 2490.00
      },
      \"downloads\": {
        \"cepPdf\": \"https://api.apicep.cloud/files/cep-xxx.pdf\",
        \"cepXml\": \"https://api.apicep.cloud/files/cep-xxx.xml\"
      }
    }
    

    Con esa respuesta, tu sistema tiene el RFC real del cliente (verificado por Banxico), el monto exacto y la fecha de operación — todos los datos necesarios para timbrar el CFDI sin pedir nada más al cliente.


    Lógica de activación + facturación automática

    async function procesarPagoYFacturar(subscriptionId, imageUrl) {
      const subscription = await getSubscription(subscriptionId);
    
      const result = await fetch('https://api.apicep.cloud/validate-transfer', {
        method: 'POST',
        headers: { 'Authorization': `Bearer ${process.env.APICEP_API_KEY}` },
        body: JSON.stringify({
          imageUrl,
          beneficiary: {
            clabe: process.env.TU_CLABE,
            bank:  process.env.TU_BANCO,
            name:  process.env.TU_NOMBRE
          }
        })
      }).then(r => r.json());
    
      const pagoValido =
        result.status === 'valid' &&
        result.validation?.banxicoConfirmed === true &&
        result.extracted?.amount >= subscription.total;
    
      if (pagoValido) {
        const cep = result.cepDetails;
    
        // 1. Activar o renovar el servicio
        await activarServicio(subscriptionId);
    
        // 2. Construir datos para el CFDI con RFC verificado por Banxico
        const datosCFDI = {
          rfcReceptor:    cep.senderRfc,         // RFC del cliente (de Banxico)
          nombreReceptor: cep.senderName,
          monto:          cep.amount,
          fecha:          cep.operationDate,
          concepto:       `Renovación ${subscription.plan} — ${subscription.period}`,
          formaPago:      '03',                  // SPEI = código 03
          metodoPago:     'PUE',                 // Pago en Una Exhibición
          usoCFDI:        'G03'                  // Gastos en general (ajusta según el cliente)
        };
    
        // 3. Timbrar CFDI vía PAC (EdiFactMx, Edicom, etc.)
        const cfdi = await timbrarCFDI(datosCFDI);
    
        // 4. Notificar al cliente con confirmación + factura
        await enviarConfirmacion(subscription.email, {
          servicio: 'activo',
          cfdiUrl:  cfdi.pdfUrl,
          xmlUrl:   cfdi.xmlUrl,
          cepUrl:   result.downloads.cepPdf
        });
    
        // 5. Guardar CEP como respaldo contable
        await guardarCEP(subscriptionId, result.downloads);
      } else if (result.status === 'pending') {
        await programarReintento(subscriptionId, imageUrl, 300);
      } else {
        await notificarPagoNoConfirmado(subscription.email);
      }
    }
    

    El RFC de Banxico vs. el RFC que el cliente declaró

    Una ventaja específica de usar cepDetails.senderRfc para generar el CFDI: ese RFC fue verificado por la institución bancaria del cliente al momento de abrir su cuenta, no es un dato que el cliente escribió en un formulario.

    Esto resuelve un problema real en plataformas que emiten CFDIs: clientes que dan un RFC incorrecto (por error o intención) y después disputan la factura. Con el RFC del CEP de Banxico, el CFDI corresponde al RFC real del emisor del pago.

    Importante: si el cliente paga desde una cuenta personal pero necesita factura a nombre de su empresa, el RFC del CEP será el de la cuenta personal. En ese caso, el sistema puede detectar la discrepancia y pedirle al cliente que confirme el RFC de facturación antes de timbrar.


    Casos de uso en plataformas de servicios digitales recurrentes

    Hosting y dominios con pago SPEI

    El cliente renueva su hosting anual por transferencia. Sube el comprobante, apiCEP valida, el servicio se renueva y el CFDI llega al correo — sin reportar ni solicitar nada.

    Plataformas SaaS con facturación B2B

    Empresas que pagan suscripciones mensuales por SPEI necesitan CFDI para deducir. Con apiCEP, la factura se genera automáticamente con el RFC verificado por Banxico en el momento del pago.

    Suscripciones de cursos y plataformas educativas

    Cuando una institución paga el acceso de sus empleados a una plataforma de capacitación, el pago SPEI activa los accesos y genera la factura para el departamento de compras automáticamente.

    Proveedores de servicios cloud y telecomunicaciones

    Cualquier proveedor que factura en PPD o PUE y recibe pagos SPEI puede integrar apiCEP para cerrar el ciclo de cobro-factura sin intervención manual.


    Ventana de facturación: el problema que apiCEP elimina por diseño

    Muchas plataformas tienen una ventana limitada para solicitar la factura — 24 horas, 48 horas, el mes calendario del pago. Si el cliente no la solicita a tiempo, la pierde.

    Con apiCEP, ese problema desaparece: la factura se genera automáticamente en el momento del pago, dentro del período fiscal correcto, sin depender de que el cliente recuerde solicitarla.


    Comparativa: proceso manual vs. automatizado con apiCEP

    | Aspecto | Proceso manual (reportar + solicitar) | Con apiCEP |
    |---|---|---|
    | Pasos que hace el cliente | Pagar → reportar → solicitar factura | Solo pagar y subir comprobante |
    | Tiempo de activación del servicio | Horas (sujeto a revisión) | Menos de 15 segundos |
    | Emisión del CFDI | Después de confirmación manual | Automática con RFC de Banxico |
    | Riesgo de perder la ventana de facturación | Alto (depende del cliente) | Eliminado |
    | RFC en el CFDI | Declarado por el cliente | Verificado por Banxico |
    | Operación fuera de horario | No | Sí, 24/7 |
    | Respaldo oficial del cobro | No | CEP en XML y PDF |


    Planes sin contratos ni mensualidades forzosas

    | Plan | Precio | Validaciones | Vigencia |
    |---|---|---|---|
    | Bienvenida | Gratis | 50 | 30 días |
    | Básico | $100 MXN | 200 | 30 días |
    | Premium | $200 MXN | 800 | 30 días |
    | Business | $400 MXN | 1,600 | 30 días |

    Para una plataforma con 300 renovaciones SPEI al mes, el plan Business cubre toda la operación a $0.25 MXN por validación — menos que el costo de un solo ticket de soporte por "mi factura no llegó".


    Empieza con 50 validaciones gratuitas

    Si tu plataforma hoy requiere que el cliente reporte su pago y solicite su factura por separado, apiCEP puede cerrar ese ciclo automáticamente desde hoy.

    Crea tu cuenta en apicep.cloud — las primeras 50 validaciones son sin costo. Sin RFC. Sin contrato. Revisa la documentación técnica en apicep.cloud/documentacion y verifica que los campos del cepDetails cubren lo que tu sistema de timbrado necesita.