Consumer spending in the UK during the crucial festive period is set to fall for the first time since 2012 amid falling real wages, weak economic growth and uncertainty created by Brexit, new research suggests.

Spending through November and December is predicted to fall 0.1% compared to a year earlier, in stark contrast to the 2.8% growth recorded during the 2016 Christmas season, Visa and IHS Markit said.

The consumer spending index is calculated by adjusting credit and debit card transactions for a variety of factors to create a gauge of overall consumer spending.

Spending on the high street is predicted to fall 2.1% during the festive period, the third successive year in which face-to-face spending has fallen and the biggest contraction recorded since 2012.

In contrast, e-commerce spending is expected to rise by 3.6%, with Visa estimating that almost £2 of every £5 spent during the festive season will be spent online.

"While it still looks likely that consumers will be hitting stores and websites in search of bargains this Black Friday and Cyber Monday, we expect spending for the duration of the festive season to be lower in comparison to last year," said Mark Antipof, chief commercial officer at Visa.

"Looking back, consumers were in a sweet spot in 2016 – low inflation and rising wages meant there was a little extra in household budgets to spend on the festive period. 2017 has seen a reversal of fortunes – with inflation outpacing wage growth and the recent interest rate rise leaving shoppers with less money in their pockets."

Three of the six broad categories are expected to see reduced spending during the festive season, with transport and communication set for a 4.5% decline due to falling spending on Christmas getaways.

Expenditure on clothing and footwear and household goods is also expected to fall, while spending on food and drink is predicted to be flat.

A separate survey of shoppers by Visa revealed that 43% expect to complete the majority of their Christmas shopping by the end of the Black Friday weekend.