You need to trigger their expiration. The reason it waits until they login is because they're not actually expired until the expiration is triggered. You can trigger expirations with CRON, navigating to CBSubs backend, having the user login, or having any user login. You can adjust this behavior within CBSubs > Settings > Global.
Please also note there is a bug with value reversal in CBSubs Fields integration. You can a quickfix in the below topic to resolve the issue.
www.joomlapolis.com/forum/255-developer-members-support/221405-cbsubs-integration-cbfields?start=18#228624
So you could just be experiencing said bug.