すでに行っているので、CASEWHENステートメント内の列に値を割り当てようとしないでください。
CASEWHENは、条件を満たす値に評価されます。
このコードを試してください
UPDATE payments SET
total = :total,
paid = (CASE WHEN paid > :new THEN :new ELSE paid END),
due = (CASE WHEN paid < :new THEN (:new - paid) ELSE due END)
WHERE id = :id
ケースステートメント内の支払い済み列と期限付き列への割り当てを削除しました。