Enable capabilities

Request capabilities for an account, fulfill the requirements Moov returns, and track each capability from pending to enabled.

You need an existing account and, for client-side calls, the /accounts/{accountID}/capabilities.write scope. The capabilities reference lists every capability, what it unlocks, and its requirements. To see which capabilities each payment method needs, see payment methods.

Request capabilities

You can request capabilities when you create the account or at any point after.

Open the account, select the Capabilities tab, and request the capabilities you need. The tab shows each capability's status and its outstanding requirements.
curl -X POST "https://api.moov.io/accounts/{accountID}/capabilities" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00" \
  --data-raw '{
    "capabilities": [
      "transfers", 
      "send-funds.ach", 
      "collect-funds.ach", 
      "wallet.balance"
    ]
  }'

The response lists each requested capability with its status and requirements.currentlyDue.

Fulfill requirements

Moov returns the requirements for each capability based on the capability and whether the account is an individual or business. Fulfill everything in requirements.currentlyDue.

Requirement Applies to How to fulfill
Verification (KYC/KYB) Every capability except transfers Send profile data (name, address, tax ID, birth date) with the accounts PATCH endpoint. Upload documents if Moov asks for them.
Business representatives Business accounts Add a controller and all owners with 25% or more, then set ownersProvided: true.
Underwriting Every capability except transfers and wallet.balance Submit fields with the underwriting POST endpoint.
Platform agreement Every capability except transfers Send a terms of service token or manual acceptance on the account.

New requirements can appear after you submit data, for example when underwriting values exceed the lowest tier. Check the capability again after each submission.

Check capability status

Each capability moves through these statuses:

Status Meaning
pending Requirements are missing or failed verification. Check requirements.currentlyDue and requirements.errors.
in-review All requirements are fulfilled and Moov is reviewing them.
enabled The capability is active.
disabled The capability was turned off by Moov (for example, a risk action) or by you through the API or Dashboard. See disabledReason.

Use the list capabilities GET endpoint for all capabilities on an account, or the retrieve capability GET endpoint for one.

curl -X GET "https://api.moov.io/accounts/{accountID}/capabilities" \
  -H "Authorization: Bearer {token}" \
  -H "x-moov-version: v2026.07.00"
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
{
  "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"
}
{
  "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"
}

In the Dashboard, accounts with outstanding requirements show an action-needed indicator in the accounts list and a banner on the account page.

Listen for status changes

Subscribe to the capability.requested and capability.updated webhooks to react when a capability changes status, for example to prompt the account holder for missing information.

Next steps