Mercury Banking sync misses three data points present in every Mercury API payload:
- Pending transactions are silently dropped —
status: "pending" entries are never imported, so Mercury pending charges don't appear until they post.
- Payment rail (
kind) is not stored — Mercury returns kind: "ACH" | "Wire" | "Card" | "InternalTransfer" on every transaction; the field is unused.
- Counterparty ID is not stored — Mercury provides
counterpartyId (a stable UUID) useful for deduplication and future analytics; the field is unused.
Additionally, Transaction::PENDING_PROVIDERS does not include "mercury", so even if pending data were stored, the existing pending-detection SQL and Transaction#pending? would never check it.
Scope: import pending Mercury transactions, store kind and counterpartyId under extra["mercury"], add "mercury" to PENDING_PROVIDERS so the existing pending→posted reconciliation pipeline activates for Mercury, with test coverage.
Mercury Banking sync misses three data points present in every Mercury API payload:
status: "pending"entries are never imported, so Mercury pending charges don't appear until they post.kind) is not stored — Mercury returnskind: "ACH" | "Wire" | "Card" | "InternalTransfer"on every transaction; the field is unused.counterpartyId(a stable UUID) useful for deduplication and future analytics; the field is unused.Additionally,
Transaction::PENDING_PROVIDERSdoes not include"mercury", so even if pending data were stored, the existing pending-detection SQL andTransaction#pending?would never check it.Scope: import pending Mercury transactions, store
kindandcounterpartyIdunderextra["mercury"], add"mercury"toPENDING_PROVIDERSso the existing pending→posted reconciliation pipeline activates for Mercury, with test coverage.