square is probably you’re best bet
I looked at this a while ago but decided not to proceed but I remember square having a fairly robust api for this