# List accounts — GET /v1/billing/accounts

URL: https://docs.hanzo.ai/docs/openapi/billing/get-billing-accounts

> Answers the caller's billing accounts: the org itself, its currency, when it was opened, and the caller's own standing in it.

`GET /v1/billing/accounts`

> [Billing →](https://docs.hanzo.ai/docs/openapi/billing) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                            |
| ------------- | ------------------------------------------ |
| **Address**   | `https://api.hanzo.ai/v1/billing/accounts` |
| **Method**    | `GET`                                      |
| **Operation** | `get_billing_accounts`                     |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`     |

Answers the caller's billing accounts: the org itself, its currency, when it
was opened, and the caller's own standing in it.

The standing is the caller's, resolved from the validated principal here and
sent to the store rather than looked up there — the membership roster is IAM's
and commerce keeps none, so a callee that answered "what role is this" would
be inventing it. An anonymous read gets the account with no role rather than
an implied membership.

Scoped to the caller's own org, which is the whole tenancy story: there is no
org field on the wire and none on the input.

A named handler, not a closure, so zipdoc can lift this prose into the registry.

## Request

`GET /v1/billing/accounts` takes no parameters and no body — the credential is the whole request.

## Response

| Status    | Body                      | Meaning |
| --------- | ------------------------- | ------- |
| `200`     | billing.BillingAccount\[] | ok      |
| `default` | problem-details           | refused |

`200` body — 7 fields.

| Field          | In   | Type   | Always | Description                    |
| -------------- | ---- | ------ | ------ | ------------------------------ |
| `[].createdAt` | body | string | —      |                                |
| `[].currency`  | body | string | —      |                                |
| `[].id`        | body | string | —      |                                |
| `[].name`      | body | string | —      |                                |
| `[].orgId`     | body | string | —      |                                |
| `[].orgName`   | body | string | —      |                                |
| `[].role`      | body | string | —      | Role is the caller's standing. |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo billing accounts list
```

**SDK**

**.ts**

```ts
import { Configuration, BillingApi } from 'hanzoai';

const api = new BillingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.getBillingAccounts();
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import BillingApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = BillingApi(client).get_billing_accounts()
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.BillingAPI.GetBillingAccounts(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, billing_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = billing_api::get_billing_accounts(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.BillingApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new BillingApi(client).getBillingAccounts();
```

**HTTP**

```bash
curl https://api.hanzo.ai/v1/billing/accounts \
  -H "Authorization: Bearer $HANZO_API_KEY"
```

**MCP**

MCP reaches **billing** through the `billing` tool, which names its 39 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_billing_accounts"
         }
       }
     }'
```

---

[Billing API](https://docs.hanzo.ai/docs/openapi/billing) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
