> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mangopay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# View the SCA status of a User

> Retrieve SCA and consent information for a Natural or Legal User

This endpoint returns information for an `OWNER` user relating to:

* Whether or not they are enrolled in SCA – but if they never triggered an SCA enrollment, the endpoint returns a 404
* Their consent for your platform to take [SCA-triggering actions by proxy](/guides/sca/proxy-management), if activated for your platform

### Path parameters

<ParamField path="UserId" type="string" required>
  The unique identifier of the user.
</ParamField>

### Responses

<AccordionGroup>
  <Accordion title="200 - Response parameters" defaultOpen>
    <ResponseField name="UserStatus" type="string">
      **Returned values:** `PENDING_USER_ACTION`, `ACTIVE`, `CLOSED`

      The status of the user:

      * `PENDING_USER_ACTION` – The user must enroll in SCA before they can become `ACTIVE`.
      * `ACTIVE` – The user account is active and the user can access Mangopay features.
      * `CLOSED` – The user account is permanently closed. This value is used by Mangopay to close an account following the procedure outlined in the terms and conditions.
    </ResponseField>

    <ResponseField name="IsEnrolled" type="boolean">
      Whether or not the User has been enrolled in SCA. This value is `false` before the User enrolls successfully for the first time. Once enrolled, this value remains `true` during re-enrollment (but the `UserStatus` changes to `PENDING_USER_ACTION`).
    </ResponseField>

    <ResponseField name="LastEnrollmentDate" type="Unix timestamp | null">
      The date and time of the last successful SCA enrollment, whether for the first time or a re-enrollment.
    </ResponseField>

    <ResponseField name="LastConsentCollectionDate" type="Unix timestamp | null">
      The date and time of the last modification to any of the 4 scopes, whether to give or revoke consent.
    </ResponseField>

    <ResponseField name="ConsentScope" type="object">
      Whether or not the user has given consent to the [proxy action scope](/guides/sca/proxy-management) via the SCA hosted experience:

      * `ACTIVE` - The has given consent by checking the corresponding checkbox.
      * `INACTIVE` - The has not yet given consent or has revoked consent.
      * `null` – The corresponding scope corresponding scope does not have proxy management configured for your platform.

      If a scope is `ACTIVE`, your platform can call the relevant endpoint with `ScaContext` set to `USER_NOT_PRESENT` to take the action under proxy.

      If a scope is `INACTIVE`, your platform has two options:

      * Call the relevant endpoint with the user on session to complete SCA by redirecting them using the returned `PendingUserAction.RedirectUrl`.
      * Ask the user to give consent using the `PendingUserAction.RedirectUrl` returned by the [POST Manage proxy consent for a User](/api-reference/users/manage-proxy-consent) endpoint, then re-try the action with `ScaContext` set to `USER_NOT_PRESENT`.

      <Expandable title="properties" defaultOpen>
        <ResponseField name="ContactInformationUpdate" type="string | null">
          The status of the user's consent for your platform to update their SCA contact information on their behalf using:

          * [PUT Update a Natural User (SCA)](/api-reference/users/update-natural-user-sca) to modify the `PhoneNumber`, `PhoneNumberCountry`, or `Email`
          * [PUT Update a Legal User (SCA)](/api-reference/users/update-legal-user-sca) to modify the `PhoneNumber`, `PhoneNumberCountry`, or `Email` of the `LegalRepresentative`
        </ResponseField>

        <ResponseField name="RecipientRegistration" type="string | null">
          The status of the user's consent for your platform to register an external bank or payment account on their behalf using:

          * [POST Create a Recipient](/api-reference/recipients/create-recipient)
        </ResponseField>

        <ResponseField name="Transfer" type="string | null">
          The status of the user's consent for your platform to initiate a transfer to another `OWNER` user on their behalf using:

          * [POST Create a Transfer](/api-reference/transfers/create-transfer)
        </ResponseField>

        <ResponseField name="ViewAccountInformation" type="string | null">
          The status of the user's consent for your platform to retrieve wallet and transaction data on their behalf using:

          * [GET View a Wallet](/api-reference/wallets/view-wallet)
          * [GET List Wallets for a User](/api-reference/wallets/list-wallets-user)
          * [GET List Transactions for a User](/api-reference/transactions/list-transactions-user)
          * [GET List Transactions for a Wallet](/api-reference/transactions/list-transactions-wallet)
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Accordion>
</AccordionGroup>

<AccordionGroup>
  <Accordion title="404 - User hasn't started SCA enrollment (or doesn't exist)">
    ```json theme={null}
    {
        "Message": "The ressource does not exist",
        "Type": "ressource_not_found",
        "Id": "ebaaf922-771a-4142-a7a2-59d6c1fb422e",
        "Date": 1770130888.0,
        "errors": null
    }
    ```
  </Accordion>

  <Accordion title="400 - Not available for PAYER">
    ```json theme={null}
    {
        "Message": "This endpoint is not allowed for User categorized as PAYER",
        "Type": "not_allowed_for_user_category_payer",
        "Id": "8d708172-0196-47d1-be84-0c0a14aff2d8",
        "Date": 1765962571.0,
        "errors": null
    }
    ```
  </Accordion>
</AccordionGroup>

<ResponseExample>
  ```json Enrolled, 4 scopes activated but consent not given theme={null}
  {
      "UserStatus": "ACTIVE",
      "IsEnrolled": true,
      "LastEnrollmentDate": 1753385619,
      "LastConsentCollectionDate": null,
      "ConsentScope": {
          "ContactInformationUpdate": "INACTIVE",
          "RecipientRegistration": "INACTIVE",
          "Transfer": "INACTIVE",
          "ViewAccountInformation": "INACTIVE"
      }
  }
  ```

  ```json Enrolled, 2 scopes activated and consent given theme={null}
  {
      "UserStatus": "ACTIVE",
      "IsEnrolled": true,
      "LastEnrollmentDate": 1767102769,
      "LastConsentCollectionDate": 1767102769,
      "ConsentScope": {
          "ContactInformationUpdate": null,
          "RecipientRegistration": null,
          "Transfer": "ACTIVE",
          "ViewAccountInformation": "ACTIVE"
      }
  }
  ```

  ```json Re-enrollment triggered but not completed theme={null}
  {
      "UserStatus": "PENDING_USER_ACTION",
      "IsEnrolled": true,
      "LastEnrollmentDate": 1754654290,
      "LastConsentCollectionDate": null,
      "ConsentScope": {
          "ContactInformationUpdate": null,
          "RecipientRegistration": null,
          "Transfer": null,
          "ViewAccountInformation": null
      }
  }
  ```

  ```json Re-enrollment triggered but not completed theme={null}
  {
      "UserStatus": "PENDING_USER_ACTION",
      "IsEnrolled": false,
      "LastEnrollmentDate": null,
      "LastConsentCollectionDate": null,
      "ConsentScope": {
          "ContactInformationUpdate": null,
          "RecipientRegistration": null,
          "Transfer": null,
          "ViewAccountInformation": null
      }
  }
  ```
</ResponseExample>

<RequestExample>
  ```json REST theme={null}
  // GET has no body parameters
  ```

  ```java Java theme={null}
  import com.mangopay.MangoPayApi;
  import com.mangopay.entities.ScaStatus;

  public class GetScaStatusSimple {
      public static void main(String[] args) throws Exception {

          MangoPayApi mangopay = new MangoPayApi();
          mangopay.getConfig().setClientId("your-mangopay-client-id");
          mangopay.getConfig().setClientPassword("your-mangopay-api-key");

          String userId = "user_m_01JF7FKVP51PS3TYKCN79VZZ8M";
          ScaStatus sca = mangopay.getUserApi().getScaStatus(userId);

          System.out.println("User Status: " + sca.getUserStatus());
          System.out.println("Enrolled: " + sca.getIsEnrolled());
      }
  }
  ```

  ```js NodeJS theme={null}
  const mangopayInstance = require('mangopay4-nodejs-sdk')
  const mangopay = new mangopayInstance({
    clientId: 'your-mangopay-client-id',
    clientApiKey: 'your-mangopay-api-key',
  })

  const getUserScaStatus = async (userId) => {
    return await mangopay.Users.getScaStatus(userId)
      .then((response) => {
        console.info('SCA Status:', response)
        return response
      })
      .catch((err) => {
        console.error('Error fetching SCA status:', err)
        return false
      })
  }

  getUserScaStatus('user_m_01JF7FKVP51PS3TYKCN79VZZ8M')
  ```

  ```ruby Ruby theme={null}
  require 'mangopay'

  MangoPay.configure do |client|
    client.preproduction = true
    client.client_id = 'your-mangopay-client-id'
    client.client_apiKey = 'your-mangopay-api-key'
    client.log_file = File.join(Dir.pwd, 'mangopay.log')
  end

  def get_user_sca_status(user_id)
    begin
      response = MangoPay::User.get_sca_status(user_id)
      puts response
      return response
    rescue MangoPay::ResponseError => error
      puts "Failed: #{error.message}"
      puts "Error details: #{error.details}"
      return false
    end
  end

  get_user_sca_status("user_m_01JF7FKVP51PS3TYKCN79VZZ8M")

  ```

  ```python Python theme={null}
  import mangopay
  from mangopay.resources import ScaStatus
  from pprint import pprint

  mangopay.client_id = 'your-mangopay-client-id'
  mangopay.apikey = 'your-mangopay-api-key'

  sca_status = ScaStatus.get('user_m_01JF7FKVP51PS3TYKCN79VZZ8M')

  pprint(vars(sca_status))

  print(f"Is Enrolled: {sca_status.is_enrolled}")
  print(f"Status: {sca_status.user_status}")
  ```

  ```php PHP theme={null}
  <?php 

  require_once 'vendor/autoload.php';

  $api = new \MangoPay\MangoPayApi();
  $api->Config->ClientId = 'your-mangopay-client-id';
  $api->Config->ClientPassword = 'your-mangopay-api-key';

  try {
      $response = $api->Users->GetScaStatus('user_m_01JF7FKVP51PS3TYKCN79VZZ8M');

      print_r($response);

  } catch(\Exception $e) {
      print_r($e->getMessage());
  }
  ```

  ```csharp .NET theme={null}
  using MangoPay.SDK;
  using MangoPay.SDK.Entities.GET;
  using Newtonsoft.Json;

  class Program
  {
      static async Task Main(string[] args)
      {
          MangoPayApi api = new MangoPayApi();
          api.Config.ClientId = "your-mangopay-client-id";
          api.Config.ClientPassword = "your-mangopay-api-key";

          try
          {
              var scaStatus = await api.Users.GetScaStatusAsync("user_m_01JF7FKVP51PS3TYKCN79VZZ8M");

              string prettyPrint = JsonConvert.SerializeObject(scaStatus, Formatting.Indented);
              Console.WriteLine(prettyPrint);
          }
          catch (Exception ex)
          {
              Console.WriteLine($"Error: {ex.Message}");
          }
      }
  }
  ```
</RequestExample>
