Just like you have stated a lot of reasons could be behind the check bouncing.When the account of the drawer has insufficient funds
When the amount written on it in words and figures does not match to each other
When the signature on the cheque does not match to the specimen signature stored by the Bank
Most of the time the date also matters you cannot take a check to be cashed in on the 16th to the bank on the 30th it will bounce.