# ANZ credit card transactions returned with a null transactionId

> ANZ returns some credit card transactions with a null transactionId, which is permitted where the field is conditional under CDR rules. openfeed generates a synthetic transaction ID so these transactions can still be ingested and served.

- Type: Known Data Holder Issue (upstream — originates at the data holder, not openfeed)
- Data holder: ANZ
- Sector: Banking
- Issue type: Inconsistent data
- Severity: Medium
- Status: Won't fix
- Affected scopes: bank:transactions:read
- openfeed action: Mitigated by openfeed
- First observed: 2026-07-20
- Last verified: 2026-07-20
- Canonical: https://openfeed.au/status/data-holders/anz-null-transaction-id

---

## What's happening

ANZ returns some credit card transactions where `transactionId` is `null`. Under the Consumer
Data Standards, `transactionId` is a conditional field. Data holders may omit it where they have
justifiable technical reasons why a transaction cannot be uniquely identified. ANZ appears to be
exercising this provision for a subset of their credit card transactions.

openfeed does not discard transactions that are returned without a `transactionId`. Instead, it
generates a synthetic transaction ID based on a defined set of transaction fields. The generated
ID is prefixed with `syn_` to distinguish it from a provider-assigned transaction ID.

Under the default strategy, the synthetic ID is derived deterministically from:

- `accountId`
- `executionDateTime`
- `amount`
- `currency`
- `description`
- `type`
- `merchantCategoryCode`

This means the synthetic ID should remain stable when the same transaction is retrieved again,
allowing openfeed to recognise it consistently across synchronisations.

## Impact

Consumers with ANZ credit card accounts connected via openfeed continue to see the affected
transactions as they are ingested and served like any other transaction, using the synthetic
`syn_`-prefixed identifier in place of the missing `transactionId`. Because the synthetic ID is
derived deterministically, records stay stable across syncs. In rare cases where two transactions
are identical across every field used to derive the ID (same account, execution time, amount,
description, type and so on), they may be treated as a single transaction — an inherent
limitation when the provider supplies no unique identifier. There is no consumer-visible error.

## Current status

Because the CDR standard permits ANZ to return a null `transactionId`, this behaviour is unlikely
to change at the data holder. openfeed handles it automatically via synthetic transaction IDs, so
no action is required by developers. We continue to monitor for any change in ANZ's behaviour and
will update this page if the situation changes.
