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

# Activity history event catalog

> Every event Fluz records in activity history, by object: the changeType, the field, the values, and what records it.

This page lists every event `objectChangeHistory` can return, grouped by object. Each row is one event you can get back. For the query itself, actors, and access rules, see [Activity history overview](https://docs.fluz.app/features/activity-history.md).

How to read the tables:

* **`changeType`** is the kind of event.
* **`field`** is set on `FIELD_CHANGED` events and names what changed.
* **`old` → `new`** are the values in `change.old` and `change.new`.

Treat every list here as open. Fluz adds events as it records more actions.

***

## Events on every object

These work the same way on each object that supports them. See [Ownership and access](https://docs.fluz.app/features/activity-history.md#ownership-and-access) and [Approvals](https://docs.fluz.app/features/activity-history.md#approvals).

| Event | `changeType` | `change` | Objects |
| - | - | - | - |
| Created | `OBJECT_CREATED` | Usually `{}` | All four |
| Owner assigned | `OWNER_ASSIGNED` | `field: "user_id"`, `null` → user ID | Virtual card, gift card, spend account, bank account |
| Owner transferred | `OWNER_TRANSFERRED` | `field: "user_id"`, old user ID → new user ID | Virtual card, gift card, spend account, bank account |
| Access granted | `ACCESS_GRANTED` | `field: "role"`, `null` → access level | Virtual card, gift card, spend account |
| Access level changed | `ACCESS_LEVEL_CHANGED` | `field: "role"`, old level → new level | Virtual card, gift card, spend account |
| Access revoked | `ACCESS_REVOKED` | `field: "role"`, access level → `null` | Virtual card, gift card, spend account |
| Invite access granted, changed, or revoked | `PENDING_ACCESS_GRANTED`, `PENDING_ACCESS_LEVEL_CHANGED`, `PENDING_ACCESS_REVOKED` | `field: "role"`, plus `subject_non_registered_user_id` | Virtual card, gift card, spend account |
| Invited person registered | `ACCESS_APPLIED_ON_REGISTRATION` | `field: "role"` | Virtual card, gift card, spend account |
| Approval requested | `APPROVAL_REQUESTED` | `approval_type`, `approval_code` | Virtual card, gift card, spend account |
| Approval approved | `APPROVAL_APPROVED` | `approval_type`, `approval_code`, `decision_channel` | Virtual card, gift card, spend account |
| Approval declined | `APPROVAL_DECLINED` | `approval_type`, `approval_code`, `decision_channel` | Virtual card, gift card, spend account |
| Approval expired | `APPROVAL_EXPIRED` | `approval_type`, `approval_code` | Virtual card, gift card, spend account |

Access levels: `GUEST` `0`, `VIEWER` `1`, `SPENDER` `10`, `MANAGER` `100`, `ADMIN` `1000`.

***

## Virtual card events

`objectType: VIRTUAL_CARDS`. Details: [Virtual card activity history](https://docs.fluz.app/features/virtual-card-activity-history).

### Creation

| Event | `changeType` | `change` | Recorded when |
| - | - | - | - |
| Card created | `OBJECT_CREATED` | `{}` | `createVirtualCard`, the Fluz app, or an approved card request |
| Card created by a schedule or bulk order | `OBJECT_CREATED` | `{ "source": "SCHEDULE", "scheduled_task_id", "scheduled_event_id" }` | `createVirtualCardBulkOrder` or a scheduled creation |
| Card created by CSV import | `OBJECT_CREATED` | `{ "source": "CSV_IMPORT", "import_job_id" }` | A CSV import in the Fluz app |

### Settings

| Event | `field` | `old` → `new` |
| - | - | - |
| Nickname changed | `nickname` | Nickname, or `null` |
| Spend limit changed | `spend_limit` | Dollars, for example `500`, or `null` |
| Limit period changed | `spend_limit_duration` | `DAILY`, `WEEKLY`, `MONTHLY`, `ANNUAL`, `LIFETIME`, or `null` |
| Lock date changed | `lock_date` | ISO 8601 UTC timestamp, or `null` |
| Lock after next use turned on or off | `lock_next_use` | `true` / `false` |
| Funding bank account changed | `funding_source` | `bankAccountId`, or `null` |
| Funding spend account changed | `spend_account` | `userCashBalanceId`, or `null` |
| Single-use card converted to multi-use | `card_type` | `SINGLE_USE` → `MULTI_USE` |

### Status

| Event | `field` | `old` → `new` | Extra keys |
| - | - | - | - |
| Locked by a user | `status` | `UNLOCKED` → `LOCKED` | — |
| Unlocked | `status` | `LOCKED` → `UNLOCKED` | — |
| Locked by Fluz | `status` | `UNLOCKED` → `LOCKED` | `reason` |
| Locked by Fluz support | `status` | `UNLOCKED` → `LOCKED` | — |
| Single-use card spent | `status` | → `USED` | — |
| Cancelled | `status` | → `CANCELLED` | `reason` |
| Expired | `status` | `UNLOCKED` or `LOCKED` → `EXPIRED` | — |

### Security

| Event | `field` | `old` → `new` |
| - | - | - |
| PIN set | `pin` | `null` → `"updated"` |
| Added to a digital wallet | `wallet_token` | → `"added"` |
| Wallet token activated | `wallet_token` | `"added"` → `"activated"` |
| Wallet token removed | `wallet_token` | → `"removed"` |
| Billing address updated by Fluz support | `billing_address` | `null` → `"UPDATED"`, with `"via": "BUSINESS_ADDRESS_UPDATE"` |

### Expense details

Recorded on the card a transaction was made with. Each event also carries `transaction_log_id` and `transaction_record_id`.

| Event | `field` | `old` → `new` |
| - | - | - |
| Memo added, changed, or removed | `memo` | `null` → `ADDED`, `CHANGED`, or `REMOVED` |
| Receipt added, changed, or removed | `receipt` | `null` → `ADDED`, `CHANGED`, or `REMOVED` |
| Expense category changed | `expense_category` | Category names, plus `old_id` / `new_id` |
| QuickBooks category changed | `erp_category` | Category names, plus `old_id` / `new_id` |

### Sharing

| Event | `changeType` | Extra keys |
| - | - | - |
| Shared card claimed by the recipient | `ACCESS_GRANTED` or `ACCESS_LEVEL_CHANGED` | `"reason": "shared-card-claim"` |

Plus the ownership, access, invite, and approval events in [Events on every object](#events-on-every-object).

***

## Gift card events

`objectType: GIFT_CARDS`. Details: [Gift card activity history](https://docs.fluz.app/features/gift-card-activity-history).

| Event | `changeType` / `field` | `old` → `new` |
| - | - | - |
| Gift card purchased | `OBJECT_CREATED` | `{}` |
| Archived, or marked spent in the web app | `status` | `ACTIVE` → `ARCHIVED` |
| Reactivated | `status` | `ARCHIVED` → `ACTIVE` |
| Balance edited | `balance` | Numbers, for example `25` → `12.5` |
| Memo added, changed, or removed | `memo` | `null` → `ADDED`, `CHANGED`, or `REMOVED` |
| Receipt added, changed, or removed | `receipt` | `null` → `ADDED`, `CHANGED`, or `REMOVED` |
| Expense category changed | `expense_category` | Category names |
| QuickBooks category changed | `erp_category` | Category names |

Plus the ownership, access, invite, and approval events in [Events on every object](#events-on-every-object).

***

## Spend account events

`objectType: SPEND_ACCOUNTS`. Details: [Spend account activity history](https://docs.fluz.app/features/spend-account-activity-history).

| Event | `changeType` / `field` | `old` → `new` |
| - | - | - |
| Spend account created | `OBJECT_CREATED` | `{}` |
| Renamed | `nickname` | Previous and new nickname |
| Image changed | `image` | Previous and new image URL, or `null` |
| Became the default | `is_default` | `false` → `true` |
| Stopped being the default | `is_default` | `true` → `false` |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` ↔ `true` |
| Closed | `status` | For example `ACTIVE` → `CLOSED` |

Plus the ownership, access, invite, and approval events in [Events on every object](#events-on-every-object).

***

## Funding source events

`objectType: FUNDING_SOURCES`. Details: [Funding source activity history](https://docs.fluz.app/features/funding-source-activity-history).

### Bank cards

| Event | `changeType` / `field` | `old` → `new` |
| - | - | - |
| Added | `OBJECT_CREATED` | `{}` |
| Added again after removal | `status` | `REMOVED` or `PENDING_REMOVAL` → `ACTIVE` |
| Removed | `status` | `ACTIVE` or `PENDING_REMOVAL` → `REMOVED` |
| Removal requested | `status` | → `PENDING_REMOVAL` |
| Verified | `verified` | `false` → `true` |
| Card type corrected | `card_type` | → `DEBIT`, `CREDIT`, or `PREPAID` |
| Nickname changed | `nickname` | Nickname, or `null` |
| Billing address changed | `billing_address` | Address ID, or `null` |
| Preferred category changed | `preferred_mcc` | Merchant category ID, or `null` |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` ↔ `true` |

### Bank accounts

| Event | `changeType` / `field` | `old` → `new` |
| - | - | - |
| Linked | `OBJECT_CREATED` | `{}` |
| Relinked | `status` | `DISABLED` → `ENABLED` |
| Removed or disabled | `status` | → `DISABLED` |
| Enabled or disabled | `status` | `ENABLED` ↔ `DISABLED` |
| Nickname changed | `nickname` | Nickname, or `null` |
| Billing address changed | `billing_address` | Address ID, or `null` |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` ↔ `true` |
| Owner assigned or transferred | `OWNER_ASSIGNED`, `OWNER_TRANSFERRED` | User IDs |

### PayPal

| Event | `changeType` / `field` | `old` → `new` |
| - | - | - |
| Added | `OBJECT_CREATED` | `{}` |
| Added again | `status` | → `ACTIVE` |
| Removed | `status` | → `REMOVED` |
| Set or replaced as primary or backup | `primary_funding_source`, `backup_funding_source` | `false` ↔ `true` |

***

## Approval codes

| Request | `approval_type` | `approval_code` | Recorded on |
| - | - | - | - |
| Create a virtual card | `VIRTUAL_CARD_CREATION` | `600003` | The new card |
| Replace a card funded by a restricted bank account | `VIRTUAL_CARD_CREATION` | `600004` | The original card, then the replacement |
| Change a card's spend limit | `VIRTUAL_CARD` | `600002` | The card |
| Unlock a card | `VIRTUAL_CARD` | `600005` | The card |
| Change a card's lock date | `VIRTUAL_CARD` | `600006` | The card |
| Unlock a card declined because it was locked | `VIRTUAL_CARD` | `600102` | The card |
| Raise a limit after a declined purchase | `VIRTUAL_CARD` | `600103` | The card |
| Purchase a gift card | `GIFT_CARD` | `400007` | The new gift card |
| Access to an object | `ACCOUNT_ACCESS` | `100004`, `100005` | The virtual card, gift card, or spend account |

***

## Reason and source values

| Key | Value | Meaning |
| - | - | - |
| `reason` (lock) | `LOCK_DATE_REACHED` | The card's lock date passed. |
| | `LOCK_NEXT_USE` | The card was set to lock after next use and was used. |
| | `SINGLE_LOAD_LIMIT` | The card reached its single-load limit. |
| | `FRAUD_DECISION` | A fraud review locked the card. |
| | `TOKENIZATION_RISK` | Adding the card to a digital wallet failed a risk check. |
| | `LOCKED_BY_SYSTEM` | Fluz locked the card for another reason. |
| | `PURCHASE_CLEANUP` | Locked while cleaning up a purchase that didn't complete. |
| | `FUNDING_SOURCE_REMOVED` | The funding source behind the card was removed. |
| `reason` (cancel) | `USER_REQUESTED_CANCEL` | A user cancelled the card. |
| | `PURCHASE_VIRTUAL_CARD_ERROR` | The purchase that created the card failed. |
| | `FLUZPAY_WITHDRAW_OR_USAGE` | Fluz cancelled a reserved card to release its balance. |
| `reason` (access) | `owner-floor` | The owner's minimum `SPENDER` access was granted, raised, or removed. |
| | `shared-card-claim` | A recipient claimed a shared card. |
| `source` | `SCHEDULE`, `CSV_IMPORT` | How a virtual card was created. |
| `via` | `BUSINESS_ADDRESS_UPDATE` | Fluz support updated a business address on all its cards. |
| | `CMS_IMPORT` | Fluz support disabled a bank account through a bulk import. |

***

## Systems you can see

| `actor.system` | Objects | What it does |
| - | - | - |
| `virtual-card-service` | Virtual card | Locks, unlocks, marks cards used, applies approved limit increases, records wallet token updates. |
| `virtual-card-expirer` | Virtual card | Expires cards. |
| `purchase-service` | Virtual card, funding source | Cancels a card whose purchase failed. Corrects a bank card's type. |
| `scheduled-task-handler` | Virtual card, gift card, spend account | Creates scheduled cards, gift cards, and spend accounts. |
| `approvals-service` | Virtual card, gift card, spend account | Records expired requests and decisions made through a link with no named approver. |
| `erp-service` | Virtual card, gift card | Applies a QuickBooks category automatically. |
| `transactional-graph-service` | Virtual card, gift card, spend account | API changes where the caller can't be resolved to a user. |
| `business-service` | Spend account | Creates spend accounts during business onboarding and conversion. |
| `fluz-web-unified` | Spend account | Creates a spend account during embedded widget setup. |
| `identity-service` | Funding source | Links, relinks, and disables bank accounts from background jobs. |
| `fluz-mobile-backend` | Funding source | Picks a backup funding source automatically. |
| `cms` | All | Fluz support. |

***

## What isn't recorded

* **Reads.** Revealing card details or a gift card code, viewing balances, and listing objects.
* **Money movement.** Transactions, authorizations, refunds, deposits, withdrawals, and transfers. Use [Transaction activity](https://docs.fluz.app/features/transactions-details-overview.md).
* **Other things on the account.** Authorized users, roles, approvals that don't touch one of the four objects, share links, and developer applications.
* **Group access.** Access a user has through a group.
* **A few specific actions.** A card closed only at the issuer, failed bank card verifications, the last step of a bulk card removal, a primary funding source set automatically after linking, and gift card status changes made in Fluz Enterprise.

## Next steps

> **[Activity history overview](https://docs.fluz.app/features/activity-history.md)**
>
> The query, response fields, actors, approvals, and access levels.

> **[Approvals & requests](https://docs.fluz.app/features/approvals-and-requests.md)**
>
> The requests that create approval events in activity history.


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