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

# Activating Customers for Cards

> Get your account activated, collect each customer's acceptance of the Cards terms, and know when a customer can hold cards

<Warning>
  **Cards is available in sandbox only while we finish development.** Dakota enables Cards per
  account. The Cards endpoints are in the [API reference](/api-reference/introduction), marked
  **Sandbox only**. Endpoints, fields, and flows can still change before release.
</Warning>

A customer can hold cards once two things are true:

1. **Dakota has activated your account for Cards.** This happens once, for your whole account.
2. **The customer has accepted the Cards terms.** Each customer does this once, on a page Dakota hosts. You get the link from the API.

```mermaid theme={null}
flowchart TD
    A["Dakota activates your account<br/><i>once</i>"] --> C
    B["The customer completes onboarding<br/><i>existing flow</i>"] --> C
    C["GET /customers/{customer_id}/capabilities<br/><i>cards: action_required</i>"] --> D["You send the terms link to the customer"]
    D --> E["The customer accepts on Dakota's page"]
    E --> F["webhook customer.capability_status.updated<br/><i>cards: available</i>"]
```

## 1. Get your account activated

There is no API for this step. Contact your Dakota representative. Dakota configures whether your account issues cards to business customers, individual customers, or both.

* **Sandbox:** nothing is needed from you.
* **Production:** your company signs a cards program addendum and a marketing attestation.

Until your account is activated, every customer's Cards capability is `unavailable`.

## 2. Read the customer's Cards capability

The customer completes Dakota's normal [onboarding](/documentation/customer-onboarding) first. They can accept the Cards terms before their application is approved, and Dakota applies the acceptance on approval.

```json theme={null}
GET /customers/{customer_id}/capabilities

200 OK
{
  "capabilities": [
    {
      "capability": "cards",
      "status": "action_required",
      "requirements": [
        {
          "type": "terms_acceptance",
          "key": "cards_tos",
          "title": "Cards Terms of Service",
          "severity": "required",
          "url": "https://…/accept-agreements?token=…&documents=cards_tos"
        }
      ]
    }
  ]
}
```

| `status` | What you do |
| - | - |
| `action_required` | Send the customer the `url` of the `cards_tos` requirement. |
| `enabling` | The customer accepted. Wait for the webhook. |
| `available` | Create cardholders. |
| `unavailable` | Only Dakota can change this. See [Troubleshooting](#troubleshooting). |

`requirements` lists only what is still outstanding. Treat a requirement `type` you do not recognize as not satisfied.

## 3. Send the terms link

Send the `url` to the customer by email or in your app. The customer reads and accepts the terms on Dakota's page.

* **Only the customer can accept.** There is no API to accept on their behalf.
* **Send the link exactly as you received it.** Do not build or change it.
* **Read the link right before you send it.** It carries a token that expires. Dakota does not send a webhook when it reissues the link, so do not reuse a link from an earlier webhook.
* **An empty `url`** means the terms cannot be accepted online in this environment. Contact Dakota. Dakota can also record an acceptance the customer signed outside the hosted page.

In sandbox, you act as the customer: open the link and accept the terms yourself.

## 4. Wait for the capability to become available

The capability moves from `action_required` to `enabling`, then to `available`. The webhook fires for every capability, so filter on `capability: "cards"`:

```json theme={null}
{
  "type": "customer.capability_status.updated",
  "data": {
    "object": {
      "customer_id": "2tQRvD3xFcJ7bKpW9qNsT4hZmYr",
      "capability": "cards",
      "status": "available",
      "requirements": []
    }
  }
}
```

If you create a cardholder, enable a wallet, or create a card before the terms are accepted, Dakota returns `403 cards-tos-not-accepted`. Its `resolution_url` carries the same terms link.

## Troubleshooting

| What you see | What to do |
| - | - |
| `status: unavailable` with a `capability_enablement` requirement | Your account is not activated for Cards, or not for this customer type. Contact Dakota. This is never a task for the customer. |
| `403 cardholder-base-not-enabled` when you create a cardholder | Your account does not issue cards to this customer type. Contact Dakota. |
| `403 cards-capability-unavailable` | Something other than the terms is outstanding, and `errors` lists it. With no `errors`, the customer's setup is still completing: retry later, and contact Dakota if it persists. |
| `status: enabling` for more than a few minutes | Contact Dakota. The customer does not need to accept again. |
