diff --git src/bp-groups/bp-groups-functions.php src/bp-groups/bp-groups-functions.php
index c83e743..fac208d 100644
--- src/bp-groups/bp-groups-functions.php
+++ src/bp-groups/bp-groups-functions.php
@@ -1043,6 +1043,40 @@ function groups_send_invites( $user_id, $group_id ) {
 	do_action( 'groups_send_invites', $group_id, $invited_users );
 }
 
+/**
+ * Send specific pending group invitations keyed by group and invitee id
+ *
+ * @param int 	$group_id 	ID of the group.
+ * @param int 	$invitee_id ID of the invited user.
+ * @param bool 	$resend 	Whether to resend notification email if already sent.
+ *
+ * @since BuddyPress (2.2.0)
+ */
+function groups_send_invite_by_invitee( $group_id, $invitee_id, $resend = false ) {
+
+	if ( empty( $group_id ) || empty( $invitee_id ) ) {
+		return false;
+	}
+
+	// Check that an invitation exists for this user/group combination.
+	// $type = 'all' checks for sent or unsent invitations.
+	if ( ! groups_check_user_has_invite( $invitee_id, $group_id, $type = 'all' ) ) {
+		return false;
+	}
+
+	$group = groups_get_group( array( 'group_id' => $group_id ) );
+	$member = new BP_Groups_Member( $invitee_id, $group_id );
+
+	// Send the invitation email.
+	groups_notification_group_invites( $group, $member, $member->inviter_id, $resend );
+
+	$member->invite_sent = 1;
+	$member->save();
+
+	// Invoke the same action as groups_send_invites().
+	do_action( 'groups_send_invites', $group_id, array( $invitee_id ) );
+}
+
 function groups_get_invites_for_group( $user_id, $group_id ) {
 	return BP_Groups_Group::get_invites( $user_id, $group_id );
 }
diff --git src/bp-groups/bp-groups-notifications.php src/bp-groups/bp-groups-notifications.php
index c4b1a48..a01dd91 100644
--- src/bp-groups/bp-groups-notifications.php
+++ src/bp-groups/bp-groups-notifications.php
@@ -296,15 +296,16 @@ add_action( 'groups_promoted_member', 'groups_notification_promoted_member', 10,
  *
  * @since BuddyPress (1.0.0)
  *
- * @param BP_Groups_Group $group Group object.
- * @param BP_Groups_Member $member Member object.
- * @param int $inviter_user_id ID of the user who sent the invite.
- * @return bool|null False on failure.
+ * @param 	BP_Groups_Group  $group  Group object.
+ * @param 	BP_Groups_Member  $member  Member object.
+ * @param 	int  $inviter_user_id  ID of the user who sent the invite.
+ * @param 	bool  $resend  Whether to resend notification email if already sent.
+ * @return 	bool|null 	False on failure.
  */
-function groups_notification_group_invites( &$group, &$member, $inviter_user_id ) {
+function groups_notification_group_invites( &$group, &$member, $inviter_user_id, $resend = false ) {
 
-	// Bail if member has already been invited
-	if ( ! empty( $member->invite_sent ) ) {
+	// Bail if member has already been invited, and $resend isn't specified.
+	if ( ! $resend && ! empty( $member->invite_sent ) ) {
 		return;
 	}
 
diff --git tests/phpunit/testcases/groups/class-bp-groups-member.php tests/phpunit/testcases/groups/class-bp-groups-member.php
index 7d1aad3..fb225f1 100644
--- tests/phpunit/testcases/groups/class-bp-groups-member.php
+++ tests/phpunit/testcases/groups/class-bp-groups-member.php
@@ -12,14 +12,14 @@ class BP_Tests_BP_Groups_Member_TestCases extends BP_UnitTestCase {
 		parent::tearDown();
 	}
 
-	public static function invite_user_to_group( $user_id, $group_id, $inviter_id ) {
+	public static function invite_user_to_group( $user_id, $group_id, $inviter_id, $draft = false ) {
 		$invite                = new BP_Groups_Member;
 		$invite->group_id      = $group_id;
 		$invite->user_id       = $user_id;
 		$invite->date_modified = bp_core_current_time();
 		$invite->inviter_id    = $inviter_id;
 		$invite->is_confirmed  = 0;
-		$invite->invite_sent   = 1;
+		$invite->invite_sent   = $draft ? 0 : 1;
 
 		$invite->save();
 		return $invite->id;
@@ -127,5 +127,22 @@ class BP_Tests_BP_Groups_Member_TestCases extends BP_UnitTestCase {
 		$ids = wp_list_pluck( $mm, 'user_id' );
 		$this->assertEquals( array( $u2 ), $ids );
 	}
+
+	public function test_groups_send_invite_by_invitee() {
+		$g1 = $this->factory->group->create();
+
+		$u1 = $this->factory->user->create();
+		$u2 = $this->factory->user->create();
+		self::add_user_to_group( $u1, $g1 );
+
+		// Create unsent invitation
+		self::invite_user_to_group( $u2, $g1, $u1, $draft = true );
+		$this->assertTrue( is_null( groups_check_user_has_invite( $u2, $g1, $type = 'sent' ) ) );
+
+		groups_send_invite_by_invitee( $g1, $u2 );
+
+		$this->assertTrue( is_numeric( groups_check_user_has_invite( $u2, $g1, $type = 'sent' ) ) );
+
+	}
 }
 
