FOUND_ROWS() devuelve la cantidad de filas (registros) de la tabla, afectados (INSERT/UPDATE/DELETE) por la ejecución de la sentencia. Pero no evita tu problema original.
Sería mucho más simple que implementases lo que deseas en dos consultas por separado qu eintentar resolver todo en una sola, sin hacerlo en un stored procedure.
Haz una sentencia que consulte si el dato existe:
Luego, si el valor devuelto por el único registro de la consulta es cero (0), recién entonces mandas a insertar la nueva cuota...
Vas a perder menos tiempo, y el resultado final sería igual que usando el SP que te propuse.