"She said YES!!!" JJ captioned a picture of himself down on one knee in Hawaii on Monday. "I can't wait to marry my best friend, my love, and the woman that has made me better since the day we met!"
Kayla also shared a photo from the marriage proposal on her own Instagram account in which she was showing off her diamond ring and kissing the former investment banker.
"Does this ring make me look.... ENGAGED??!!!" Kayla wrote. "I said yes to the man of my dreams and can't wait to spend the rest of my life with my best friend."
JJ went public with his relationship with Kayla -- a former Kansas City Chiefs cheerleader who is not a The Bachelor franchise alum -- in late September 2017.
"[I'm in] an amazing, very healthy, loving relationship with someone that's not related to any TV," JJ told Life & Style in October 2017, shortly after his ex-girlfriend Juelia Kinney revealed she had moved on from their relationship.
"I wanted a normal human being that wasn't worried about her Instagram following and how many views she got on her Instagram story, so thank goodness."
JJ was previously married, however the marriage ended when he cheated on his wife Heather. The former couple have a daughter Gemma together.
Following their divorce, JJ found fame on The Bachelorette when he competed for Kaitlyn Bristowe's heart on Season 11 in 2015. JJ was depicted as a villain that season and also revealed he had cheated on his ex-wife.
"I made a mistake that basically has destroyed my life. I lost everything. I lost my wife. I lost my daughter half the time," JJ told Kaitlyn at the time. "Everything I had worked hard for was gone with one bad, terrible decision."