Square's problem is that the margin on processing physical credit cards is razor thin, especially if you are just using other people's networks. My thought has been that Square will eventually launch its own credit card network once they have a large enough share of the credit card processing market.
Square could have launched an API and done what Stripe did, but the problem of processing credit cards over the Internet are different from the problem of processing physical credit cards. I don't think that anyone could have simultaneously succeeded at both.