# Enable capabilities

Request capabilities for accounts, fulfill requirements, and track the enablement lifecycle.

Capabilities move through a lifecycle from `pending` to `enabled`. Each capability has requirements that must be fulfilled before it can be enabled. These include account profile data, [identity verification](/guides/accounts/requirements/identity-verification/), and [underwriting](/guides/accounts/requirements/underwriting/).

Every payment method requires certain capabilities. Visit the [payment methods](/guides/money-movement/payment-methods/) guide for details.

## Request capabilities

You can request capabilities when creating an account or at any point after. The [capabilities reference](/guides/accounts/capabilities/reference/) lists all available capabilities and their use cases.

### Request via API

The following examples demonstrate how to request capabilities after an account has been created.

```zsh
curl -X POST "https://api.moov.io/accounts/{accountID}/capabilities" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2024.01.00" \
  --data-raw '{\n    "capabilities": [\n      "transfers", \n      "send-funds.ach", \n      "collect-funds.ach", \n      "wallet.balance"\n    ]\n  }'\
```

```go
mc, _ := moov.NewClient()

var accountID string

mc.RequestCapabilities(ctx, accountID,
  []moov.CapabilityName{
    moov.CapabilityName_Transfers,
    moov.CapabilityName_SendFundsACH,
    moov.CapabilityName_CollectFundsACH,
    moov.Capability_NameWalletBalance,
  },
)
```

```javascript
const moov = Moov(token);

const accountID = "accountID";
const capabilities = [
  "send-funds.ach", 
  "collect-funds.ach"
];

moov.accounts.capabilities.request({accountID, capabilities});
```

## Requirements

After requesting a capability, Moov determines what requirements must be fulfilled based on the capability type and whether the account is an individual or business.

Requirements fall into two categories:

- **Verification:** Confirms the account holder's identity. This includes basic account data (name, address, tax ID) and may require document uploads. See the [identity verification](/guides/accounts/requirements/identity-verification/) guide.
- **Underwriting:** Assesses the account's risk profile and expected transaction volume. Required for most payment capabilities. See the [underwriting](/guides/accounts/requirements/underwriting/) guide.

The `transfers` capability is automatically enabled with no additional requirements. The `wallet.balance` capability only requires verification.

## Capability lifecycle

Each capability moves through statuses based on whether its requirements have been fulfilled and verified.

| Status      | Description                                                                                                    |
|-------------|----------------------------------------------------------------------------------------------------------------|
| `pending`   | Capability requested but requirements not yet met. Required information may be missing or verification failed. |
| `in-review` | All requirements fulfilled. Moov is verifying the information through compliance checks.                       |
| `enabled`   | All requirements satisfied and verified. The capability is active and can be used in production.               |
| `disabled`  | Capability turned off. May be due to a Moov compliance action or disabled via API/Dashboard.                   |

## Manage capabilities

Track the status of each capability and its requirements with the [capabilities API](/api/moov-accounts/capabilities/) or Dashboard.

### Get capability details

Use the capabilities `GET` [endpoint](/api/moov-accounts/capabilities/list/) to retrieve capabilities for an account.

| Field                                  | Description                                                    |
|----------------------------------------|----------------------------------------------------------------|
| `capability`                           | The capability key (for example, `collect-funds.ach`)          |
| `status`                               | Current status (`pending`, `in-review`, `enabled`, `disabled`) |
| `requirements.currentlyDue`            | List of outstanding requirements                               |
| `requirements.errors`                  | Array of errors encountered during verification                |
| `disabledReason`                       | If disabled, the reason (for example, `risk action`)           |
| `createdOn`, `updatedOn`, `disabledOn` | Lifecycle timestamps                                           |

```json
{
  "capability": "collect-funds.ach",
  "accountID": "670356c4-bd3c-414b-9709-c4dc84752902",
  "status": "pending",
  "requirements": {
    "currentlyDue": [
      "document.business.verification"
    ],
    "errors": [
      {
        "requirement": "business.legalname",
        "errorCode": "failed-automatic-verification"
      }
    ]
  },
  "createdOn": "2025-05-13T19:46:53Z",
  "updatedOn": "2025-05-13T19:50:58Z"
}
```

After requesting capabilities, certain business types must provide Moov with a list of [beneficial owners](/guides/accounts/account-types/#beneficial-ownership).

## Webhooks

Set up a `capability.updated` [webhook](/guides/webhooks/webhook-events/#capabilities) to listen for capability status changes. Webhooks enable real-time UI updates or automated handling, such as prompting users to provide missing information.

The Dashboard also displays notices when an account has outstanding requirements.
