A table with many records get slow to write and read
How can you have PRIMARY KEY(tran_id) without a column named tran_id???

Your queries need at least one index starting with user_id and 3 composite indexes, say:

INDEX(userid, created_at)
INDEX(card_id, userid)
INDEX(store_id, userid)


Surely most of the fields should be NOT NULL??

Bug:  INT(15) will not hold 15 digits; it will hold only 9 (signed 32-bit numbers).  Suggest DECIMAL(16,0) if you are storing credit card numbers.  But then, I would seriously advise hiring a security consultant -- you do not want to lose a laptop full of CC numbers; you will be in deep do-do.