AgentMessage
Billing

List wallet transactions

GET
/v1/billing/transactions

Returns a cursor-paginated history of every movement on your organization's wallet: top-up credits, send debits, manual adjustments, and refunds. Each row carries balance_after_cents so you can render a running balance without a second read. Use source_ref to cross- reference a transaction (for example, the Stripe invoice id on a top-up credit or the outbound message id on a debit).

Range defaults and caps mirror /v1/billing/usage: from and to default to the last 30 days, the explicit to - from window must be 90 days or less, and limit defaults to 100 with a maximum of 500.

Requires the billing:read scope.

AuthorizationBearer <token>

Authenticate by sending your API key as a bearer token: Authorization: Bearer am_live_.... Every request is automatically scoped to the organization that owns the key and to the scopes granted to that key.

In: header

Query Parameters

from?string
Formatdate-time
to?string
Formatdate-time
kind?string
cursor?string
limit?integer
Default100
Range1 <= value <= 500

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/billing/transactions"
{
  "success": true,
  "data": [
    {
      "id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
      "ts": "2026-04-26T12:00:00Z",
      "kind": "topup",
      "amount_cents": 2000,
      "balance_after_cents": 4250,
      "source": "stripe",
      "source_ref": "in_1NbCxYJh3ZgY8a",
      "metadata": {}
    },
    {
      "id": "2a3b4c5d-6e7f-8a9b-0c1d-2e3f4a5b6c7d",
      "ts": "2026-04-26T11:59:00Z",
      "kind": "debit",
      "amount_cents": -18,
      "balance_after_cents": 2250,
      "source": "outbound",
      "source_ref": "7c1f0a2d-9e8b-4c3a-9d2e-1f0a2b3c4d5e",
      "metadata": {}
    }
  ],
  "meta": {
    "total": 0,
    "limit": 100,
    "offset": 0,
    "next_cursor": null
  }
}
{
  "success": false,
  "error": {
    "code": "UNAUTHORIZED",
    "message": "authentication failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "FORBIDDEN",
    "message": "missing required scope",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM"
  }
}
{
  "success": false,
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "validation failed",
    "request_id": "01JTBQH2FZ8K1RXC0WJ4Z9P3VM",
    "details": {
      "to": "must be E.164",
      "body": "must be 1..1600 chars"
    }
  }
}