We try to avoid using the word "low-income" in all of our student-facing communications for exactly this reason. For example, this is how we talk about eligibility on the students' page of our website (https://upchieve.org/students):
"Is This Really Free? YES! UPchieve is a nonprofit organization that exists to help students achieve their academic goals. Any student whose family can’t afford a private tutor or admissions consultant is eligible for free tutoring and college counseling through UPchieve. Instead of charging you, we rely on volunteers and donations to provide you with free academic support."
One of my long-term goals with UPchieve is actually to destigmatize being a low-income student. It's obviously not the student's fault if their family can't afford something. (In fact, it's probably not their parents' fault either.) Not sure exactly how we'll do this yet, but I hope that we can :)