The regional government of the Swiss state had opposed the measure to ban facial coverings but the decision was put to the people after the Green and Green Liberal parties demanded a referendum.
Voters in St Gallen on Sunday approved by a two-thirds majority a ban on facial coverings such as the burqa, becoming the second Swiss canton or state to do so.
Full-face coverings such as niqabs and burqas are a polarising issue across Europe, with some arguing that they symbolise discrimination against women and should be outlawed. The clothing has already been banned in France and Denmark.
Under the Swiss system of direct democracy, voters in the northeastern canton demanded tightening the law to punish those who cover their faces in public and thus "threaten or endanger public security or religious or social peace".
The regional government, which had opposed the measure, now has to implement the result of the vote, which drew turnout of around 36 percent.
Switzerland's largest Islamic organisation, the Islamic Central Council, recommended women continue to cover their faces. It said it would closely monitor the implementation of the ban and consider legal action if necessary.
The Swiss federal government in June opposed a grassroots campaign for a nationwide ban on facial coverings.
The Swiss cabinet said individual cantons should decide on the matter, but it will nevertheless go to a nationwide vote after activists last year collected more than the required 100,000 signatures to trigger a referendum.
Two-thirds of Switzerland's 8.5 million residents identify as Christians. But its Muslim population has risen to 5 percent, largely because of immigrants from former Yugoslavia.
One Swiss canton, Italian-speaking Ticino, already has a similar ban, while two others have rejected it.