As @Ruffles has mentioned, it is much better to have a single users table.
If each user can only have one account type, then you could use polymorphism to store different metadata about the account.
However, it sounds like you have a user which can have multiple roles for different merchants. How I've handled this in my projects is combining a pivot table and model.
i.e.
merchant_role_user table
id | merchant_id | role_id | user_id
user model
belongsToMany('App\User', 'merchant_role_model');
hasMany('App\MerchantRoleModel', 'merchant_role_model');
You can then get all of a user's merchants with the belongsToMany, but if you want to get the role, you'd use the pivot table.