I received an email recently from an engineer who was considering a job at a non-profit. They offered him a much lower salary than he was expecting, because they were a “non-profit.” Some people are slimeballs, even if they work at non-profits.
A non-profit has revenue. A non-profit pays salaries and benefits to its employees. What distinguishes a non-profit from a profit-making company is just this: A non-profit does not distribute gains to its shareholders. That's it. The gains go to the employees, the cause(s), the salaries of the top execs, etc. But not to shareholders. The best-run non-profits have most of their gains go to the cause, not the employees, including the execs.
So if anyone tells you they can't pay you a reasonable salary because they're a non-profit, ask to see the salaries of the executive team. I bet those people are paid “reasonably” for their positions. And if they are, so should you.
Lowballing anyone on salary is a no-win/no-win position. Savvy candidates won't take a lower-than-expected salary (unless you're negotiation on things other than money). Employees who realize they're underpaid quickly go somewhere else. And then they'll tell anyone who'll listen how unfair that employer is.
The bottom line is: know your worth as a candidate. If you're a hiring manager, know what this position is worth to you and what people would expect for this position. Then negotiate on salary fairly and reasonably, so you have a win-win.