What to expect with two feeds
Authorized events are OpenCard-specific. Many legacy feeds never send authorisations. You will see
card.transaction.authorized from OpenCard that have no counterpart on the old feed — use them for in-app previews, not for deduplication against the other source.
Retroactive batch on onboard. When card_holder.identified fires, OpenCard replays transaction states since the latest card invoice for that person’s cards on the TPA. The same cleared purchases may already exist in your system from the other integration.
→ Card holder onboarding (Path 🅰️ and Path 🅱️)
Deduplicating with card_issuer_reference
The practical way to run both feeds in parallel:
- Start processing OpenCard per card holder when
card_holder.identifiedarrives. - Upsert on OpenCard transaction
idas your primary key for the OpenCard feed. - On
card.transaction.cleared, check whether you already stored the purchase from the other feed usingcard_issuer_referenceon the cleared payload.
card_issuer_reference only on card.transaction.cleared, not on authorized. The same purchase can carry different card_issuer_reference values on authorized vs cleared; that depends on the card issuer and OpenCard cannot normalize it.
- To end the old feed, your client terminates it with their card issuer. Agree with your client when to stop processing the other integration on your side.

