An order from the president published by the Kremlin said Oksana Sevastidi, sentenced for treason in March 2016, would be relieved from completing the rest of her sentence, citing humanitarian principles.
Sevastidi was found guilty of treason after she sent a text message describing the movement of a train which carried Russian military hardware near the border with Georgia's breakaway region of Abkhazia not long before a war broke out in 2008.
According to an interview with Sevastidi's mother Svetlana in Russia's daily MK, the message was sent to a man who Oksana Sevastidi had only met twice and her mother has not been able to reach since. The mother said Oksana had little interest in politics but was a member of the ruling party United Russia.
Sevtlana said the exchange was the man asking "Oksana, are there tanks on your platform."
Oksana answered: "There were before but now I don't know."
The case was criticised by rights groups, with the local group Memorial branding Sevastidi a political prisoner. Memorial, which Sevastidi had asked for help, said she was found guilty under Article 275 of Russia's criminal code.
Asked whether Sevastidi had asked to be pardoned and whether she admitted wrongdoing, presidential spokesman Dmitry Peskov on Tuesday declined to answer.
In December Putin promised to sort out her case, calling the court decision "quite harsh".
"She wrote what she saw, what everyone saw, so that means it cannot be any big secret," he said at the time.
The pardon would be enacted five days after its publication.
Reporting by Dasha Afanasieva and Maria Tsvetkova