Skip to content

wishlist: date filtering based on posted instead of transacted_at #19

@tianon

Description

@tianon

I don't know if this is specific to the account I'm querying, but start-date and end-date (/accounts?start-date=...&end-date=...) appear to filter based on transacted_at -- this isn't clear in the protocol documentation (which is perhaps lower-hanging fruit), but it would actually be really nice for my own use case if I could somehow filter by posted instead. ❤️

Here's a slightly redacted (but otherwise 100% real) example transaction that doesn't show up if my start-date is 1754031600 (2025-08-01T07:00:00Z), but does show up if start-date is 1753945200 (2025-07-31T07:00:00Z).

I then tried even more specific start-date and end-date values to perfectly wrap this one transaction (transacted_at - 1 and transacted_at + 1 and then the same with posted) and got exactly the results I expected:

$ curl -fsSL "$url/accounts?account=$account&start-date=1753963199&end-date=1753963201" | jq '.accounts[].transactions | map(select(.payee == "Taco Bell") | .id |= gsub("[a-z0-9]"; "x") | .description |= "TACO BELL")'
[
  {
    "id": "TRN-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "posted": 1754049600,
    "amount": "-12.98",
    "description": "TACO BELL",
    "payee": "Taco Bell",
    "memo": "",
    "transacted_at": 1753963200
  }
]

$ curl -fsSL "$url/accounts?account=$account&start-date=1754049599&end-date=1754049601" | jq '.accounts[].transactions | map(select(.payee == "Taco Bell") | .id |= gsub("[a-z0-9]"; "x") | .description |= "TACO BELL")'
[]

(ie, start-date and end-date are based on transacted_at, not posted, and I don't see anything in the official protocol documentation that specifies whether that can be swapped 🙇)

It also comes back if I set end-date to 1753963200 exactly and leave start-date set to 1753963199, which is contrary to the documentation (and the same if I set start-date to 1753963200 and end-date to 1753963201):

Parameter Required Description
start-date optional If given, transactions will be restricted to those on or after this Unix epoch timestamp.
end-date optional If given, transactions will be restricted to those before (but not on) this Unix epoch timestamp.
pending optional If pending=1 is provided, pending transactions will be included (if supported). By default, pending transaction are NOT included.

So perhaps the documentation should also be updated to note that it's inclusive at both ends? 😅


That's all really rambly so here's the TLDR:

  • start-date and end-date appear to filter based on transacted_at; it would be nice if the documentation mentioned this explicitly
  • start-date and end-date appear to be inclusive at both ends, contrary to the documentation
  • it would be really nice to be able to filter based on posted instead or as well as (especially since posted is the timestamp/date most bank web UIs show)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions