How to hide a field group fieldset programmatically in drupal 8? I have a Field Group fieldset named group_p_payment as machine name. I want to hide this based on the user. I tried the following code:

        $user = \Drupal::currentUser()-&gt;getRoles();
        if(!in_array("Administrator", $user) ||  !in_array("administer", $user)) {
         $form['group_p_payment']['#access'] = FALSE;
        }


But it didn't work it. How can I hide the fieldset?
The field group module is no longer storing grouped fields as a fieldset in Drupal 8. It's storing metadata on each group in an array called #fieldgroups which is used in a pre-render function.
The logic of the module doesn't render the fieldset if all its children elements aren't visible. Hence, you can hide all the children elements to have the same effect. For example:
foreach ($form['#fieldgroups']['group_p_payment']-&gt;children as $form_element_id) {
  $form[$form_element_id]['#access'] = FALSE;
}

The logic will have to change if you have nested groups, but the approach will remain the same.
Note that the above code can go in a form alter, but you should ensure that your form alter runs after Field Group does its work.
Here is complete working code, for a module named example in the example.module file:
/**
 * Implements hook_module_implements_alter().
 */
function example_module_implements_alter(&amp;$implementations, $hook) {
  if ($hook == 'form_alter' &amp;&amp; isset($implementations['example'])) {
    $hook_implementation = $implementations['example'];
    unset($implementations['example']);
    $implementations['example'] = $hook_implementation;
  }
}

/**
 * Implements hook_form_BASE_FORM_ID_alter() for node_form.
 */
function example_form_node_form_alter(&amp;$form, FormStateInterface $form_state, $form_id) {
  foreach ($form['#fieldgroups']['group_b_payment']-&gt;children as $form_element_id) {
    $form[$form_element_id]['#access'] = FALSE;
  }
}