Understand transaction datetime fields
What execution_datetime, posting_datetime, and value_datetime mean, and which ones you can rely on.
Banking transactions carry up to three datetime fields. They are not all consistently populated — which fields you receive depends on the institution and the transaction's status — so it matters which one your application relies on.
What each field means
| Field | Meaning |
|---|---|
execution_datetime | When the transaction was executed or initiated. |
posting_datetime | When the institution posted (settled) the transaction to the account. |
value_datetime | The date the transaction took effect for value purposes (for example, interest calculation). |
How consistently are they returned?
Population varies by data holder. In Australia (CDR), institutions are required to supply a posting datetime for posted transactions, while the execution and value datetimes are only supplied where available — so:
POSTEDtransactions should reliably carryposting_datetime.PENDINGtransactions have not settled, so they typically carryexecution_datetimebut noposting_datetime.execution_datetimeandvalue_datetimecoverage differs between institutions; do not assume every transaction has them.
Handle missing fields
- Treat
posting_datetimeas your primary transaction date. - Fall back to
execution_datetimewhenposting_datetimeis empty. This mirrors the API's own behaviour: thefrom/todate filters onGET /v1/banking/transactionscompare againstposting_datetimeand fall back toexecution_datetime, and transactions with neither are excluded from date-filtered results. - Treat
value_datetimeas supplementary. Use it when present (for example, for interest-sensitive calculations), but never build logic that requires it. - Key your records on
transaction_id, not on datetimes. Datetimes can shift as a transaction moves from pending to posted, and institutions can back-date transactions.
Sorting and display
For user-facing transaction lists, sorting by posting_datetime (falling back to execution_datetime) gives the closest match to what users see in their own banking app.
For the full transaction schema, see the API reference. Related: Query transactions by date range.