Health Minister Sadik al-Milaik said scores of poor rushed to collect "zakat" - or Islamic alms - being distributed by an association of benevolent businessmen on Saturday in the northeastern city of Port Sudan.
He said the place was too small for the crowd of poor people, many of them beggars, and the crush resulted in 31 people dying of suffocation.
Among the dead were 16 women and 10 children.
Zakat is a pillar of Islam. It is the amount of money that every adult, mentally stable, free, and financially able has to pay in charity every year.
Each Muslim calculates his or her own zakat individually, but it is usually 2.5 percent of their disposable capital.