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

# Get billing

> Whether the client pays you, how much, and when.

Whether the client pays you, how much, and when.

Use your account-wide API key. A client’s own key gets `403` here. See [Invoicing](/guides/invoicing).

## Path parameters

<ParamField path="id" type="string" required>
  The client’s `id`.
</ParamField>

## Response

<ResponseField name="billing" type="object">
  Their billing, or `null` while you pay for them.
</ResponseField>

<ResponseField name="billing.status" type="string">
  `sent` (link not paid yet), `active`, or `past_due`.
</ResponseField>

<ResponseField name="billing.email" type="string">
  Where the link and receipts go.
</ResponseField>

<ResponseField name="billing.price_usd" type="number">
  What they pay each month, before AI.
</ResponseField>

<ResponseField name="billing.ai_usd" type="number">
  Their monthly AI amount, billed at cost. `0` when none.
</ResponseField>

<ResponseField name="billing.setup_fee_usd" type="number">
  The one-time fee charged with the first month.
</ResponseField>

<ResponseField name="billing.payment_link_url" type="string">
  The link while it waits to be paid, else `null`.
</ResponseField>

<ResponseField name="billing.current_period_end" type="string">
  When the paid month ends.
</ResponseField>

<ResponseField name="billing.ends_at_period_end" type="boolean">
  `true` once you stop billing: it ends with the paid month.
</ResponseField>

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://www.orgo.ai/api/v1/accounts/$CLIENT_ID/billing \
    -H "Authorization: Bearer $ORGO_API_KEY"
  ```

  ```python Python theme={null}
  import os
  import requests

  client_id = os.environ["CLIENT_ID"]

  res = requests.get(
      f"https://www.orgo.ai/api/v1/accounts/{client_id}/billing",
      headers={"Authorization": f"Bearer {os.environ['ORGO_API_KEY']}"},
  )
  print(res.json())
  ```

  ```javascript JavaScript theme={null}
  const clientId = process.env.CLIENT_ID;

  const res = await fetch(`https://www.orgo.ai/api/v1/accounts/${clientId}/billing`, {
    headers: { Authorization: `Bearer ${process.env.ORGO_API_KEY}` },
  });
  console.log(await res.json());
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "billing": {
    "status": "active",
    "email": "billing@acme.com",
    "price_usd": 250,
    "setup_fee_usd": 0,
    "ai_usd": 40,
    "payment_link_url": null,
    "current_period_end": "2026-11-01T09:00:00Z",
    "ends_at_period_end": false
  }
}
```

## Errors

| Status | Body | Meaning |
| - | - | - |
| `401` | `{ "error": "Invalid API key" }` | No key, or not one of yours. |
| `403` | `{ "error": "Use your account-wide API key to manage accounts. Workspace keys can’t." }` | A client’s own key, or any key scoped to one workspace. |
| `403` | `{ "error": "Invoicing is on every paid plan. Upgrade to use it." }` | You’re on the Free plan. `code` is `UPGRADE_REQUIRED`. |
| `404` | `{ "error": "Account not found." }` | No client with this id is yours. |
| `409` | `{ "error": "This account is closed." }` | The client is closed. `code` is `ACCOUNT_CLOSED`. |
| `409` | `{ "error": "This account was transferred to your client." }` | The client accepted a transfer and owns it now. `code` is `ACCOUNT_TRANSFERRED`. |


## OpenAPI

````yaml GET /v1/accounts/{id}/billing
openapi: 3.1.0
info:
  title: Orgo API
  description: >-
    Launch cloud computers that AI agents can control and interact with. Create
    workspaces, provision computers, and control them programmatically.
  version: 2.0.0
  contact:
    name: Orgo Support
    email: spencer@orgo.ai
    url: https://orgo.ai
servers:
  - url: https://www.orgo.ai/api
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Account
    description: >-
      Account capacity: how many computers an account may run, and adding or
      giving back more.
  - name: Clients
    description: >-
      Run Orgo for your clients from your own app: a workspace and scoped key
      each, billed to you or to them.
  - name: Workspaces
    description: Organize computers into named workspaces
  - name: Computers
    description: Provision and manage virtual computers
  - name: Computer Lifecycle
    description: Start, stop, and restart computers
  - name: Computer Actions
    description: Control mouse, keyboard, and execute commands
  - name: Screens
    description: >-
      More than one desktop on a single computer. Each screen is its own X
      server with its own cursor and window manager, so an agent working on one
      cannot disturb another.
  - name: Files
    description: Upload and download files
  - name: Templates
    description: Author, build, and launch reproducible computers from templates
paths:
  /v1/accounts/{id}/billing:
    get:
      tags:
        - Clients
      summary: Get billing
      description: Whether the client pays you, how much, and when.
      operationId: getClientBilling
      parameters:
        - name: id
          in: path
          required: true
          description: The client’s `id`.
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              example:
                billing:
                  status: active
                  email: billing@acme.com
                  price_usd: 250
                  setup_fee_usd: 0
                  ai_usd: 40
                  payment_link_url: null
                  current_period_end: '2026-11-01T09:00:00Z'
                  ends_at_period_end: false
              schema:
                $ref: '#/components/schemas/BillingEnvelope'
        '401':
          description: No key, or not one of yours.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                e1:
                  summary: No key, or not one of yours
                  value:
                    error: Invalid API key
        '403':
          description: >-
            A client’s own key, or any key scoped to one workspace. You’re on
            the Free plan. `code` is `UPGRADE_REQUIRED`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                e1:
                  summary: A client’s own key, or any key scoped to one workspace
                  value:
                    error: >-
                      Use your account-wide API key to manage accounts.
                      Workspace keys can’t.
                e2:
                  summary: You’re on the Free plan
                  value:
                    error: Invoicing is on every paid plan. Upgrade to use it.
        '404':
          description: No client with this id is yours.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                e1:
                  summary: No client with this id is yours
                  value:
                    error: Account not found.
        '409':
          description: >-
            The client is closed. `code` is `ACCOUNT_CLOSED`. The client
            accepted a transfer and owns it now. `code` is
            `ACCOUNT_TRANSFERRED`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                e1:
                  summary: The client is closed
                  value:
                    error: This account is closed.
                e2:
                  summary: The client accepted a transfer and owns it now
                  value:
                    error: This account was transferred to your client.
components:
  schemas:
    BillingEnvelope:
      type: object
      properties:
        billing:
          type: object
          nullable: true
          properties:
            status:
              type: string
              enum:
                - sent
                - active
                - past_due
            email:
              type: string
            price_usd:
              type: number
            setup_fee_usd:
              type: number
            ai_usd:
              type: number
            payment_link_url:
              type: string
              nullable: true
            current_period_end:
              type: string
              format: date-time
              nullable: true
            ends_at_period_end:
              type: boolean
    Error:
      type: object
      description: >-
        The base error body. Every failure carries `error`; individual endpoints
        add the fields named in the schemas below.
      required:
        - error
      properties:
        error:
          type: string
          description: Human-readable message.
          example: Access denied
        code:
          type: string
          description: >-
            Machine-readable reason. Present on the failures that define one,
            absent otherwise.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key authentication. Get your key at orgo.ai/workspaces

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.