diff --git src/bp-xprofile/bp-xprofile-functions.php src/bp-xprofile/bp-xprofile-functions.php
index 060b2ff61..d8e0e53c4 100644
--- src/bp-xprofile/bp-xprofile-functions.php
+++ src/bp-xprofile/bp-xprofile-functions.php
@@ -149,16 +149,17 @@ function xprofile_update_field_group_position( $field_group_id = 0, $position =
  */
 function bp_xprofile_get_field_types() {
 	$fields = array(
-		'checkbox'       => 'BP_XProfile_Field_Type_Checkbox',
-		'datebox'        => 'BP_XProfile_Field_Type_Datebox',
-		'multiselectbox' => 'BP_XProfile_Field_Type_Multiselectbox',
-		'number'         => 'BP_XProfile_Field_Type_Number',
-		'url'            => 'BP_XProfile_Field_Type_URL',
-		'radio'          => 'BP_XProfile_Field_Type_Radiobutton',
-		'selectbox'      => 'BP_XProfile_Field_Type_Selectbox',
-		'textarea'       => 'BP_XProfile_Field_Type_Textarea',
-		'textbox'        => 'BP_XProfile_Field_Type_Textbox',
-		'telephone'      => 'BP_XProfile_Field_Type_Telephone',
+		'checkbox'            => 'BP_XProfile_Field_Type_Checkbox',
+		'datebox'             => 'BP_XProfile_Field_Type_Datebox',
+		'multiselectbox'      => 'BP_XProfile_Field_Type_Multiselectbox',
+		'number'              => 'BP_XProfile_Field_Type_Number',
+		'url'                 => 'BP_XProfile_Field_Type_URL',
+		'radio'               => 'BP_XProfile_Field_Type_Radiobutton',
+		'selectbox'           => 'BP_XProfile_Field_Type_Selectbox',
+		'textarea'            => 'BP_XProfile_Field_Type_Textarea',
+		'textbox'             => 'BP_XProfile_Field_Type_Textbox',
+		'telephone'           => 'BP_XProfile_Field_Type_Telephone',
+		'checkbox_acceptance' => 'BP_XProfile_Field_Type_Checkbox_Acceptance',
 	);
 
 	/**
diff --git src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php
index e69de29bb..5bf0e24a8 100644
--- src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php
+++ src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php
@@ -0,0 +1,260 @@
+<?php
+/**
+ * BuddyPress XProfile Classes.
+ *
+ * @package BuddyPress
+ * @subpackage XProfileClasses
+ * @since 8.0.0
+ */
+
+// Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+/**
+ * Checkbox Acceptance xProfile field type.
+ *
+ * @since 8.0.0
+ */
+class BP_XProfile_Field_Type_Checkbox_Acceptance extends BP_XProfile_Field_Type {
+
+	/**
+	 * Constructor for the Checkbox Acceptance field type.
+	 *
+	 * @since 8.0.0
+	 */
+	public function __construct() {
+		parent::__construct();
+
+		$this->name     = _x( 'Checkbox Acceptance', 'xprofile field type', 'buddypress' );
+		$this->category = _x( 'Single Fields', 'xprofile field type category', 'buddypress' );
+
+		$this->supports_options    = false;
+		$this->do_settings_section = true;
+
+		$this->set_format( '/^.+$/', 'replace' );
+
+		/**
+		 * Fires inside __construct() method for bp_xprofile_field_type_checkbox_acceptance class.
+		 *
+		 * @since 8.0.0
+		 *
+		 * @param BP_XProfile_Field_Type_Checkbox_Acceptance $this Current instance of the Checkbox Acceptance field type.
+		 */
+		do_action( 'bp_xprofile_field_type_checkbox_acceptance', $this );
+	}
+
+
+	 /**
+	 * Output the edit field HTML for this field type.
+	 *
+	 * Must be used inside the {@link bp_profile_fields()} template loop.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param array $raw_properties Optional key/value array of
+	 *                              {@link http://dev.w3.org/html5/markup/textarea.html permitted attributes}
+	 *                              that you want to add.
+	 */
+	public function edit_field_html( array $raw_properties = array() ) {
+		$user_id = bp_displayed_user_id();
+
+		if ( isset( $raw_properties['user_id'] ) ) {
+			$user_id = (int) $raw_properties['user_id'];
+			unset( $raw_properties['user_id'] );
+		}
+
+		// HTML5 required attribute.
+		if ( bp_get_the_profile_field_is_required() ) {
+			$raw_properties['required'] = 'required';
+			$required                   = true;
+		} else {
+			$required = false;
+		}
+		?>
+		<legend>
+			<?php bp_the_profile_field_name(); ?>
+			<?php bp_the_profile_field_required_label(); ?>
+		</legend>
+
+		<?php
+		/** This action is documented in bp-xprofile/bp-xprofile-classes */
+		do_action( bp_get_the_profile_field_errors_action() );
+		?>
+
+		<?php bp_the_profile_field_options( array( 'user_id' => $user_id, 'required' => $required ) ); ?>
+
+		<?php if ( bp_get_the_profile_field_description() ) : ?>
+			<p class="description" tabindex="0"><?php bp_the_profile_field_description(); ?></p>
+		<?php endif;
+	}
+
+	/**
+	 * Field html for Admin-> User->Profile Fields screen.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param array $raw_properties properties.
+	 */
+	public function admin_field_html( array $raw_properties = array() ) {
+		$text = wp_kses_data( self::get_content( bp_get_the_profile_field_id() ) );
+		$html = $this->get_edit_field_html_elements( array_merge(
+			array( 'type' => 'checkbox' ),
+			$raw_properties
+		) );
+		?>
+		<label for="<?php bp_the_profile_field_input_name(); ?>">
+			<input <?php echo $html; ?>>
+			<?php echo $text; ?>
+		</label>
+		<?php
+	}
+
+	/**
+	 * Admin new field screen.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param BP_XProfile_Field $current_field Profile field object.
+	 * @param string            $control_type  Control type.
+	 */
+	public function admin_new_field_html( BP_XProfile_Field $current_field, $control_type = '' ) {
+		$type = array_search( get_class( $this ), bp_xprofile_get_field_types() );
+
+		if ( false === $type ) {
+			return;
+		}
+
+		$class = $current_field->type != $type ? 'display: none;' : '';
+		$text  = self::get_content( $current_field->id );
+
+		?>
+		<div id="<?php echo esc_attr( $type ); ?>" class="postbox bp-options-box" style="<?php echo esc_attr( $class ); ?> margin-top: 15px;">
+			<h3><?php esc_html_e( 'Use this field to write a text that should be displayed beside the checkbox:', 'buddypress' ); ?></h3>
+			<div class="inside">
+				<p>
+					<?php
+					$settings = array(
+						'media_buttons'    => false,
+						'wpautop'          => false,
+						'drag_drop_upload' => false,
+						'textarea_name'    => 'bp_xprofile_tos_content',
+						'textarea_rows'    => 4,
+						'quicktags'        => false,
+						'tinymce'          => array(
+							'toolbar1'  => 'bold, italic, underline, link',
+							'toolbar2'  => '',
+							'toolbar3'  => ''
+						),
+					);
+					wp_editor( stripslashes( $text ), 'bp_xprofile_tos_content', $settings );
+					?>
+				</p>
+			</div>
+		</div>
+		<?php
+	}
+
+	/**
+	 * Save settings from the field edit screen in the Dashboard.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param int   $field_id ID of the field.
+	 * @param array $settings Array of settings.
+	 * @return bool True on success.
+	 */
+	public function admin_save_settings( $field_id, $settings ) {
+		if ( isset( $_POST['bp_xprofile_tos_content'] ) ) {
+			bp_xprofile_update_meta( $field_id, 'field', 'bp_xprofile_tos_content', wp_kses_post($_POST['bp_xprofile_tos_content']) );
+		}
+
+		return true;
+	}
+
+	/**
+	 * Profile edit/register options html.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param array $args args.
+	 */
+	public function edit_field_options_html( array $args = array() ) {
+		$checkbox_acceptance = maybe_unserialize( \BP_XProfile_ProfileData::get_value_byid( $this->field_obj->id, $args['user_id'] ) );
+
+		if ( ! empty( $_POST[ 'field_' . $this->field_obj->id ] ) ) {
+			$new_checkbox_acceptance = $_POST[ 'field_' . $this->field_obj->id ];
+			$checkbox_acceptance     = ( $checkbox_acceptance != $new_checkbox_acceptance ) ? $new_checkbox_acceptance : $checkbox_acceptance;
+		}
+
+		$checkbox_acceptance = absint( $checkbox_acceptance );
+
+		$atts = array(
+			'type'  => 'checkbox',
+			'name'  => bp_get_the_profile_field_input_name(),
+			'id'    => bp_get_the_profile_field_input_name(),
+			'value' => 1,
+			'class' => 'bp-xprofile-tos-checkbox',
+		);
+
+		if ( $checkbox_acceptance == 1 ) {
+			$atts['checked'] = "checked";
+		}
+
+		$html = '<div class="bp-xprofile-checkbox-acceptance-field"><input ' . $this->get_edit_field_html_elements( $atts ) . ' />';
+		// we should most probably avoid kses  on output.
+		$html .= wp_kses_post( str_replace( array('<p>','</p>'), array('', ''), self::get_content( bp_get_the_profile_field_id() ) ) );
+
+		$html .= "</div>";
+		echo apply_filters( 'bp_get_the_profile_field_checkbox_acceptance', $html, $args['type'], $this->field_obj->id, $checkbox_acceptance );
+	}
+
+	/**
+	 * Check if field is valid?
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param string|int $values value.
+	 * @return bool
+	 */
+	public function is_valid( $value ) {
+		if ( empty( $value ) || 1 === $value ) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Modify the appearance of value.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param string $field_value Original value of field.
+	 * @param int    $field_id field id.
+	 *
+	 * @return string   Value formatted
+	 */
+	public static function display_filter( $field_value, $field_id = 0 ) {
+		return empty( $field_value ) ? __( 'No', 'buddypress' ) : __( 'Yes', 'buddypress' );
+	}
+
+	/**
+	 * Get the terms content.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @param BP_XProfile_Field $field field object.
+	 * @return string HTML output for the Checkbox Acceptance content.
+	 */
+	private static function get_content( $field_id = 0 ) {
+		if ( ! $field_id ) {
+			$field_id = bp_get_the_profile_field_id();
+		}
+
+		if ( ! $field_id ) {
+			return '';
+		}
+
+		return bp_xprofile_get_meta( $field_id, 'field', 'bp_xprofile_tos_content', true );
+	}
+}
