Tu problema es que con esta consulta:
estás pidiendo en realidad que te dev uelva la lista completa de pagos, no el último pago. Para poder leer el último pago de cada cliente no puedes usar "*", sino que tienes que indicar los campos a leer y de ese modo poder usar MAX() para buscar los últimos, junto con GROUP BY.
Podrías, en otro caso, ordenarlos por pagos en forma descendente, pero eso requeriría usar subconsultas, porque el GROUP BY debe ir antes del ORDER BY y eso generaría errores de datos si los usas sin subconsultas. Algo así:
Pero esta forma te dará también error si no pones los campos por su nombre, pero por "nombre de columna duplicada"
Usa el ejemplo y pone el nombre de los campos.