I have 3 versions of my app: free, basic and pro. Pro requires a subscription but I'd like to create promo codes for a subscription that never ends. Is this possible? I could do this by creating some codes in my database but I'd prefer having just the Google check for this.
It's only 3 months max
A subscription that never ends is not a subscription, therefore such functionality can't exist.
A solution for your requirement is to create a non-consumable in-app Product in the developer's console, and generate promo codes for it.
You will need to adjust your billing implementation to also query for in-app products (SkuType.INAPP), besides subscriptions.