The movie starts with the display of the by lanes of Ekta Nagar, Bareilly, which is in Uttar Pradesh. It’s a rather small town place, and we are taken to the Mishra Bhawan where Bitti Mishra (Kriti Sanon) resides along with her father Narottam Mishra (Pankaj Tripathi) and mother Sushila Mishra (Seema Bhargava). The family has a sweet shop called Lovely sweet shop which earns them a decent amount of money. Bitti is a brat, she smokes eats non-veg food, drinks alcohol, knows how to break dance. She works at the Electricity Complaint Department of Bareilly and lives her life her way. Bitti’s father has always treated her like a son and loves her to death. The mother only has one mission and apprehension in her life- to get Bitti married. After two engagements of Bitti had broken off, yet again a boy comes to see her at her place. When they are speaking alone, he asks if she was a virgin and Bitti tells him otherwise. The guy naturally leaves. Bitti hates the misogyny that she needs to go through, because she is not a boy, and says everything would have been happy and cheery if she was born a boy.
Having such thoughts in her head, Bitti runs away from her house to the nearest railway station in the hope to start a new life. On the station, on a bookshop, she finds a book titled ‘Bareilly Ki Barfi’. Bitti spends the entire ride reading the book, and identifying each and every statement written in the book about the protagonist of the book-Bubbly. Bitti decides to come back home and find who the author of the book is because she finally feels there is someone on this planet, who likes Bitti for who she is and will live her with all her flaws.
Meanwhile, we are introduced to Chirag Dubey (AyushmannKhurrana) who is the owner of a printing press in Bareilly. We are taken into a series of past events where Chirag had a girlfriend Bubbly, who was full of life, and who Chirag loved very much. Unfortunately, she gets married off and Chirag is left alone. A broken hearted Chirag writes a book and titled it ‘Bareilly Ki Barfi’. But because Bubbly is now married, he doesn’t want to cause her any trouble hence he uses his friend Pritam Vidrohi’s (Rajkummar Rao) face on the back of the book. Pritam was a sweet boy who used to get bullied by Chirag all the time, and hence he had to agree to do the same when Chirag and his friend Munna forced him to. The book, unfortunately, doesn’t work at all, Pritam Vidrohi plans to wander off to a new city and start his life afresh and Chirag’s friend Munna (Rohit Choudhary) just to keep his heart buys 10 copies of the book and displays them on his book stall, exactly where Bitti found the book from. Bitti, on the other hand, is going gaga over Pritam Vidrohi and wants to meet come what may so she goes to Munna, who then leads her to Chirag’s printing press. Chirag tells Bitti that unfortunately, he cannot share any personal details like that. At the same time, Chirag wants to know whether Bitti is actually Bareilly Ki Barfi or not hence he tells her to write a letter to Pritam who is actually Chirag and convey her feelings which he will take to Pritam.
This way, a saga of letter writing starts and Bitti and Chirag who is playing Pritam keep on penning down their feelings, thought and emotions in letters. At the same time, Chirag and Bitti become really good friends; Bitti’s parents develop a likeness towards him as well. Bitti forces Chirag a lot to make her meet Pritam and he finally agrees. Chirag goes to Pritam’s house where his mother resides and gets to know that Pritam has become a big shot sales manager in Lucknow. But when Chirag and Munna go to Lucknow, they find out Pritam is working at a saree selling the shop and nothing else. Chirag just like old times bully Pritam into helping him out in his plan which was to make Pritam into a bad boy who Bitti rejects. Chirag blackmails Pritam that if he doesn’t do as he says, Pritam’s mother will get to know the truth about him working at a saree selling the shop.
After a long and tedious series of events, Chirag becomes successful in getting Pritam to play the perfect bad boy image. He takes Pritam to Bareilly, to meet Bitti and in the very first meeting, Bitti dislikes him. Pritam starts to get feelings for Bitti’sbestfriend Rama (Swati Semwal). His first impression is a disaster, but the second day when Pritam goes to meet Bitti’s parents’ things start taking a turn. Later that same evening, Pritam goes back to his house, feeling really low and like a loser because Chirag was mad at him that Bitti’s parents like him. While he is wandering off the streets, he runs into Bitti, and he has a weak moment in front of her and he breaks down.
Chirag now plans to send Pritam back because he doesn’t want to take more risks, but Pritam says he likes Rama and wants to spend time with her hence doesn’t want to go back. Meanwhile, Bitti’s mother has developed a strong liking for Pritam and hence requests Chirag to play the cupid for Bitti and Pritam, a nervous Chirag labels Pritam as a divorced man. Chirag then convinces Pritam to propose to Rama in front of Bitti, so that she is hurt and she never wants to see Pritam again. But funnily enough, Rama rejects Pritam, because she knew that he is divorced. A very angry, frustrated and furious Pritam goes to Chirag and blames him for ruining his life and make a mockery out of him every time that he plans to do something. A bitter Pritam challenges Chirag that he will now win Bitti’s heart anyhow and marry her.
Bitti, on the other hand, was not affected by Pritam proposing to Rama at all and thinks it's Rama’s loss that she wants to give away such a genuine guy. Bitti and Pritam start spending a lot of time together and Chirag’s insecurities keep on increasing day by day. Finally, Bitti decides to get married to Pritam and Chirag’s world comes crashing down. Munna tells Chirag to tell Bitti about how he feels, Chirag even goes to her house to tell her, but seeing how happy Bitti was, Chirag could not tell her and says it’s too late.
A sulky Chirag realizes whatever he had been doing to both Pritam and Bitti was really bad and he had been really selfish playing with both of their emotions. Chirag writes his feeling down one last time, goes to Pritam, apologizes for whatever he has done, and hand him the letter. He requests Pritam to read this letter on their engagement day. On the engagement day, Pritam comes in with a sore throat and requests Chirag to read the letter instead of him. Chirag starts reciting the letter, and the whole atmosphere becomes sentimental. In the end, when Chirag says will you marry me, Bitti answers yes, but to his surprise the yes was for him and not Pritam. Chirag is shocked and Bitti breaks it to him that she had known it all along that Bareilly Ki Barfi and all those letters were written by Chirag and not Pritam. The day Pritam had a weak moment in front of her, he tells her everything and ever since then, everything has been a part of the plan. The film gets a happy ending, Pritam weds Rama and Chirag marries Bitti.