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

# List Transactions

> Retrieve a paginated list of transactions for the project associated with the API token.

Returns a paginated list of all transactions for the project linked to the authenticated API token. Results are ordered by creation time, most recent first.

<Note>
  Requires a bearer token with the `read` permission.
</Note>

## Query Parameters

<ParamField query="limit" type="integer" default="50">
  Number of transactions to return. Min 1, max 200.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of transactions to skip. Min 0.
</ParamField>

## Response

<ResponseField name="transactions" type="array" required>
  Array of transaction objects.

  <Expandable title="Transaction object">
    <ResponseField name="id" type="string" required>
      Unique transaction identifier.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      Transaction type. One of: `fund`, `payment`, `x402_payment`, `usdc_transfer`, `usdc_fund`, `platform_fee`, `fiat_withdrawal`.
    </ResponseField>

    <ResponseField name="status" type="string" required>
      Transaction status: `pending`, `processing`, `completed`, `failed`, or `reversed`.
    </ResponseField>

    <ResponseField name="amount" type="integer" required>
      Transaction amount in currency units (cents for USD, micro-USDC for USDC).
    </ResponseField>

    <ResponseField name="currency" type="string" required>
      Currency code: `usd` or `usdc`.
    </ResponseField>

    <ResponseField name="description" type="string | null">
      Human-readable description of the transaction.
    </ResponseField>

    <ResponseField name="merchant_name" type="string | null">
      Merchant or recipient name, if applicable.
    </ResponseField>

    <ResponseField name="created_at" type="string" required>
      ISO 8601 timestamp of when the transaction was created.
    </ResponseField>

    <ResponseField name="completed_at" type="string | null">
      ISO 8601 timestamp of when the transaction completed. `null` if still in progress.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="total_count" type="integer" required>
  Total number of transactions across all pages.
</ResponseField>

<ResponseField name="has_more" type="boolean" required>
  Whether there are more transactions beyond the current page.
</ResponseField>

## Transaction Types

| Type              | Description                                      |
| ----------------- | ------------------------------------------------ |
| `fund`            | Fiat funding added to the project                |
| `payment`         | Outbound ACH payment to an external bank account |
| `x402_payment`    | x402 protocol payment to a URL                   |
| `usdc_transfer`   | On-chain USDC transfer to an external wallet     |
| `usdc_fund`       | USDC deposit received on-chain                   |
| `platform_fee`    | Platform fee charged on a transaction            |
| `fiat_withdrawal` | Fiat withdrawal from the project                 |

## Examples

<CodeGroup>
  ```bash curl theme={null}
  curl "https://api.unwall.xyz/v1/transactions?limit=10&offset=0" \
    -H "Authorization: Bearer aw_live_xxxxxxxxxxxx"
  ```

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

  resp = requests.get(
      "https://api.unwall.xyz/v1/transactions",
      headers={"Authorization": "Bearer aw_live_xxxxxxxxxxxx"},
      params={"limit": 10, "offset": 0},
  )
  data = resp.json()
  for tx in data["transactions"]:
      print(f"{tx['type']} — {tx['amount']} {tx['currency']} — {tx['status']}")
  print(f"Showing {len(data['transactions'])} of {data['total_count']}")
  ```

  ```typescript TypeScript theme={null}
  const resp = await fetch(
    "https://api.unwall.xyz/v1/transactions?limit=10&offset=0",
    {
      headers: {
        Authorization: "Bearer aw_live_xxxxxxxxxxxx",
      },
    }
  );
  const data = await resp.json();
  for (const tx of data.transactions) {
    console.log(`${tx.type} — ${tx.amount} ${tx.currency} — ${tx.status}`);
  }
  console.log(`Showing ${data.transactions.length} of ${data.total_count}`);
  ```
</CodeGroup>

```json Response (200 OK) theme={null}
{
  "transactions": [
    {
      "id": "tx_x402_001",
      "type": "x402_payment",
      "status": "completed",
      "amount": 500000,
      "currency": "usdc",
      "description": "x402 payment to https://api.example.com/v1/data",
      "merchant_name": "api.example.com",
      "created_at": "2026-03-11T16:30:00Z",
      "completed_at": "2026-03-11T16:30:05Z"
    },
    {
      "id": "tx_usdc_002",
      "type": "usdc_transfer",
      "status": "processing",
      "amount": 50000000,
      "currency": "usdc",
      "description": "Vendor payment",
      "merchant_name": null,
      "created_at": "2026-03-11T14:00:00Z",
      "completed_at": null
    },
    {
      "id": "tx_fund_003",
      "type": "usdc_fund",
      "status": "completed",
      "amount": 100000000,
      "currency": "usdc",
      "description": "USDC deposit",
      "merchant_name": null,
      "created_at": "2026-03-10T09:00:00Z",
      "completed_at": "2026-03-10T09:00:30Z"
    }
  ],
  "total_count": 3,
  "has_more": false
}
```
