# List charges

`GET https://app.shuttleglobal.com/c/api/instances/{instance_key}/charges`

Search and filter charge objects with pagination support.

Available fields for criteria and order:
- id
- alt_key
- contract
- created
- due
- outstanding_amount
- recurring: "Y" (true) "N" (false)
- status
- updated

## Authentication

- basicAuth: Basic Authentication using secret key
- bearerAuth: OAuth 2.0 Bearer Token Authentication

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `criteria` | query | string | no | Search criteria for filtering charges. Available fields: - id - alt_key (your reference for a scheduled charge) - contract - created - due - outstanding_amount - recurring (Y/N) - status - updated Examples: - `status=ACTIVE` - `contract=co_12345_67890` - `alt_key=INSTALMENT_2` - `due<>2024-01-01;2024-12-31` - `outstanding_amount>=10` |
| `order` | query | string | no | Sort order for results. Supports any field that criteria supports. Defaults to `created:desc` if not specified. Append `:desc` for descending order. Separate multiple order fields with commas. Examples: - `order=due` - `order=outstanding_amount:desc` |
| `expand` | query | string | no | Fields to expand into full objects. Separate multiple fields with commas. Available fields: - contract (contract object) - created_session (session object) - updated_session (session object) Example: `expand=contract` |
| `limit` | query | integer | no | Number of records to return: 20 if not set, at most 1000. |
| `offset` | query | integer | no | Number of records to skip before the first one returned. `offset` + `limit` can't exceed 5000; to read further, page by a field such as `created` instead. See [Paging through results](/platforms/reference/paging/). |

## Responses

### 200: List of charges

```json
{
  "charges": [
    {
      "id": "string",
      "amount": "string",
      "alt_key": "string",
      "charge_number": 0,
      "extra_charge": true,
      "completed": "2026-01-01T12:00:00Z",
      "contract": "string",
      "created": "2026-01-01T12:00:00Z",
      "created_session": "string",
      "due": "2026-01-01T12:00:00Z",
      "initiated": "2026-01-01T12:00:00Z",
      "outstanding_amount": "string",
      "overdue_amount": "string",
      "recurring": true,
      "paid_amount": "string",
      "status": "ACTIVE",
      "updated": "2026-01-01T12:00:00Z",
      "updated_session": "string",
      "writtenoff_amount": "string",
      "v": 0
    }
  ],
  "meta": {
    "limit": 0,
    "offset": 0,
    "total": 0
  }
}
```

### 400: Bad request

```json
{
  "code": "string",
  "message": "string"
}
```

### 401: Unauthorised: the API key is missing or not valid

```json
{
  "code": "UNAUTHORIZED",
  "message": "Unauthorised"
}
```

## Example request

```sh
curl --request GET \
  --url https://app.shuttleglobal.com/c/api/instances/YOUR_INSTANCE_KEY/charges \
  --header 'Authorization: Basic <base64 of SECRET_KEY:>'
```

Reference page: https://docs.shuttleglobal.com/platforms/reference/operations/listcharges/