Have you checked to see if trade income is working correctly? A hostile stack on the road between a settlement and its port will cut trade (just like a blockade). If there is no road between the port and the settlement it might have a similar effect.