Resetting the credits every month would be fine, an alternative is every time they click it have it create a new thing “Used Credit” in the database that has the user and creation date , lucky for you they are already built in fields.
Then when they click have it have the condition:
Search for Used Credits:count < 10 with search constraints
Created by = Current User
Creation Date ≥ Current date/time:rounded down to month
Creation Date < Current date/time:rounded down to month + months 1
So it only works if it finds less than 10 things in the database for the user for that month. The 10 can also be dynamic if each user has different allowed amounts (e.g. Current user’s Max Credits)