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

# Updates

> How Method keeps account data fresh, snapshot vs direct sources.

## Keeping Account Data Fresh and Accurate

### What an Update Is

An Update is the mechanism through which Method delivers the latest state of a connected account: current balance, payment due date, minimum payment amount, interest rate, credit limit, and other relevant fields depending on the account type. If [Connect](/guides/connect/overview) is how you discover accounts, Updates are how you keep those accounts' data current over time.

The freshness and accuracy of your account data directly impacts the quality of your product experience. A debt repayment app that shows last month's balance feels broken. A payment scheduler that uses stale due dates risks missed payments. Updates are how you ensure your product reflects financial reality, not an outdated snapshot.

### Two Sources of Truth: Snapshot vs. Direct

Updates come from two fundamentally different data sources, and choosing between them is an important product decision:

## Checking Update Availability

Before requesting an Update, check the account's `products` array:

* `update` in `products` means direct Updates are available (real-time data from the institution).

If `update` is in `restricted_products` instead of `products`, direct Updates require additional steps (e.g., account verification). If `update` does not appear, data retrieval isn't currently available for this account.

<Tabs>
  <Tab title="Snapshot">
    Pull data from the user's credit report. Credit reports are compiled by the major bureaus and updated when creditors submit their reporting data, typically on a monthly cycle. Snapshot data is available for the broadest range of accounts, but it's only as fresh as the most recent creditor report.

    | Attribute     | Detail                                                                  |
    | ------------- | ----------------------------------------------------------------------- |
    | **Freshness** | Monthly (credit report cycle)                                           |
    | **Delivery**  | Produced by an `update.snapshot` subscription and delivered via webhook |
    | **Coverage**  | Broadest, works for virtually every account                             |

    **Best for:** Building account overview screens, displaying general balance trends, monitoring credit health over time, showing account summaries where approximate data is acceptable, or when you need data for account types where direct connections aren't available. Snapshot Updates are your reliable baseline. They work for virtually every discovered account and provide a good-enough picture for many use cases.

    Snapshot Updates cannot be created on demand. Subscribe to `update.snapshot` so Method delivers a fresh snapshot whenever the bureau reports new data, then retrieve the most recent snapshot from the list endpoint:

    ```bash theme={null}
    curl https://production.methodfi.com/accounts/acc_yVf3mkzbhz9tj/subscriptions \
      -X POST \
      -H "Method-Version: 2026-03-30" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{"type": "update.snapshot"}'

    curl "https://production.methodfi.com/accounts/acc_yVf3mkzbhz9tj/updates?source=snapshot" \
      -H "Method-Version: 2026-03-30" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
    ```
  </Tab>

  <Tab title="Direct">
    Pull data directly from the financial institution in real time. This means the data reflects the account's current state as of the moment the institution responds, including very recent payments, daily interest accrual, and same-day balance changes. Direct Updates are asynchronous (you submit a request and receive the result via webhook when it completes) and take longer, but the data is significantly more current.

    | Attribute     | Detail                                   |
    | ------------- | ---------------------------------------- |
    | **Freshness** | Real-time (as of institution response)   |
    | **Response**  | Async (webhook delivery)                 |
    | **Coverage**  | Narrower, depends on institution support |

    **Best for:** Confirming a balance before initiating a payment, displaying exact payment due dates or minimum payment amounts, current interest rate or APR information, verifying that a recent payment has posted, or when accuracy is critical to your product's core value proposition.

    ```bash theme={null}
    curl https://production.methodfi.com/accounts/acc_yVf3mkzbhz9tj/updates \
      -X POST \
      -H "Method-Version: 2026-03-30" \
      -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
      -H "Content-Type: application/json" \
      -d '{"type": "direct"}'
    ```
  </Tab>
</Tabs>

<Note>
  Many products use both: snapshot data as the default display, with direct Updates triggered when the user takes an action that requires current data (like preparing to make a payment).
</Note>

## The Update Flow

<Accordion title="On-demand direct Update walkthrough">
  ### On-Demand (Direct) Update

  **Step 1: Request a direct Update**

  ```bash theme={null}
  curl https://production.methodfi.com/accounts/acc_yVf3mkzbhz9tj/updates \
    -X POST \
    -H "Method-Version: 2026-03-30" \
    -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc" \
    -H "Content-Type: application/json" \
    -d '{"type": "direct"}'
  ```

  The response returns immediately with `status: pending`:

  ```json theme={null}
  {
    "id": "upt_NYV5kfjskTTCJ",
    "status": "pending",
    "account_id": "acc_yVf3mkzbhz9tj",
    "source": "direct",
    "type": "credit_card",
    "credit_card": null,
    "error": null,
    "created_at": "2024-03-20T04:43:21.434Z",
    "updated_at": "2024-03-20T04:43:21.655Z"
  }
  ```

  ### Step 2: Wait for completion

  Listen for the `update.update` webhook:

  ```json theme={null}
  {
    "type": "update.update",
    "path": "/accounts/acc_yVf3mkzbhz9tj/updates/upt_NYV5kfjskTTCJ"
  }
  ```

  ### Step 3: Retrieve the completed Update

  ```bash theme={null}
  curl https://production.methodfi.com/accounts/acc_yVf3mkzbhz9tj/updates/upt_NYV5kfjskTTCJ \
    -H "Method-Version: 2026-03-30" \
    -H "Authorization: Bearer sk_WyZEWVfTcH7GqmPzUPk65Vjc"
  ```

  The completed Update contains the account's current data:

  ```json theme={null}
  {
    "id": "upt_NYV5kfjskTTCJ",
    "status": "completed",
    "account_id": "acc_yVf3mkzbhz9tj",
    "source": "direct",
    "type": "credit_card",
    "data_as_of": "2024-03-20T04:43:21.434Z",
    "credit_card": {
      "available_credit": 120000,
      "balance": 80000,
      "credit_limit": 200000,
      "interest_rate_percentage_max": 23.5,
      "interest_rate_percentage_min": 12.0,
      "interest_rate_type": "variable",
      "last_payment_amount": 5000,
      "last_payment_date": "2024-04-05",
      "next_payment_due_date": "2024-05-01",
      "next_payment_minimum_amount": 4000,
      "opened_at": "2018-10-30"
    },
    "error": null,
    "created_at": "2024-03-20T04:43:21.434Z",
    "updated_at": "2024-03-20T04:43:21.655Z"
  }
  ```
</Accordion>

## Reading the Update Response

The Update response wraps the account data inside a liability-type object. The key fields:

| Field              | Description                                                                                                                                                             |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `source`           | `snapshot` or `direct`, which data source this Update used.                                                                                                             |
| `type`             | The liability type: `credit_card`, `auto_loan`, `student_loans`, `mortgage`, `personal_loan`, etc.                                                                      |
| `data_as_of`       | Timestamp of when this data was current. For direct, this is the moment the institution responded. For snapshot, this is when the creditor last reported to the bureau. |
| `[liability_type]` | The data object (e.g., `credit_card`, `auto_loan`). Contains the balance, rates, payment info, and dates specific to that account type.                                 |
| `status`           | `pending`, `processing`, `completed`, or `failed`. See [Update Lifecycle](/guides/updates/lifecycle).                                                                   |
| `error`            | Populated if the Update failed. See [Handling Failures](/guides/updates/failures).                                                                                      |

<Note>
  **All monetary amounts are in cents.** A `balance` of `80000` means \$800.00. A `last_payment_amount` of `5000` means \$50.00.
</Note>

## Next Steps

<CardGroup cols={2}>
  <Card title="Update Subscriptions" icon="arrows-rotate" href="/guides/updates/subscriptions">
    Set up automatic data refreshes without manual requests.
  </Card>

  <Card title="Update Lifecycle" icon="arrows-spin" href="/guides/updates/lifecycle">
    Understand the stages of an Update request.
  </Card>

  <Card title="Handling Failures" icon="triangle-exclamation" href="/guides/updates/failures">
    Design resilient UX around failed or stale data.
  </Card>

  <Card title="Updates API Reference" icon="code" href="/reference/accounts/updates/overview">
    Full endpoint documentation, fields, and error codes.
  </Card>
</CardGroup>
