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

# Billing and fees

> Configure billing methods and fee rates, and submit or cancel manual billing charges for end-client accounts.

Plan your billing and fee strategy before onboarding clients. Fees are configured per account and billed either automatically each cycle or manually through the API.

## How it works

<Steps>
  <Step title="Configure fees at account creation">
    Set the billing method (automated or manual) and fee rates when you create an account, or leave them to configure later.
  </Step>

  <Step title="Fees accrue daily">
    Each fee accrues daily based on average assets under custody (AUC). The current accrual is visible on the account via `accruedFees`.
  </Step>

  <Step title="Fees post monthly">
    On the 1st of the month, the prior period's fees post to the ledger as a pending transaction.
  </Step>

  <Step title="Billing finalizes">
    After a dispute period, fees are finalized and withdrawn on the 10th business day.
  </Step>
</Steps>

<Note>
  You can also submit or cancel charges outside the automated cycle — see [Submit a manual billing charge](#step-1-submit-a-manual-billing-charge) below.
</Note>

***

## Billing methods

| Method            | Description                                                                                       |
| :---------------- | :------------------------------------------------------------------------------------------------ |
| Automated billing | Fees configured at account creation. Billed automatically each cycle.                             |
| Manual billing    | Submitted by the wealth manager via the manual billing API endpoint before the 10th business day. |

## Fee model

| Model                       | Description                                                                                                                                                            |
| :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Bundled                     | Single "management fee" line item on the program customer's statement. Anchorage Digital's custody fee is deducted from the overall fee charged to the wealth manager. |
| Fully disclosed (unbundled) | Each fee type (custody, management, advisory, model) appears as a separate line item on the program customer's statement.                                              |

## Fee types

| Fee type         | Details                                                                                                                                                                                                                        |
| :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `CUSTODY_FEE`    | Configured by Anchorage Digital during wealth manager onboarding. Rate may change based on total AUC per agreed commercial terms. Not configurable via API. Calculated from end-of-day USD value averaged over the fee period. |
| `MANAGEMENT_FEE` | Fee charged by the wealth manager for managing client assets (typically 1–2% of AUM with minimums).                                                                                                                            |
| `ADVISORY_FEE`   | Configured via API at account creation. Used for third-party wealth manager fees; otherwise set to `0`.                                                                                                                        |
| `MODEL_FEE`      | Configured via API at account creation. Used for model fees.                                                                                                                                                                   |

## Fee visibility — `isBillable`

| Value               | Behavior                                                                                                                                                                                                                   |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `isBillable: true`  | Fee accrues daily AND is billed to the end-client account monthly. Shows as a separate line item on statements. Fees appear on the 1st of the month. Custody fee defaults to `true` for unbundled billing models.          |
| `isBillable: false` | Fee accrues daily but is NOT billed to the account monthly. Does not appear on statements. Accrued balances are available via API. Useful for tracking internal fee distributions from a single management fee remittance. |

## Fee accruals

Each account includes an `accruedFees` section showing estimated fees based on average AUC — not actual point-in-time fees.

<Note>
  `accruedValue` represents the average fee accrued based on days elapsed and average AUC. It is **not** the actual fees charged based on prior day accruals, and should not be used to display mid-month "performance net of fees" estimates.
</Note>

Key fields in `accruedFees`:

| Field               | Description                                                    |
| :------------------ | :------------------------------------------------------------- |
| `startPeriod`       | Billing month start date.                                      |
| `endPeriod`         | Billing month end date.                                        |
| `accruedValue`      | Accrued fee value to date for the billing period.              |
| `rate`              | Fee rate as a decimal (e.g., `0.01` = 1%).                     |
| `type`              | Fee type corresponding to the `accruedFee` object.             |
| `totalBalanceInUSD` | Most recent AUC balance in USD used to calculate accrued fees. |
| `state`             | `ONGOING` — still accruing. `DONE` — billing period closed.    |

```json Example account with fee accruals theme={null}
{
  "createdAt": "2025-02-01T19:11:06.390Z",
  "customerId": "9bcbbb3136356ff85670085f64cfb4f53419a94277261be0094c4d97de71a4yb",
  "externalSubaccountId": "1A-13579-Doe",
  "fees": [
    { "isBillable": true, "rate": 0, "startDate": "2024-08-02", "type": "ADVISORY" },
    { "isBillable": false, "rate": 0.0025, "startDate": "2024-11-20", "type": "CUSTODY" },
    { "isBillable": true, "rate": 0, "startDate": "2024-08-02", "type": "MANAGEMENT" },
    { "isBillable": true, "rate": 0, "startDate": "2024-08-02", "type": "MODEL" }
  ],
  "name": "1A-13579-Doe",
  "subaccountId": "99fc9d84-4843-4a2c-95cc-1d90385c7955",
  "accruedFees": [
    {
      "accruedValue": "2982.05",
      "endPeriod": "2025-01-31",
      "rate": 0.351,
      "startPeriod": "2025-01-01",
      "state": "DONE",
      "totalBalanceInUSD": "100032.1",
      "type": "CUSTODY"
    },
    {
      "accruedValue": "1731.5",
      "endPeriod": "2025-02-18",
      "rate": 0.351,
      "startPeriod": "2025-02-01",
      "state": "ONGOING",
      "totalBalanceInUSD": "100031.22",
      "type": "ADVISORY"
    }
  ],
  "balances": [
    { "assetType": "BTC", "availableForTrading": "0.00018915", "availableForWithdrawal": "0.00018915", "totalBalance": "0.00032102" },
    { "assetType": "ETH", "availableForTrading": "0.19400093", "availableForWithdrawal": "0", "totalBalance": "0" },
    { "assetType": "USD", "availableForTrading": "87676.46", "availableForWithdrawal": "87676.46", "totalBalance": "100000" }
  ]
}
```

<Warning>
  `accruedValue` = (AvgAUC × feeRate) × (numberOfDays / 365)

  Avg AUC is calculated from `totalBalance`. This is an estimate — do not use to calculate performance net of fees.
</Warning>

## Billing lifecycle

1. **Month 1, day 1** — Billing period starts. `accruedFee` begins calculating end of day. `state: ONGOING`.
2. **Month 1, days 2–30** — `accruedFee` reflects daily accrual from day 2.
3. **Month 1, last day** — Billing period closes. `state: DONE`.
4. **Month 2, day 1** — Fee transaction appears on the ledger at 8:00 AM ET as `PENDING`.
5. **Month 2, days 2–9th business day** — Billing dispute period. Contact your account point of contact with any questions.
6. **Month 2, 10th business day** — Billing finalized. Account transaction updates to `POSTED`. Fees withdrawn; wealth manager remittance begins. Updates at 8:00 AM ET.

Pro-rated fees apply to accounts with mid-month start dates.

## Additional billing considerations

1. **Manual billing** must be submitted via API before the 10th business day.
2. **Cash management** — Keep 3 months of USD in the account to avoid liquidation events that trigger taxable events.
3. **0-rate fees** — No accrual or transaction posted if rate is `0`.
4. **Negative USD balances** — If USD balance goes negative mid-month, it must be offset before the 10th business day.
5. **Rate changes** — Anchorage Digital emails end clients when fees with `isBillable: true` are created or changed.
6. **Fee rate format** — Configure as a decimal: `1% = 0.01`.

***

## Integration steps

Use manual billing when the wealth manager — not Anchorage Digital's AUC-based accrual — determines what to charge each end client. This applies to `ADVISORY`, `MODEL`, and `MANAGEMENT` fees only. Custody fees are set by Anchorage Digital and are never charged manually.

### Step 1: Submit a manual billing charge

**`POST /v2/subaccounts/billing/charges`**

| Field                  | Description                                | Required | Type                                    |
| :--------------------- | :----------------------------------------- | :------- | :-------------------------------------- |
| `idempotentId`         | Unique ID to prevent duplicate submissions | Yes      | String                                  |
| `feeType`              | Fee type for this batch                    | Yes      | Enum: `ADVISORY`, `MODEL`, `MANAGEMENT` |
| `interval`             | Billing period this charge covers          | Yes      | Object with `startDate` and `endDate`   |
| `charges`              | Charges to create, up to 100 per request   | Yes      | Array                                   |
| `charges/subaccountId` | Account to charge                          | Yes      | String                                  |
| `charges/amount`       | Amount to charge, in USD                   | Yes      | String                                  |

Each request applies a single `feeType` and `interval` across all charges in the batch — submit separate requests to bill different fee types or periods in the same call.

<CodeGroup>
  ```bash Request theme={null}
  curl --request POST \
       --url https://api.anchorage-staging.com/v2/subaccounts/billing/charges \
       --header 'Api-Access-Key: {API Key}' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '{
    "idempotentId": "b6e1a9b2-5b64-4e6e-9b7a-6b6b6b6b6b6b",
    "feeType": "MANAGEMENT",
    "interval": {
      "startDate": "2025-02-01",
      "endDate": "2025-02-28"
    },
    "charges": [
      { "subaccountId": "cb80459c-a930-444e-8f17-69ba9d0e122f", "amount": "1000.00" }
    ]
  }'
  ```

  ```json Response theme={null}
  {
    "data": {
      "ids": ["9f4b2b3a-1c2d-4e5f-8a9b-0c1d2e3f4a5b"]
    }
  }
  ```
</CodeGroup>

<Note>
  Manual charges debit the account immediately and appear on the statement dated the day the charge is submitted — they don't wait for the standard month-end billing cycle. A charge can only be canceled before it's finalized.
</Note>

### Step 2: Cancel a charge (before it's finalized)

**`DELETE /v2/subaccounts/billing/charges/{chargeId}`**

Use the ID returned in Step 1.

<CodeGroup>
  ```bash Request theme={null}
  curl --request DELETE \
       --url https://api.anchorage-staging.com/v2/subaccounts/billing/charges/9f4b2b3a-1c2d-4e5f-8a9b-0c1d2e3f4a5b \
       --header 'Api-Access-Key: {API Key}' \
       --header 'accept: application/json'
  ```

  ```json Response theme={null}
  {
    "data": {
      "success": true
    }
  }
  ```
</CodeGroup>

### Step 3: Update fee rates or billing dates

**`PATCH /v2/subaccounts/accounts/{subaccountId}`**

* Updates trigger email notifications to end clients and the wealth manager (including sandbox).
* Updated rates apply from the `startDate` specified.
* Mid-cycle updates retroactively apply to the current billing period.
* End-of-month billing uses the latest rate set for that month.

<CodeGroup>
  ```bash Request theme={null}
  curl --request PATCH \
       --url https://api.anchorage-staging.com/v2/subaccounts/accounts/cb80459c-a930-444e-8f17-69ba9d0e122f \
       --header 'Api-Access-Key: [API Key]' \
       --header 'accept: application/json' \
       --header 'content-type: application/json' \
       --data '{
    "fees": [
      { "type": "ADVISORY", "rate": 0.01, "startDate": "2025-02-20" }
    ]
  }'
  ```

  ```json Response theme={null}
  {
    "data": {
      "subaccountId": "cb80459c-a930-444e-8f17-69ba9d0e122f"
    }
  }
  ```
</CodeGroup>
