> For the complete documentation index, see [llms.txt](https://docs.omypayments.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.omypayments.com/api/api-endpoints/gas-manager.md).

# Gas Manager

`GET /2.0/gas-manager/list`

The history of your Gas Manager operations, with our fee on each one.

### What the Gas Manager does

Your payment addresses need the network's native coin to send transactions from. The Gas Manager keeps them topped up: it takes stablecoins from your **gas liquidity address**, converts them, and credits native coin to whichever of your payment addresses is running low.

Two consequences worth knowing before reading the response:

* These operations **do not pass through your asset balances**. Nothing here appears in `internal-transaction/list`; the stablecoins are spent from the gas liquidity address, not from an asset. The three gas opcodes you may see in the ledger (`withdrawal-gas`, and the deposit / invoice refund gas ones) are a completely different mechanism and never show up in this list.
* The unit of this list is a **distribution** - one top-up of one address - not a pipeline. One pipeline (one purchase of native coin) usually feeds several distributions.

### Reading one row

```json
{
  "id": "0848e093-bb67-4e06-b89a-c051a0408f57",
  "status": "success",
  "subStatus": "sent",
  "network": {"id": "e130ce89-1d4d-4951-beaf-465ec43cf399", "title": "BNB Chain", "symbol": "BSC"},
  "targetAddress": "0x8139BC460c0Ff40850fA69026910a0713699E516",
  "txHash": "cspt2801-gas-a-1",
  "topUp": {
    "amount": "4000000000000000",
    "amountFormatted": "0.004",
    "currency": "BNB",
    "cryptoId": "75608cde-155c-4550-8025-cddf01bf2289",
    "networkId": "e130ce89-1d4d-4951-beaf-465ec43cf399",
    "amountInUsd": "12.00",
    "isChargedToMerchant": false
  },
  "charged": {
    "amount": "13200000000000000000",
    "amountFormatted": "13.2",
    "currency": "USDT",
    "cryptoId": "1fa107f9-3832-4286-9c72-493eaf675da5",
    "networkId": "e130ce89-1d4d-4951-beaf-465ec43cf399",
    "amountInUsd": "13.20",
    "isChargedToMerchant": true
  },
  "fee": {
    "network": null,
    "service": {
      "amount": "1200000000000000000",
      "amountFormatted": "1.2",
      "currency": "USDT",
      "cryptoId": "1fa107f9-3832-4286-9c72-493eaf675da5",
      "networkId": "e130ce89-1d4d-4951-beaf-465ec43cf399",
      "amountInUsd": "1.20",
      "isChargedToMerchant": true
    },
    "exchange": null,
    "totalInUsd": "1.20"
  },
  "pipeline": {
    "id": "f1000000-0000-0000-0000-000000000001",
    "status": "finished",
    "totalAmountInUsd": "36.00",
    "createdAt": "2026-07-28T11:17:25+00:00"
  },
  "createdAt": "2026-07-28T11:17:15+00:00",
  "updatedAt": "2026-07-28T11:17:25+00:00"
}
```

#### `charged` vs `topUp` vs `fee.service`

These three are easy to confuse. They answer different questions.

| Field         | Question it answers                                       | Currency                   | Charged to you                 |
| ------------- | --------------------------------------------------------- | -------------------------- | ------------------------------ |
| `topUp`       | How much native coin was **credited to your address**?    | native coin of the network | no - this is what you received |
| `charged`     | How much was **debited from your gas liquidity address**? | your donor stablecoin      | yes                            |
| `fee.service` | How much of that debit was **our fee**?                   | your donor stablecoin      | yes                            |

The relationship: `charged = value of the top-up + fee.service`. In the example above, `13.2 USDT = 12.00 (the 0.004 BNB you received) + 1.20 (our fee)`.

`fee.network` is always `null` here: the gas of the distributing transaction itself burns on **our** sender address and is not billed to you.

`fee.totalInUsd` equals `fee.service.amountInUsd` - our fee is the only thing in the fee object.

#### The `pipeline` block

A compact view of the batch this distribution belonged to: `id`, `status`, `totalAmountInUsd`, `createdAt`. Deliberately nothing else - the liquidity-side details of how we sourced the native coin are internal.

#### Statuses

`status`: `pending`, `cancelled`, `failed`, `success`. `subStatus` carries the finer state within the pipeline (`sent`, `enough_balance`, `not_enough_donor_balance`, …) and may be `null`.

### 🔴 Cancelled operations are hidden by default

A distribution is cancelled when the top-up turned out to be unnecessary - typically the address already had enough gas (`sub_status: enough_balance`) or its balance could not be determined (`undefined_balance`). Nothing was sent, nothing was charged, and such rows carry `charged: null`, `topUp: null` and `fee.service: null`.

**They are excluded from the default listing** so they do not pad your pages with rows that cost nothing. To see them, ask explicitly:

```
GET /2.0/gas-manager/list?status=cancelled
```

This is the only filtering the endpoint applies on its own. Everything else you see is everything there is.

### Request

```
GET /2.0/gas-manager/list
apiKey: <your api key>
```

| Query parameter | Type     | Meaning                                                                        |
| --------------- | -------- | ------------------------------------------------------------------------------ |
| `cursor`        | `string` | Page cursor, taken from `cursorNext` / `cursorPrevious` of a previous response |
| `status`        | `string` | One of `pending`, `cancelled`, `failed`, `success`                             |
| `networkId`     | `string` | Our network identifier                                                         |
| `createdAtFrom` | `string` | ISO-8601 with offset, e.g. `2026-07-01T00:00:00+00:00`                         |
| `createdAtTo`   | `string` | Same format                                                                    |

Page size is fixed at **50**. The response shape is `{data, cursorPrevious, cursorNext}`; a `null` cursor means there is no page in that direction.

### Permissions

Requires **`can_invoice`** - the same permission that guards deposits. The endpoint returns `targetAddress`, a real on-chain payment address of yours, together with the hash of every top-up, and `can_invoice` is the flag that already governs access to those addresses.

It only ever returns your own merchant's operations; the scope comes from the apiKey and cannot be influenced by any query parameter.

### Response codes

| Code  | When                                       |
| ----- | ------------------------------------------ |
| `200` | OK                                         |
| `400` | Invalid `status` value or malformed date   |
| `401` | Missing or invalid `apiKey`                |
| `403` | The apiKey has no `can_invoice` permission |
| `429` | Rate limit (50 requests per second)        |
