Charlotte lives in London in the second world war and is seeing an airman, who gets shot down over France, and she becomes a 'Fanny'. She goes undercover to France to help the French Resistance in the Occupied Area. On her parachute drop in she lands on two little Jewish boys who thinks that she is an angel. While they were out, their parents got taken by the Germans.
She goes under the name Dominique and stays with an old man called Levade whos son Julien is in the Resistance. The two little Jewish boys parents got taken away, so they go and live with Levade and Dominique. Dominique gets her information from an agent called Mirabel and she is told to go and blow up a train carrying tanks. They go and blow it up, then later on she is supposed to meet Julien, but she gets a letter from Mirabel, whom she asked for information about Peter. He says that Peter is dead. She doesn't go and meet Julien, and he goes into the woods, where the rest of the resistance were waiting for him, and the Germans are there and they shoot everyone but Julien.
He gets mad at Dominique because she was supposed to meet him and she should have warned him, and he thinks that she betrayed them. He is going to shoot her, but Levade stands up for her.
After a while, Levade gets arrested and taken away because his grandparents were Jews. Dominique and Julien are left in the house with a guard to stop them leaving, but they pretend to be making out, and when the guard comes to stop them, they attack him so Dominique can run out.She goes to the house where they moved the boys to just in time to see them being taken away. She runs home and writes a letter on the typewriter. Then the police come and she runs and hides, then gets a gun and threatens to shoot the policeman when he finds her. The police leave, and she runs into the town to see the train to the Death camps leaving. She finds Levade and the little boys, and gives them the letter.
Levade reads it to the boys on the train, and Domonique wrote it to be from their parents and it tells them to be brave and always eat and hold hands and look after eachother. She says that they are working in Germany. This is all a lie, because their parents are probably dead.
She leaves France and goes home, under orders. When she gets home, she works giving rations to people who's houses were destroyed. Soon after, she gets a letter. She goes to see Peter, who it turns out isn't dead. He says that he loves her, but she finishes with him.
Next, she is on a train and it is 1945. She is going through France, back to the town. She goes to Julien's flat, but it's for sale, so she goes to his father's (Levade) house and he is there. She tells him her real name is Charlotte Gray, and then they kiss. Then there's the credits.