This guide explains how to migrate webhook consumers from the deprecated fraud_notification.created event to scheme_notice.created.
What is changing
fraud_notification.created is deprecated and will be removed on March 31.
scheme_notice.created is the replacement event for new scheme notice records.
Event envelope stays the same: id, type, created_at, data.object, api_version.
Compatibility and rollout notes
Do not listen to fraud_notification.created and scheme_notice.created at the same time in production.
A dual subscription can create duplicate processing for the same business signal.
fraud_notification.created events are not remapped onto existing SchemeNotice rows.
Historical backfill/migration does not emit webhook side effects (no replay).
Use a strict cutover plan: stop legacy consumption, then start new event consumption.
Payload changes (data.object)
The new event payload is based on SchemeNotice.
Field mapping
Deprecated event (fraud_notification.created)
Replacement (scheme_notice.created)
Notes
id (frdnt_*)
id (schntc_*)
Object id prefix changes
organisation_id
organisation_id
Same
fraud_notification_type
scheme_notice_type
Renamed; allowed values: TC15, TC40, SAFE (fraud_notification.created used TC40/SAFE)
fraud_reported_at
fraud_reported_at
Same semantic meaning
fraud_type
fraud_type
Same
transaction_amount_in_cents
transaction_amount_in_cents
Same
transaction_currency_code
transaction_currency_code
Same
transaction_card_bin
transaction_card_bin
Same
transaction_card_last4
transaction_card_last4
Same
transaction_merchant_name
transaction_merchant_name
Same
transaction_merchant_id
transaction_merchant_id
Same
transaction_acquirer_reference_number
transaction_acquirer_reference_number
Same
transaction_authorisation_code
transaction_authorisation_code
Same
transaction_original_date
transaction_original_date
Same
(not available)
merchant_id
New, nullable
(not available)
notice_type
New (FRAUD_NOTICE or DISPUTE_NOTICE)
(not available)
scheme
New (VISA, MASTERCARD, OTHER)
(not available)
is_revoked
New lifecycle field
(not available)
notice_revoked_at
New lifecycle timestamp
(not available)
fraud_dispute_eligible
New optional boolean
(not available)
transaction_purchase_date
New optional timestamp
(not available)
created_at, updated_at
Object-level timestamps
Example: new event format
Timestamps are RFC 3339 UTC. In production payloads, envelope created_at is emitted as an offset timestamp (for example +00:00), while data.object datetime fields are emitted with a Z suffix. Fractional seconds may appear when present.
Consumer migration checklist
1
Prepare your consumer code to support scheme_notice.created
Prepare your consumer code to support scheme_notice.created before changing subscriptions.
2
Update parser mappings
replace fraud_notification_type with scheme_notice_type
expect object id to use schntc_* prefix
3
Keep existing logic for common fields
Keep existing logic for common fields (fraud_reported_at, transaction_*, fraud_type).
4
Add null-safe handling for new optional fields
Add null-safe handling for new optional fields (merchant_id, transaction_purchase_date, fraud_dispute_eligible, notice_revoked_at).
5
Execute strict cutover in webhook settings
disable/unsubscribe fraud_notification.created
enable/subscribe scheme_notice.created
do not run both subscriptions concurrently in production
6
Keep handler focused on create semantics
Keep your handler focused on create semantics for scheme_notice.created.
Recommended strict cutover strategy
Use a single-event-family cutover to avoid duplicates:
1
Deploy consumer changes that can parse scheme_notice.created
Deploy consumer changes that can parse scheme_notice.created.
2
Switch subscription in one cutover window
In production webhook configuration, switch subscription from fraud_notification.created to scheme_notice.created in one cutover window.
3
Verify delivery and downstream processing
Verify successful delivery and downstream processing.
4
Keep legacy handler for rollback only
Keep legacy handler code temporarily for rollback, but keep legacy subscription disabled unless rolling back.