The subtle difference between the two is that "fits" will be usually said of things, items, objects, while "suits" will be used with services, operations, activities, or entities performing them (people, companies).
The difference is very slight though and it's certainly not an error to use one in the context of the other. In your case, the program as an object (if abstract) will fit "fits" better.
The program fits our needs.
The services provided by your company suit our needs.
As for "meets", again, it can be used in both above contexts, but usually you'll use it when the expectations weren't sure to be fulfilled - and then it appears only "after the fact" that yes, they were met after all.
We performed the tests, and the program met our needs.
We are not entirely sure the program will meet all our needs.
FumbleFingers added two extra expressions: addresses and matches.
Addresses will be usually connected with plans or concerns - said of an upcoming solution, which is expected to resolve them, but doesn't do it as of yet; or as opposed to 'fits/suits/meets/matches', invalidates them. A document that proves meeting your needs is impossible surely doesn't fit them - but addresses your demand, invalidating it. Same if they are already met, no other action needed, just explanation.
This report addresses the requirements regarding our program's compliance with local regulations; it appears no local regulations apply to our case.
Matches will be used when there's a set of different solutions and only chosen ones are viable.
I reviewed the twelve packages available on the market and only two match our needs; all others lacking one essential feature or another.