Week Ending 2026-07-31

Production

Card Subscriptions

GET /card-subscriptions

  • You can now filter the subscription list by state and by networkBulkFeedId. Both are plain query parameters and combine (AND) with the existing filters. state=active also matches subscriptions still completing activation (they already serialize as active).

Card enrollment — Visa single-card

  • Enrollment requests the network rejects for bad card data now fail with a 400 carrying the actual reason (for example an invalid expiration date) instead of an opaque 500 Internal Server Error. Your error handling can treat these as client-fixable input problems rather than retryable server faults.

Card Transactions

GET /transactions — correctness fix

  • Mastercard Fuel pre-authorizations on debit cards no longer have the potential to double-count. On some debit fuel transactions the completion amount was added to the pre-auth instead of replacing it, inflating settledAmount. The mapping is fixed and previously affected transactions have been corrected, each emitting a transaction.updated with the right amount.

Amex Bulk Enrollment

  • Reissued cards no longer produce duplicate clearings. When a card is reissued (same PAN, new expiry, both cards active), each clearing was delivered once per card link. Clearings now resolve to the latest link only. This is the same behavior that exists for Visa and Mastercard.
  • Card enrollment hardened when issuer country data is incomplete. When the Amex starter data file carries an incorrect country for a card, enrollment is retried with the country derived from the card number (bin lookup) so enrollments that used to dead-end as "unsupported country" now succeed when the card is actually eligible. The card's country must still pass the account's country eligibility check.
  • panFormat (encrypted | tokenized, read-only) is now documented on all network-bulk-feed responses.

Banking

POST /bank-links + bank-link resource

  • Bank links now record and return the open-banking provider they were created with. The bank-link resource exposes a read-only provider (older links may omit it), and POST /bank-links accepts optional provider and countryCode;omitted values fall back to your account's bank-linking policy, then the platform defaults, so existing requests behave exactly as before. A provider that isn't enabled for your account returns a 400. The Unified Enrollment SDK accepts the same knobs via bankLink: { provider, countryCode }.

transaction.created / transaction.updated webhooks

  • Transaction webhook payloads now carry bankData, including the bank-feed join key. For bank-feed transactions, the webhook payload includes bankData.bankTransactionId .This is the same id as the matching banktransaction.created event, so push-only consumers can join the bank and card views of the same spend without a REST read. This also relates to GET /transactions as bankData.bankTransactionId is now always the Astrada bank-transaction id and the provider's raw id moved to the new bankData.providerTransactionId.