Database Normalization Advice
With the current design you could have several customers with the same user_id (similarly for merchants). This is a one-to-many association. To solve this problem, simply do not introduce id for table customers, but use user_id as primary key for it, in addition to it being a foreign key for table users. Then you can have only one customer for user. Similarly for table merchants. 

Then you can enforce the constraint that users cannot exists without either being a customer or a merchant by defining in your application  functions to create customers or merchants, but not users. Those functions will create the appropriate rows. Finally, is up to you to decide if a customer can be also a merchant or not. In both cases, the function to create the customer or the merchant must take appropriate action.