Ukrainian President Viktor Yanukovych had pressed for revisions to a gas deal signed by the previous government since he took office in February.
"The discount is expected to make up 30 percent of the total gas price but no more than $100 per 1,000 cubic meters, and will apply to 30 billion cubic meters in 2010 and 40 billion cubic meters in subsequent years," a statement by Russian gas monopoly Gazprom read.
The deal also calls on Kiev to settle 80 percent of its gas debt to Gazprom before the sixth of each month, with the remaining 20 percent due by the 20th of each month. A "take-or-pay" clause remains in effect.
"The changes have been introduced in the contract in pursuance of the intergovernmental agreements and don't have a negative effect on Gazprom's economics," added Gazprom chief Alexei Miller.
Russia, in exchange for the deal, extends its naval presence at Sevastopol port in the Ukrainian autonomous republic of Crimea for 25 years from 2017.
Opposition lawmakers in Ukraine complained the deal violates articles in the constitution that forbid foreign military bases on Ukrainian soil, Russia's state-run news agency RIA Novosti reports.
"A president, who has violated the norms of the Ukrainian Constitution ... should be impeached," a statement by the Our Ukraine Party of former President Viktor Yushchenko read.