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

# Card Transactions

> List transaction history for a specific card. GET /cards/{id}/transactions. Requires cards:read scope.

## Overview

Returns a paginated list of card-level transactions sourced directly from the card network. This includes purchases, declines, refunds, reversals, and fees — everything that moved money on the physical card.

<Note>
  These are **card-to-merchant transactions**, not program ledger movements. For deposits, withdrawals, and card funding/unload events, use `GET /transactions` instead.
</Note>

## Path Parameters

| Parameter | Type   | Description                 |
| --------- | ------ | --------------------------- |
| `id`      | string | The card ID (prefix `crd_`) |

## Query Parameters

| Parameter | Type    | Default | Description                 |
| --------- | ------- | ------- | --------------------------- |
| `page`    | integer | `1`     | Page number (1-based)       |
| `limit`   | integer | `20`    | Results per page (max: 100) |

## Transaction Object

| Field                  | Type    | Description                                          |
| ---------------------- | ------- | ---------------------------------------------------- |
| `transactionId`        | string  | Unique transaction identifier from the card network  |
| `cardId`               | string  | The card ID this transaction belongs to              |
| `type`                 | string  | Transaction type (e.g. `PURCHASE`, `REFUND`, `FEE`)  |
| `status`               | string  | `SETTLED`, `PENDING`, `DECLINED`, `REVERSED`         |
| `amount`               | number  | Transaction amount in card currency                  |
| `feeAmount`            | number  | Network fee charged (if any)                         |
| `currency`             | string  | Transaction currency (e.g. `USD`)                    |
| `merchant`             | object  | Merchant details — present for purchase transactions |
| `merchant.name`        | string  | Merchant name                                        |
| `merchant.id`          | string  | Merchant ID at the network                           |
| `merchant.city`        | string  | Merchant city                                        |
| `merchant.country`     | string  | Merchant country code                                |
| `merchant.mcc`         | string  | Merchant Category Code                               |
| `merchant.mccCategory` | string  | Human-readable MCC description                       |
| `memo`                 | string  | Transaction memo or description                      |
| `isSettled`            | boolean | Whether the transaction has cleared                  |
| `wasReversed`          | boolean | Whether the transaction was reversed                 |
| `createdAt`            | string  | Transaction timestamp (ISO 8601)                     |

## Example

<CodeGroup>
  ```bash cURL theme={null}
  curl https://api.fyatu.com/api/v3.20/cards/crd_01HXYZ5555ABCDEF1111/transactions \
    -H "Authorization: Bearer $FYATU_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const resp = await fetch(
    'https://api.fyatu.com/api/v3.20/cards/crd_01HXYZ5555ABCDEF1111/transactions?page=1&limit=20',
    { headers: { 'Authorization': `Bearer ${process.env.FYATU_API_KEY}` } }
  );
  const body = await resp.json();
  body.data.forEach(txn => {
    console.log(`${txn.merchant?.name ?? txn.memo}: $${txn.amount} (${txn.status})`);
  });
  ```

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

  resp = requests.get(
      'https://api.fyatu.com/api/v3.20/cards/crd_01HXYZ5555ABCDEF1111/transactions',
      params={'page': 1, 'limit': 20},
      headers={'Authorization': f'Bearer {os.environ["FYATU_API_KEY"]}'}
  )
  for txn in resp.json()['data']:
      merchant = txn.get('merchant', {})
      print(f"{merchant.get('name', txn['memo'])}: ${txn['amount']} ({txn['status']})")
  ```
</CodeGroup>

## Success Response (200)

```json theme={null}
{
  "success": true,
  "status": 200,
  "message": "Card transactions retrieved",
  "data": [
    {
      "transactionId": "hf_txn_01HXYZ1234ABCDEF0001",
      "cardId": "crd_01HXYZ5555ABCDEF1111",
      "type": "PURCHASE",
      "status": "SETTLED",
      "amount": 12.50,
      "feeAmount": 0.00,
      "currency": "USD",
      "merchant": {
        "name": "STARBUCKS #1234",
        "id": "MER_STARBUCKS_001",
        "city": "San Francisco",
        "country": "US",
        "mcc": "5812",
        "mccCategory": "Eating Places, Restaurants"
      },
      "memo": "STARBUCKS #1234",
      "isSettled": true,
      "wasReversed": false,
      "createdAt": "2026-05-25T14:32:00Z"
    },
    {
      "transactionId": "hf_txn_01HXYZ1234ABCDEF0002",
      "cardId": "crd_01HXYZ5555ABCDEF1111",
      "type": "PURCHASE",
      "status": "DECLINED",
      "amount": 250.00,
      "feeAmount": 0.00,
      "currency": "USD",
      "merchant": {
        "name": "AMAZON.COM",
        "id": "MER_AMAZON_001",
        "city": "Seattle",
        "country": "US",
        "mcc": "5999",
        "mccCategory": "Miscellaneous Retail Stores"
      },
      "memo": "AMAZON.COM",
      "isSettled": false,
      "wasReversed": false,
      "createdAt": "2026-05-24T09:10:00Z"
    }
  ],
  "pagination": {
    "total": 47,
    "limit": 20,
    "offset": 0,
    "hasMore": true
  },
  "meta": {
    "requestId": "req_01HXY123456ABCDEF",
    "platform": "Fyatu CaaS",
    "timestamp": "2026-05-26T10:00:00Z"
  }
}
```

<Note>
  If the card has not yet been fully provisioned by the card network, the `data` array will be empty and `pagination.total` will be `0`.
</Note>

## Error Codes

| Code                 | HTTP | Cause                                                          |
| -------------------- | ---- | -------------------------------------------------------------- |
| `CARD_NOT_FOUND`     | 404  | Card does not exist or belongs to another business/environment |
| `PROVIDER_ERROR`     | 500  | Card network unavailable — retry with exponential back-off     |
| `INSUFFICIENT_SCOPE` | 403  | Key lacks `cards:read` scope                                   |


## OpenAPI

````yaml v3.20/openapi.json GET /cards/{id}/transactions
openapi: 3.1.0
info:
  title: FYATU CaaS API v3.20
  description: >-
    FYATU Cards-as-a-Service API â€” API key authentication, Cardholder
    lifecycle, Card issuance, Transactions, Webhooks, and Programs.
  version: 3.20.0
  contact:
    name: FYATU Support
    url: https://fyatu.com
    email: support@fyatu.com
servers:
  - url: https://api.fyatu.com/api/v3.20
    description: >-
      FYATU CaaS API â€” the environment (LIVE or SANDBOX) is determined by the
      API key, not the URL
security:
  - BearerAuth: []
tags:
  - name: Meta
    description: Liveness, account info, and supported event types
  - name: Account
    description: Account-level balance and funding status
  - name: Programs
    description: Read card program configuration
  - name: Cardholders
    description: Create and manage cardholder profiles
  - name: Cards
    description: Issue, fund, freeze, and terminate virtual cards
  - name: Transactions
    description: Read-only card transaction history
  - name: Webhooks
    description: Manage webhook endpoints for real-time event delivery
  - name: Products
    description: Read card product configurations
paths:
  /cards/{id}/transactions:
    get:
      tags:
        - Cards
      summary: List card transactions
      description: >-
        Returns a paginated list of card-to-merchant transactions sourced from
        the card network. Includes purchases, declines, refunds, reversals, and
        fees.
      operationId: listCardTransactions
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
          example: crd_01HXYZ5555ABCDEF1111
        - name: page
          in: query
          schema:
            type: integer
            minimum: 1
            default: 1
          description: Page number (1-based)
        - name: limit
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 20
          description: Results per page
      responses:
        '200':
          description: Card transactions retrieved
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  status:
                    type: integer
                  message:
                    type: string
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/CardTransaction'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
                  meta:
                    $ref: '#/components/schemas/Meta'
              example:
                success: true
                status: 200
                message: Card transactions retrieved
                data:
                  - transactionId: hf_txn_01HXYZ1234ABCDEF0001
                    cardId: crd_01HXYZ5555ABCDEF1111
                    type: PURCHASE
                    status: SETTLED
                    amount: 12.5
                    feeAmount: 0
                    currency: USD
                    merchant:
                      name: 'STARBUCKS #1234'
                      id: MER_STARBUCKS_001
                      city: San Francisco
                      country: US
                      mcc: '5812'
                      mccCategory: Eating Places, Restaurants
                    memo: 'STARBUCKS #1234'
                    isSettled: true
                    wasReversed: false
                    createdAt: '2026-05-25T14:32:00Z'
                  - transactionId: hf_txn_01HXYZ1234ABCDEF0002
                    cardId: crd_01HXYZ5555ABCDEF1111
                    type: PURCHASE
                    status: DECLINED
                    amount: 250
                    feeAmount: 0
                    currency: USD
                    merchant:
                      name: AMAZON.COM
                      id: MER_AMAZON_001
                      city: Seattle
                      country: US
                      mcc: '5999'
                      mccCategory: Miscellaneous Retail Stores
                    memo: AMAZON.COM
                    isSettled: false
                    wasReversed: false
                    createdAt: '2026-05-24T09:10:00Z'
                pagination:
                  total: 47
                  limit: 20
                  offset: 0
                  hasMore: true
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-26T10:00:00Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalError'
components:
  schemas:
    CardTransaction:
      type: object
      description: A single card-to-merchant transaction from the card network.
      properties:
        transactionId:
          type: string
          description: Unique transaction identifier from the card network
          example: hf_txn_01HXYZ1234ABCDEF0001
        cardId:
          type: string
          description: The card this transaction belongs to
          example: crd_01HXYZ5555ABCDEF1111
        type:
          type: string
          description: Transaction type (PURCHASE, REFUND, FEE, etc.)
          example: PURCHASE
        status:
          type: string
          description: Transaction status
          enum:
            - SETTLED
            - PENDING
            - DECLINED
            - REVERSED
          example: SETTLED
        amount:
          type: number
          description: Transaction amount in card currency
          example: 12.5
        feeAmount:
          type: number
          description: Network fee charged (if any)
          example: 0
        currency:
          type: string
          description: Transaction currency
          example: USD
        merchant:
          type: object
          nullable: true
          description: Merchant details — present for purchase transactions
          properties:
            name:
              type: string
              example: 'STARBUCKS #1234'
            id:
              type: string
              example: MER_STARBUCKS_001
            city:
              type: string
              example: San Francisco
            country:
              type: string
              example: US
            mcc:
              type: string
              example: '5812'
            mccCategory:
              type: string
              example: Eating Places, Restaurants
        memo:
          type: string
          description: Transaction memo or description
          example: 'STARBUCKS #1234'
        isSettled:
          type: boolean
          description: Whether the transaction has cleared
          example: true
        wasReversed:
          type: boolean
          description: Whether the transaction was reversed
          example: false
        createdAt:
          type: string
          format: date-time
          example: '2026-05-25T14:32:00Z'
    Pagination:
      type: object
      properties:
        total:
          type: integer
          example: 47
        limit:
          type: integer
          example: 20
        offset:
          type: integer
          example: 0
        hasMore:
          type: boolean
          example: true
    Meta:
      type: object
      properties:
        requestId:
          type: string
          example: req_a1b2c3d4e5f6a7b8c9d0e1f2
        platform:
          type: string
          example: Fyatu CaaS
        timestamp:
          type: string
          format: date-time
          example: '2026-05-22T15:00:00Z'
    Error:
      type: object
      properties:
        success:
          type: boolean
          example: false
        status:
          type: integer
          example: 422
        message:
          type: string
          example: Human readable message
        error:
          $ref: '#/components/schemas/ErrorBody'
        meta:
          $ref: '#/components/schemas/Meta'
    ErrorBody:
      type: object
      properties:
        code:
          type: string
          example: VALIDATION_ERROR
        detail:
          type: string
          example: dateOfBirth must be in YYYY-MM-DD format
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            missing:
              summary: API key missing
              value:
                success: false
                status: 401
                message: API key is required
                error:
                  code: AUTH_TOKEN_MISSING
                  detail: API key is required
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-22T15:00:00Z'
            invalid:
              summary: API key invalid
              value:
                success: false
                status: 401
                message: Invalid API key
                error:
                  code: AUTH_TOKEN_INVALID
                  detail: Invalid API key
                meta:
                  requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
                  platform: Fyatu CaaS
                  timestamp: '2026-05-22T15:00:00Z'
    Forbidden:
      description: Scope denied or business suspended
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 403
            message: Scope denied
            error:
              code: INSUFFICIENT_SCOPE
              detail: This endpoint requires the cards:write scope
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
    NotFound:
      description: Resource not found or does not belong to your business
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitExceeded:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 429
            message: Rate limit exceeded
            error:
              code: RATE_LIMIT_EXCEEDED
              detail: Too many requests
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
    InternalError:
      description: Unexpected server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            success: false
            status: 500
            message: Internal error
            error:
              code: INTERNAL_ERROR
              detail: An unexpected error occurred
            meta:
              requestId: req_a1b2c3d4e5f6a7b8c9d0e1f2
              platform: Fyatu CaaS
              timestamp: '2026-05-22T15:00:00Z'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API key from the FYATU CaaS portal. Pass as `Authorization: Bearer
        <key>`.

````