Forum Moderators: skibum
To be honest, each has its benefits and down sides. Running an internal program gives you complete control over features, complete access to affiliates and reduces the monthly costs (e.g. no monthly management fees or signup fees).
Running with an established provider means you don't have to worry about uptime / develpment (that's their job), access to a number of affiliates and access to experience affiliate account managers.
We were lucky with our internal program since we already had a significant customer base who we knew would use it.
My advice would be to go with the established provider unless you are very confident with creating / managing your own scripts. There is no reason you cannot still promote the program to your customers.
If however you are super confident in coding an affiliate systems, and you have a large enough customer base to generate usage, then in the long term the self managed version would save you money.
Tough decision ... thus the reason we do both.