Two teenage best friends, Claire (Emma Roberts) and Hailey (Joanna "JoJo" Levesque) regret that they will be separated in five days, since Hailey has to move to Australia because of her mother's job. One night, after a violent storm they find a mermaid, named Aquamarine (Sara Paxton) in the swimming pool of their beach club. The girls are frightened at first, but then curious. They start to talk with Aquamarine and promise her they will be back in the morning.
When they return, they find Aquamarine in the beach's snack shack, but with a human body instead of a mermaid's. Aquamarine tells them she can assume human form on land during the day if she does not get wet. Claire and Hailey befriend Aquamarine, who tells them that she came to land to find love, an idea she knows nothing about, but desires desperately. She tells them that she made a deal with her father: if she finds love in three days, she will not undergo an arranged marriage. She immediately notices a handsome lifeguard named Raymond (Jake McDorman) and enlists the help of the two girls to win his heart in return for the granting of a wish. The girls see their opportunity to keep Hailey from moving and immediately start helping her.
Claire and Hailey's rival a spoiled, rich girl, Cecilia (Arielle Kebbel) tries her best to stop them, but fails. Also prominent is an eccentric, compassionate caretaker, Leonard, who rescues Aquamarine from public discovery. Eventually, it is not Raymond that convinces Aquamarine that humans can love, but Claire and Hailey, who are willing to give up their wish and their lives in the aiding of a friend. Raymond and Aquamarine share a kiss and promise to meet up again in the future, Raymond promises he'll wait for her. Hailey and Claire get their wish from Aquamarine, but decide not to use it until later.But it is mentioned that they plan to use it to make sure all three of them can visit each other every summer.