The United Nations General Assembly has passed the first global arms trade treaty by 154 votes to three, with 23 abstentions.
Syria, North Korea and Iran had sought to block the treaty governing a trade worth some $70 billion annually.
The treaty aims to prevent abuses against civilians and keep weapons out of the hands of terrorists and gangs.
Russia, the world’s second-biggest major exporter, was among those states which abstained from the vote at the UN Assembly in New York.
The treaty also prohibits states from exporting conventional weapons in violation of arms embargoes, or weapons that would be used for acts of genocide, crimes against humanity, war crimes or terrorism.
It also requires states to prevent conventional weapons reaching the black market.
Before the vote, Australia’s ambassador to the UN, Peter Woolcott, had said the final draft of the treaty was a compromise text to bring together the broadest range of stakeholders.
The UN Assembly had heard from member-states’ ambassadors objecting to, or supporting, the draft.
Speaking for Russia, Vitaly Churkin said it was a significant shortcoming that there was no clause in the draft treaty about banning the supply of weapons to non-state entities.