diff --git a/src/bp-xprofile/bp-xprofile-functions.php b/src/bp-xprofile/bp-xprofile-functions.php
index 060b2ff61..3e036cda6 100644
--- a/src/bp-xprofile/bp-xprofile-functions.php
+++ b/src/bp-xprofile/bp-xprofile-functions.php
@@ -159,6 +159,7 @@ function bp_xprofile_get_field_types() {
 		'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 a/src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php b/src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php
new file mode 100644
index 000000000..e6708c25c
--- /dev/null
+++ b/src/bp-xprofile/classes/class-bp-xprofile-field-type-checkbox-acceptance.php
@@ -0,0 +1,278 @@
+<?php
+/**
+ * BuddyPress XProfile Classes.
+ *
+ * @package BuddyPress
+ * @subpackage XProfileClasses
+ * @since 8.0.0
+ */
+
+
+// Exit if accessed directly.
+defined( 'ABSPATH' ) || exit;
+
+/**
+ * Tos field.
+ */
+class BP_XProfile_Field_Type_Checkbox_Acceptance extends BP_XProfile_Field_Type {
+
+	/**
+	 * Constructor for the textarea 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 field type Checkbox Acceptance.
+		 */
+		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 id="<?php bp_the_profile_field_input_name(); ?>-1">
+			<?php bp_the_profile_field_name(); ?>
+			<?php bp_the_profile_field_required_label(); ?>
+		</legend>
+
+		<?php do_action( bp_get_the_profile_field_errors_action() ); ?>
+
+		<?php bp_the_profile_field_options( "user_id={$user_id}&required={$required}" ); ?>
+
+		<?php if ( bp_get_the_profile_field_description() ) : ?>
+            <p class="description"
+               id="<?php bp_the_profile_field_input_name(); ?>-3"><?php bp_the_profile_field_description(); ?></p>
+		<?php endif; ?>
+
+		<?php
+	}
+
+	/**
+	 * Field html for Admin-> User->Profile Fields screen.
+	 *
+	 * @param array $raw_properties properties.
+	 *
+	 * @since 8.0.0
+	 */
+	public function admin_field_html( array $raw_properties = array() ) {
+		global $field;
+
+		$text = wp_kses_data( self::get_content( $field ) );
+
+		$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.
+	 *
+	 * @param BP_XProfile_Field $current_field profile field object.
+	 * @param string             $control_type type.
+	 *
+	 * @since 8.0.0
+	 */
+	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 );
+
+		?>
+        <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.
+	 *
+	 * @param int   $field_id ID of the field.
+	 * @param array $settings Array of settings.
+	 * @return bool True on success.
+	 *
+	 * @since 8.0.0
+	 */
+	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.
+	 *
+	 * @param array $args args.
+	 *
+	 * @since 8.0.0
+	 */
+	public function edit_field_options_html( array $args = array() ) {
+		global $field;
+
+		$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( $field ) ) );
+
+		$html .= "</div>";
+		echo apply_filters( 'bp_get_the_profile_field_checkbox_acceptance', $html, $args['type'], $this->field_obj->id, $checkbox_acceptance );
+		?>
+    	<?php
+	}
+
+	/**
+	 * Check if field is valid?
+	 *
+	 * @param string|int $values value.
+	 *
+	 * @since 8.0.0
+	 *
+	 * @return bool
+	 */
+	public function is_valid( $values ) {
+
+		if ( empty( $values ) || 1 == $values ) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * Modify the appearance of value.
+	 *
+	 * @param string $field_value Original value of field.
+	 * @param int    $field_id field id.
+	 *
+	 * @return string   Value formatted
+	 *
+	 * @since 8.0.0
+	 */
+	public static function display_filter( $field_value, $field_id = 0 ) {
+		return empty( $field_value ) ? __( 'No', 'buddypress' ) : __( 'Yes', 'buddypress' );
+	}
+
+	/**
+	 * Get the terms content.
+	 *
+	 * @param BP_XProfile_Field $field field object.
+	 *
+	 * @return string
+	 *
+	 * @since 8.0.0
+	 */
+	private static function get_content( $field = null ) {
+
+		if ( ! $field ) {
+			$field_id = bp_get_the_profile_field_id();
+		} else {
+			$field_id = $field->id;
+		}
+
+		if ( ! $field_id ) {
+			return '';
+		}
+
+		return bp_xprofile_get_meta( $field_id, 'field', 'bp_xprofile_tos_content', true );
+	}
+}
