The film opens in 1985 in Kinnakee, Kansas, where Libby Day is the sole survivor of the massacre of her mother and two sisters. She tells the police that her brother Ben (Sheridan) committed the crime. In the present day, Libby (Theron) has made a living off of donations sent by strangers to the little girl they saw on the news. With donations drying up, she is hard up for cash when she is approached by Lyle Wirth (Hoult) to make a personal appearance at his true crime club. She agrees to go and answer questions about her past for $700.
Back in 1985, Ben comes to the breakfast table with his hair dyed black. He has a tense relationship with his mother Patty (Hendricks) and his eldest sister Michelle, who taunts Ben about being a loner and rumors that surround him at school. Ben hangs out with a Satanist bookie named Trey Teepano. Meanwhile, Patty is informed that her farm is being foreclosed on, despite her best efforts to stay afloat.
At Wirth’s club, Libby finds out that most of the members believe her brother Ben is innocent. He was only convicted because of Libby’s testimony. Convinced that Ben is guilty, Libby nevertheless agrees to work with the club in return for much needed money. Urged by Wirth to visit Ben, Libby’s curiosity about what motivated him to kill her family prods her to keep researching the case.
Prior to the murders, Ben was planning to run away with his pregnant girlfriend Diondra (Moretz). Meanwhile, several young girls have accused Ben of molesting them. When Patty is informed of the charges, she visits the home of the chief accuser Krissi Cates, whose father is irate and looking to harm Ben. Patty is distraught by the accusations and feels that she has failed her kids. Back home, their father Runner (Bridgers) is waiting for Patty. He needs money to skip town because he owes Trey more than he can repay. He is violent and abusive towards Patty. He attempts to rip her ruby necklace off in order to pawn it and steals some money from her wallet.
In the present, Libby tracks down Runner to an abandoned factory where he lives with other homeless addicts. He tells her about Diondra’s pregnancy. Libby also locates Krissi Cates (Matteo), who eventually confesses that she made up the accusations against Ben.
Meanwhile in 1985, Patty is informed by a friend with the Farmers Home Administration that he might have a solution to her problems. She meets with a stranger in the middle of the night who explains that he can help her. It turns out that he is Calvin Diehl, a serial killer known as the Angel of Debt, who murders people so that they can collect on their life insurance policies. Patty goes home and hides some money for Diehl.
At the same time, Diondra finds out about the accusations against Ben and convinces him to flee with her immediately. They go to Ben’s house to steal some money. Michelle overhears them talking and threatens to tell on them. Diondra viciously attacks Michelle and starts to choke her. Diehl has also entered the house. In the hallway, he stabs Patty. When her middle daughter rushes out of the bedroom to get help for Michelle, Diehl grabs the family shotgun and kills the young girl. The shot distracts Ben from his effort to protect Michelle. While he goes to see what has happened, Diondra kills Michelle.
Libby finds Diondra and the daughter she had with Ben. She finds her mother’s ruby necklace in Diondra’s bathroom and realizes she is in danger. Diondra’s daughter attacks her, but she manages to escape the house. She finds out about Diehl’s involvement from Wirth, whose club was also working on the Angel of Debt case. Libby visits Ben again in prison, and they apologize to each other. She realizes he was trying to protect his unborn daughter by taking the rap for Michelle’s murder. A news report confirms that Diondra has been arrested, and the film closes with Libby returning to the family farm where she grew up.