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

# Expense Tracking & Transactions

> Stream real-time transactions, manage spend across credit cards, and handle manual card entry for unsupported networks.

Once you've [connected a user's credit cards](/guides/use-cases/commerce/getting-started), you can stream real-time transaction data for spend management, expense categorization, and budget tracking. This guide also covers manual card entry for networks where automatic discovery isn't available.

## Transaction Stream

Method streams real-time transaction data for connected credit card accounts, including both authorization events (when a purchase is made) and settlement events (when the transaction clears). This enables features like spend categorization, transaction alerts, budget tracking, and detailed account activity views.

### Listing Transactions

Retrieve transactions for any connected credit card account. Here are Emily's recent transactions on her Citi Double Cash card (`acc_XtKTpHLGhD9Qn`):

```bash theme={null}
curl "https://production.methodfi.com/accounts/acc_XtKTpHLGhD9Qn/transactions" \
  -X GET \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
```

```json theme={null}
{
  "data": [
    {
      "id": "txn_t73AdHRFYwhT9",
      "account_id": "acc_XtKTpHLGhD9Qn",
      "status": "posted",
      "descriptor": "SQ *STARBUCKS STORE 12345",
      "merchant": {
        "name": "Starbucks",
        "logo": "https://static.methodfi.com/merchants/starbucks.png"
      },
      "merchant_category_code": "5814",
      "amount": 575,
      "auth_amount": 575,
      "currency_code": "USD",
      "transaction_amount": 575,
      "transaction_auth_amount": 575,
      "transaction_currency_code": "USD",
      "transacted_at": "2025-12-08T13:22:06.000Z",
      "posted_at": "2025-12-09T05:00:00.000Z",
      "voided_at": null,
      "original_txn_id": null,
      "created_at": "2025-12-09T03:54:29.283Z",
      "updated_at": "2025-12-09T04:04:39.200Z"
    },
    {
      "id": "txn_Hk4mNQpZW8vRx",
      "account_id": "acc_XtKTpHLGhD9Qn",
      "status": "posted",
      "descriptor": "WHOLE FOODS MARKET #10247",
      "merchant": {
        "name": "Whole Foods Market",
        "logo": "https://static.methodfi.com/merchants/whole_foods.png"
      },
      "merchant_category_code": "5411",
      "amount": 8723,
      "auth_amount": 8723,
      "currency_code": "USD",
      "transaction_amount": 8723,
      "transaction_auth_amount": 8723,
      "transaction_currency_code": "USD",
      "transacted_at": "2025-12-07T18:45:12.000Z",
      "posted_at": "2025-12-08T05:00:00.000Z",
      "voided_at": null,
      "original_txn_id": null,
      "created_at": "2025-12-08T03:12:44.283Z",
      "updated_at": "2025-12-08T04:22:11.200Z"
    },
    {
      "id": "txn_QwLp3RcTjXn7m",
      "account_id": "acc_XtKTpHLGhD9Qn",
      "status": "posted",
      "descriptor": "UBER *TRIP HELP.UBER.COM",
      "merchant": {
        "name": "Uber",
        "logo": "https://static.methodfi.com/merchants/uber.png"
      },
      "merchant_category_code": "4121",
      "amount": 2450,
      "auth_amount": 2450,
      "currency_code": "USD",
      "transaction_amount": 2450,
      "transaction_auth_amount": 2450,
      "transaction_currency_code": "USD",
      "transacted_at": "2025-12-06T21:10:33.000Z",
      "posted_at": "2025-12-07T05:00:00.000Z",
      "voided_at": null,
      "original_txn_id": null,
      "created_at": "2025-12-07T03:41:18.283Z",
      "updated_at": "2025-12-07T04:51:22.200Z"
    },
    {
      "id": "txn_Vy8nPfW2mKqRd",
      "account_id": "acc_XtKTpHLGhD9Qn",
      "status": "posted",
      "descriptor": "NETFLIX.COM",
      "merchant": {
        "name": "Netflix",
        "logo": "https://static.methodfi.com/merchants/netflix.png"
      },
      "merchant_category_code": "4899",
      "amount": 1599,
      "auth_amount": 1599,
      "currency_code": "USD",
      "transaction_amount": 1599,
      "transaction_auth_amount": 1599,
      "transaction_currency_code": "USD",
      "transacted_at": "2025-12-01T00:00:00.000Z",
      "posted_at": "2025-12-02T05:00:00.000Z",
      "voided_at": null,
      "original_txn_id": null,
      "created_at": "2025-12-02T03:22:15.283Z",
      "updated_at": "2025-12-02T04:32:08.200Z"
    }
  ]
}
```

Each transaction includes the `merchant` name and logo, `merchant_category_code` for categorization, `amount` in cents, and timestamps for when the transaction was authorized (`transacted_at`) and settled (`posted_at`).

### Transaction Subscriptions

To receive continuous transaction updates as they happen, enroll the account in a `transaction` subscription. This triggers webhooks for every new authorization and settlement event.

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_XtKTpHLGhD9Qn/subscriptions \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "enroll": "transaction"
  }'
```

```json theme={null}
{
  "id": "sub_Dk7tLmVxQpR9w",
  "name": "transaction",
  "status": "active",
  "payload": null,
  "latest_request_id": null,
  "created_at": "2025-12-10T14:50:33.951Z",
  "updated_at": "2025-12-10T14:50:33.951Z"
}
```

Once enrolled, you'll receive `transaction.created` and `transaction.updated` webhook events as transactions flow through the account.

<Note>
  Transaction streaming is available for **Visa** and **Mastercard** credit cards only. For other networks, see the Manual Card Entry section below.
</Note>

***

## Manual Card Entry

Some card networks and issuers are not available through automatic discovery via Connect. When a user's card can't be discovered automatically — such as Amex, Apple Card, Barclays, or Navy Federal — you can use manual card entry to bring those cards into your system.

### When Manual Entry Is Needed

Automatic discovery via Connect works across most major issuers, but certain cards require the user to manually provide their card details:

* **American Express** cards
* **Apple Card**
* **Barclays** cards
* **Navy Federal Credit Union** cards

### Opal Card Connect for Manual Entry

Opal's [Card Connect](/opal/card_connect/overview) mode handles this gracefully. When a user's card can't be discovered automatically, Opal prompts the user to manually enter their PAN (card number) and CVV. This keeps sensitive card data out of your systems while still enabling the full range of Method products on that account.

<Card title="Opal Card Connect" icon="window" href="/opal/card_connect/overview">
  Full documentation for Opal's Card Connect mode, including manual PAN + CVV entry flows.
</Card>

### Account Verification for Manual Cards

When a card is entered manually, it must be verified before it can be used for transactions or payment instruments. Method supports multiple [credit card verification methods](/reference/accounts/verification-sessions/overview) including standard, pre-auth, and network-based verification.

### Tokenizing Manually-Entered Cards

Once a manually-entered card is verified, you can create a Payment Instrument to tokenize the credentials — the same flow as with auto-discovered cards:

```bash theme={null}
curl https://production.methodfi.com/accounts/acc_4m9amk4KFiaQX/payment_instruments \
  -X POST \
  -H "Method-Version: 2025-12-01" \
  -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "card"
  }'
```

```json theme={null}
{
  "success": true,
  "data": {
    "id": "pmt_inst_Rk3mHvQw7LpNx",
    "account_id": "acc_4m9amk4KFiaQX",
    "type": "card",
    "card": {
      "number": "3742454895001287",
      "exp_month": "06",
      "exp_year": "2027",
      "billing_zip_code": "90028"
    },
    "network_token": null,
    "inbound_achwire_payment": null,
    "chargeable": true,
    "status": "completed",
    "error": null,
    "created_at": "2025-12-10T15:02:44.039Z",
    "updated_at": "2025-12-10T15:02:44.039Z"
  },
  "message": null
}
```

<Warning>
  Payment Instruments is a gated product that requires approval. Contact your Method representative to enable access.
</Warning>

## What's Next

<CardGroup cols={2}>
  <Card title="Card Linking & Checkout" icon="credit-card" href="/guides/use-cases/commerce/card-linking-checkout">
    Card brand enrichment, payment instruments, and card-on-file flows.
  </Card>

  <Card title="Transactions API Reference" icon="receipt" href="/reference/accounts/transactions/overview">
    Full API documentation for Transactions.
  </Card>

  <Card title="Subscriptions API Reference" icon="bell" href="/reference/accounts/subscriptions/overview">
    Full API documentation for Account Subscriptions.
  </Card>

  <Card title="Payment Instruments API Reference" icon="key" href="/reference/accounts/payment-instruments/overview">
    Full API documentation for Payment Instruments.
  </Card>
</CardGroup>
