The ethnic Roma in her late twenties, was fined 500 Swiss francs (464 euros, $563 at current rates) for begging on the street in Geneva in January 2014.
When the woman, who is illiterate and has no job or welfare payments, failed to pay up, she was placed in temporary detention for five days.
The court found the penalties against the woman were out of proportion with Switzerland's aims of fighting organised crime and protecting passers-by, residents and business owners.
The woman had “the right, which is inherent in human dignity, to express her distress and try to meet her needs by begging”, the verdict said.
Switzerland had violated article 8 of the European Convention of Human Rights, which guarantees the protection of private and family life, it said, ordering the country to pay the woman 922 euros ($1,118) in moral damages.