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

# Funding source activity history

> Every event Fluz records on a bank card, bank account, or PayPal account — added, verified, edited, removed, and set as primary or backup — and how each one appears in objectChangeHistory.

A funding source's activity history shows when the bank card, bank account, or PayPal account was added, every change to its details, when it became the primary or backup funding source, and when it was removed. Read it with `objectChangeHistory` and `objectType: FUNDING_SOURCES`.

<Info>
  **Prerequisites:** a user access token with the `VIEW_OBJECT_CHANGE_HISTORY` scope, and the ID of a funding source on the account: a `bankCardId`, `bankAccountId`, or `paypalVaultId` from [`getWallet`](/features/view-funding-sources). See [Activity history overview](/features/activity-history) for the full query, response fields, and access rules.
</Info>

```graphql theme={null}
query {
  objectChangeHistory(
    objectType: FUNDING_SOURCES
    objectId: "c4d3e2f1-a0b9-4c8d-9e7f-6a5b4c3d2e1f"
  ) {
    changeType
    change
    createdAt
    subjectUserId
    actor { userId system applicationId applicationName }
  }
}
```

A change records one `FIELD_CHANGED` event per field, with `change: { "field", "old", "new" }`.

***

## Bank cards

| Event | `changeType` / `field` | `old` → `new` | Recorded when |
| - | - | - | - |
| Added | `OBJECT_CREATED` | `change: {}` | [`addBankCard`](/features/add-bank-card), or adding a card in the Fluz web or mobile app. |
| Added again after removal | `status` | `REMOVED` or `PENDING_REMOVAL` → `ACTIVE` | A removed card is added again. |
| Removed | `status` | `ACTIVE` or `PENDING_REMOVAL` → `REMOVED` | [`deleteBankCard`](/features/delete-bank-card), or removing the card in the Fluz app. |
| Removal requested | `status` | The previous status → `PENDING_REMOVAL` | Several cards are removed at once in the Fluz web app. One event per card. |
| Verified | `verified` | `false` → `true` | The user confirms the verification charge amount in the Fluz app. |
| Card type corrected | `card_type` | The previous type, or `null` → `DEBIT`, `CREDIT`, or `PREPAID` | Fluz corrects the card type from the card's BIN data while processing a purchase or deposit. Every card on the same BIN can record this event. The actor is `system: "purchase-service"`. |
| Nickname changed | `nickname` | The previous and new nickname, or `null` | `updateBankCardNickname`, or the Fluz app. A nickname passed to `addBankCard` is recorded as a change from the card's previous nickname, which is `null` for a new card. |
| Billing address changed | `billing_address` | The previous and new address ID, or `null` | The billing address is changed in the Fluz app. The address itself is never recorded. |
| Preferred category changed | `preferred_mcc` | The previous and new merchant category ID, or `null` | `updateBankCardPreferredMerchantCategoryCode`, or the Fluz app. The value is Fluz's ID for the merchant category, not the four-digit code you pass in. When the Fluz mobile app moves a category to another card, the card that loses it records a change to `null`. |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` → `true`, or `true` → `false` | See [Primary and backup changes](#primary-and-backup-changes). |

A card removed with `deleteBankCard` records no `subjectUserId`. A card removed, or marked for removal, in the Fluz app records the user who added it as `subjectUserId`, when that's someone other than the actor.

When several cards are removed at once, the card's history ends at `PENDING_REMOVAL`. The final removal isn't recorded.

***

## Bank accounts

| Event | `changeType` / `field` | `old` → `new` | Recorded when |
| - | - | - | - |
| Linked | `OBJECT_CREATED` | `change: {}` | [`completePlaidLink`](/features/link-via-plaid), or linking the account in the Fluz web or mobile app through Plaid or MX. |
| Relinked | `status` | `DISABLED` → `ENABLED` | [`completePlaidRelink`](/features/relink-accounts), or linking a previously removed account again in the Fluz app. |
| Removed | `status` | The previous status → `DISABLED` | `removePlaidBankInstitution`, removing the account or its bank in the Fluz app, or Fluz disabling it. One event per account whose status changed. |
| Status changed | `status` | `ENABLED` ↔ `DISABLED` | The account is enabled or disabled in the Fluz mobile app. |
| Nickname changed | `nickname` | The previous and new nickname, or `null` | The nickname is changed in the Fluz app. |
| Billing address changed | `billing_address` | The previous and new address ID, or `null` | The billing address is changed in the Fluz mobile app. The address itself is never recorded. |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` → `true`, or `true` → `false` | See [Primary and backup changes](#primary-and-backup-changes). |

When a bank account is linked or relinked through the API, the event names the connected application. Changes that Fluz makes on its own, such as disabling an account after a notice from the bank connection provider, are attributed to `system: "identity-service"`. An account that Fluz support disables through a bulk import is also attributed to `system: "identity-service"`, with `"via": "CMS_IMPORT"`.

Bank accounts are the only funding sources that support ownership. [`assignObjectOwner`](/api-reference/mutations/assign-object-owner) and [`transferObjectOwner`](/api-reference/mutations/transfer-object-owner) with `objectType: FUNDING_SOURCES` record `OWNER_ASSIGNED` and `OWNER_TRANSFERRED` on the bank account, as described in [Ownership and access](/features/activity-history#ownership-and-access).

***

## PayPal

| Event | `changeType` / `field` | `old` → `new` | Recorded when |
| - | - | - | - |
| Added | `OBJECT_CREATED` | `change: {}` | A PayPal account is added in the Fluz web or mobile app. |
| Added again | `status` | The previous status → `ACTIVE` | A removed PayPal account is added again. |
| Removed | `status` | The previous status → `REMOVED` | The PayPal account is removed in the Fluz app. |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` → `true`, or `true` → `false` | See [Primary and backup changes](#primary-and-backup-changes). |

***

## Primary and backup changes

Choosing a new [primary or backup funding source](/features/primary-and-backup-funding) touches two payment methods, and each records its own event. Through the API, the primary is a bank account and the backup is a bank card. In the Fluz app, either role can be a bank card, bank account, PayPal account, or spend account.

* The newly selected funding source records `primary_funding_source` or `backup_funding_source`: `false` → `true`.
* The funding source it replaced, if there was one, records the same field: `true` → `false`.

When the other side is a spend account, the Fluz web app records its event in the [spend account's history](/features/spend-account-activity-history). The Fluz mobile app and the API record nothing you can read for it.

These events are recorded for `setPrimaryFundingSource`, `setBackupFundingSource`, and the payment method settings in the Fluz web and mobile apps. Selecting the funding source that's already set records nothing.

When the Fluz mobile app picks a backup automatically, the event is attributed to `system: "fluz-mobile-backend"`. A primary funding source that Fluz sets automatically after a bank account is linked isn't recorded.

***

## Systems you can see

| `actor.system` | What it does |
| - | - |
| `purchase-service` | Corrects a bank card's type. |
| `identity-service` | Links, relinks, and disables bank accounts from background jobs, bank connection notices, and Fluz support bulk imports (`"via": "CMS_IMPORT"`). |
| `fluz-mobile-backend` | Picks a backup funding source automatically. |

***

## What isn't recorded

* Failed verification attempts.
* The final step of a bulk card removal.
* A primary funding source set automatically after linking.
* Balance, transaction, and spend power refreshes for linked bank accounts.
* Charges and deposits made with the funding source. Use [Transaction activity](/features/transactions-details-overview) for those.

## Next steps

<CardGroup cols={2}>
  <Card title="Activity history overview" icon="history" href="/features/activity-history">
    The query, response fields, actors, approvals, and access levels.
  </Card>

  <Card title="Primary & backup funding" icon="coins" href="/features/primary-and-backup-funding">
    Read and change the funding sources that appear in this history.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.