Useful topic to cover but isn't the final solution over-complex?
Couldn't you just use an inequality of PaymentID's on a self-join as follows..?
DELETE Payment
WHERE PaymentID IN
(SELECT P1.PaymentID
FROM Payment P1
INNER JOIN Payment P2
ON P1.CustomerNumber = p2.CustomerNumber
AND
p1.PostedDatetime = p2.PostedDatetime
AND
p1.PaymentAmt = p2.PaymentAmt
AND
p1.PaymentID > p2.PaymentID)
Mark