# Account

Accounts represent a legal entity (either a business or an individual) in Moov. You can create an account for yourself or set up accounts for others. You can retrieve an account to get details on the business or individual account holder, such as an email address or employer identification number (EIN). You can also look at the account object to see what capabilities that account has.

## [Create account](#create-account)

You can create accounts for your users by passing the required information to Moov. Note, [capabilities](/guides/accounts/capabilities/) can be requested during account creation, or you can [request](/moovjs/accounts/capabilities/) capabilities as needed later on.

To create an account, you'll need to specify the `/accounts.write` scope when generating a token.

#### [Parameters](#parameters)

| Name      | Type                                           |
|-----------|------------------------------------------------|
| `account` | [Account](/api/moov-accounts/accounts/create/) |

```javascript
const updatedAccount = {
  "accountType": "business",
  "profile": {
    "business": {
      "legalBusinessName": "ClassBooker",
      "businessType": "llc",
    }
  } 
};
moov.accounts.update(updatedAccount);
```

## [Get account](#get-account)

Retrieves details for the account with the specified ID.

To retrieve an account, you'll need to specify the `/accounts/{accountID}/profile.read` scope when generating a token.

#### [Parameters](#parameters-1)

| Name        | Type   |
|-------------|--------|
| `accountID` | string |

```javascript
moov.accounts.get({accountID});
```

## [Update account](#update-account)

If an account's details have changed, you can update the information associated with a specific account ID.

To update an account, you'll need to specify the `/accounts/{accountID}/profile.write` scope when generating a token.

#### [Parameters](#parameters-2)

| Name        | Type                                          |
|-------------|-----------------------------------------------|
| `accountID` | string                                        |
| `account`   | [account](/api/moov-accounts/accounts/patch/) |

## [Platform terms of service agreement](#platform-terms-of-service-agreement)

Each account using the `wallet.balance`, `card-issuing` (beta), or at least one `send-funds`, or `collect-funds` capabilities must agree to Moov's terms of service before a transfer can be created with that account. In your application, you must display a link to the [Moov platform agreement](https://moov.io/legal/platform-agreement/), and the terms must be accepted by the user.

To accept the platform agreement terms of service via Moov.js, you can pass the `accountID` into the following method. This will generate a terms of service token and update the account in one step.

| Name        | Type   |
|-------------|--------|
| `accountID` | string |

```javascript
 moov.accounts.acceptTermsOfService({ accountID: "..." } );
```

If you need to generate a terms of service token to pass to the Moov API, you can call the following method.

```javascript
 moov.accounts.getTermsOfServiceToken();
```

If needed, you can manually enter the terms of service information via Moov's API with the accounts `POST` [endpoint](/api/moov-accounts/accounts/create/) when creating an account, or with the accounts `PATCH` [endpoint](/api/moov-accounts/accounts/patch/) when updating an account.

Check out out our pre-built [terms of service](/moovjs/drops/terms-of-service/) Drop. With the pre-built user interface, you can integrate our privacy policy and terms of service while simultaneously generating a token that can be patched to the account.
