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

# Access Control Level Contract

> Overview of the on-chain Access Control Level (ACL) smart contract.

The Access Control Level Contract is an on-chain component which can be used to manage user permissions based on compliance status. It enables your application to determine whether a user has passed specific verification steps, by checking against the on-chain access levels assigned through the Forte Compliance widget flow.\
\
This contract is especially useful for enforcing compliance logic directly within your dApp or smart contracts—such as allowing verified users to access payment flows.

## Deployment Details

> Network: Base Sepolia
>
> Contract Address: `Contract Address will be provided directly by Forte team`
>
> Status: Verified & Published

<Info>
  **Who can set Access Levels?**

  Only the Forte Compliance widget is authorized to set or remove access levels. When a user completes a required compliance check, the system updates their access level on-chain using this contract. This creates a transparent, verifiable source of truth that can be queried by any smart contract or application.
</Info>

## Retrieving a User’s Access Level

To check a user’s access level, call the `getAccessLevel` function, passing in their wallet address. This is a read-only function that can be queried on-chain or from your dApp's frontend.

> *function getAccessLevel(address \_account) public view returns (uint256)*

### Expected Output

This function will return a uint8 value:

* `0`: Indicates that the user has not been verified.
* `1-3`: Indicates the Access Level the user has reached through the Forte Compliance widget.

<Tip>
  You can integrate this function into your dApp frontend using [ethers.js](http://ethers.js), or [web3.js](http://web3.js)  to dynamically allow/disallow actions based on access level.
</Tip>

### ABI Definition

```javascript theme={null}
{
  "type": "function",
  "name": "getAccessLevel",
  "inputs": [
    {
      "name": "_account",
      "type": "address",
      "internalType": "address"
    }
  ],
  "outputs": [
    {
      "name": "",
      "type": "uint256",
      "internalType": "uint256"
    }
  ],
  "stateMutability": "view"
}
```
