> ## 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.

# Get Card Transaction

> Retrieve a single card transaction by id. GET /cards/{cardId}/transactions/{txnId}.

## Overview

Returns one card transaction by its id, scoped to a card your business owns. Use it when you
already hold a transaction id — from a webhook, or from
[Get Card Transactions](/v3/api-reference/cards/transactions) — and want its detail without
paging the list.

The object returned is **identical in shape to one entry of that list**, so code that renders
a transaction works with either endpoint.

<Note>
  The transaction must belong to the card in the path. A transaction id that exists but sits on
  a different card returns `404` — you cannot read another card's transactions through a card
  you own.
</Note>

## Path Parameters

| Parameter | Type   | Description                |
| --------- | ------ | -------------------------- |
| `cardId`  | string | The unique card identifier |
| `txnId`   | string | The transaction identifier |

## Example Usage

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

  ```php PHP theme={null}
  <?php
  $cardId = 'crd_8f3a2b1c4d5e6f7890abcdef12345678';
  $txnId  = 'TXN8H2K9L4M6N1';

  $ch = curl_init("https://api.fyatu.com/api/v3/cards/{$cardId}/transactions/{$txnId}");
  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_HTTPHEADER     => ["Authorization: Bearer {$accessToken}"],
  ]);
  $transaction = json_decode(curl_exec($ch), true)['data'];
  curl_close($ch);
  ```

  ```javascript Node.js theme={null}
  const res = await fetch(
    `https://api.fyatu.com/api/v3/cards/${cardId}/transactions/${txnId}`,
    { headers: { Authorization: `Bearer ${accessToken}` } }
  );
  const { data: transaction } = await res.json();
  ```

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

  r = requests.get(
      f"https://api.fyatu.com/api/v3/cards/{card_id}/transactions/{txn_id}",
      headers={"Authorization": f"Bearer {access_token}"},
  )
  transaction = r.json()["data"]
  ```
</CodeGroup>

## Response

```json theme={null}
{
  "success": true,
  "status": 200,
  "message": "Transaction retrieved successfully",
  "data": {
    "id": "TXN8H2K9L4M6N1",
    "type": "DEBIT",
    "amount": 12.50,
    "currency": "USD",
    "merchant": "Meta Platforms Ireland",
    "logo": null,
    "status": "COMPLETED",
    "description": "Meta Ads",
    "category": "Card Charge",
    "createdAt": "2026-01-15 10:30:00"
  }
}
```

## Fields

| Field         | Type   | Description                                                             |
| ------------- | ------ | ----------------------------------------------------------------------- |
| `id`          | string | Transaction identifier — the same id webhooks carry as `reference`      |
| `type`        | string | `DEBIT` for spend and fees, `CREDIT` for funding, refunds and reversals |
| `amount`      | number | Transaction amount                                                      |
| `currency`    | string | Currency of the transaction                                             |
| `merchant`    | string | Merchant name, or a description of the operation for funding and fees   |
| `status`      | string | `COMPLETED`, `PENDING`, `FAILED`, `REVERSED` or `DECLINED`              |
| `description` | string | Narration from the merchant or the network                              |
| `category`    | string | What kind of transaction it is, e.g. `Card Charge`, `Cross-border Fee`  |
| `createdAt`   | string | When the transaction occurred                                           |

## Errors

| Status | Meaning                                                                       |
| ------ | ----------------------------------------------------------------------------- |
| `401`  | The access token is missing or invalid                                        |
| `404`  | The card does not exist, is not yours, or the transaction is not on that card |
| `503`  | Card services are temporarily unavailable — retry shortly                     |


## OpenAPI

````yaml v3/openapi.json GET /cards/{cardId}/transactions/{txnId}
openapi: 3.1.0
info:
  title: FYATU API v3
  description: >-
    FYATU API v3 with JWT authentication for Collections, Payouts, and Card
    Issuing.
  version: 3.0.0
  contact:
    name: FYATU Support
    url: https://fyatu.com
    email: support@fyatu.com
servers:
  - url: https://api.fyatu.com/api/v3
    description: Production
security: []
tags:
  - name: Authentication
    description: JWT token management endpoints
  - name: Account
    description: Business account, wallet, and address management
  - name: Collections
    description: Accept payments from customers via checkout sessions
  - name: Refunds
    description: Issue refunds for completed collections
  - name: Payouts
    description: Send money to Fyatu account holders
  - name: Cardholders
    description: Cardholder management for card issuing programs
  - name: Cards
    description: Issue, fund, freeze, and manage virtual cards
  - name: Webhooks
    description: Webhook configuration and management
paths:
  /cards/{cardId}/transactions/{txnId}:
    get:
      tags:
        - Cards
      summary: Get Card Transaction
      description: >-
        Retrieve a single card transaction by id, scoped to a card your business
        owns. Use this when you already have a transaction id — from a webhook,
        or from GET /cards/{cardId}/transactions — and want its full detail
        without paging the list. The object returned is identical in shape to
        one entry of that list.
      operationId: getCardTransaction
      parameters:
        - name: cardId
          in: path
          required: true
          schema:
            type: string
          description: The unique card identifier
        - name: txnId
          in: path
          required: true
          schema:
            type: string
          description: The transaction identifier
      responses:
        '200':
          description: Transaction retrieved successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  status:
                    type: integer
                    example: 200
                  message:
                    type: string
                    example: Transaction retrieved successfully
                  data:
                    type: object
        '401':
          description: Unable to identify business
        '404':
          description: Card or transaction not found
        '503':
          description: Card services are temporarily unavailable
      security:
        - BearerAuth: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT access token obtained from /auth/token

````