Skip to content

EventBridge domain event catalogue

Every domain event emitted by bank services onto Amazon EventBridge. Governed by ADR-029 (superseded by ADR-051 — see ADR-051 for current EventBridge bus naming convention) (domain event routing) and enforced by MOD-043 (EventBridge domain event governance).

Architecture constraints:

  • One bus per system domain. Bus names follow bank-<domain> (e.g. bank-core, bank-kyc).
  • Event name pattern: bank.<domain>.<noun>_<past-tense-verb>
  • All events carry a schema_version field. Consumers must validate this before processing.
  • Money amounts are always fixed-point decimal strings — never floats.
  • event_id and idempotency_key are always required. Consumers must deduplicate on idempotency_key.
  • All timestamps are ISO 8601 UTC.
  • Events document only fields that cross module boundaries. Internal state fields stay in the emitting service.
  • EventBridge is for fan-out. Publish to EventBridge when two or more independent consumers need the event. A single consumer means a direct Lambda invoke or an SQS queue — EventBridge adds latency and an infrastructure rule with no benefit. If a second consumer arrives later, migrate to EventBridge at that point.

Related: ADR-029 (superseded by ADR-051 — see ADR-051 for current EventBridge bus naming convention) · Interface contracts · Data contracts


SD01 — Core Banking (bank-core bus)

bank.core.posting_completed

Emitted by MOD-001 on every successful double-entry posting committed to the ledger.

Field Type Required Notes
event_id uuid Unique event ID
event_time ISO8601 UTC
schema_version string e.g. "1.0.0"
posting_id uuid Stable posting reference
account_id uuid
amount string Fixed-point decimal e.g. "123.45" — never float
currency string ISO 4217
direction string DEBIT or CREDIT
posting_type string PAYMENT / ACCRUAL / FX_CONVERSION / ADJUSTMENT / REVERSAL
ledger_balance_after string Fixed-point decimal
available_balance_after string Fixed-point decimal
idempotency_key string Caller-supplied; deduplication key
counterparty_account_id uuid Present for internal transfers

Consumers: MOD-022 (payment audit trail), MOD-002 (immutable transaction log), MOD-042 (CDC → Snowflake Iceberg), MOD-043 (EventBridge governance)


bank.core.balance_updated

Emitted by MOD-003 whenever a customer or nostro account balance changes, after the posting is committed. Enables downstream cache invalidation without polling.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
account_id uuid
currency string ISO 4217
ledger_balance string Fixed-point decimal
available_balance string Fixed-point decimal
posting_id uuid Causal posting reference
idempotency_key string

Consumers: MOD-070 (transaction history & search), MOD-077 (account dashboard), MOD-032 (LCR/NSFR calculator), MOD-042 (CDC → Snowflake)


bank.core.account_status_changed

Emitted by MOD-007 when an account transitions between states (PendingActiveRestrictedDormantClosed).

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
account_id uuid
customer_id uuid
previous_status string Pending / Active / Restricted / Dormant / Closed
new_status string
reason_code string Stable machine key e.g. SANCTIONS_HOLD, KYC_EXPIRED, DORMANCY
triggered_by string SYSTEM / AGENT / CUSTOMER
idempotency_key string

Consumers: MOD-020 (pre-payment validation — gates payments on Restricted/Closed), MOD-013 (sanctions screener), MOD-039 (customer risk score), MOD-043 (governance), MOD-074 (back-office customer 360)


bank.core.interest_accrued

Emitted by MOD-005 after each daily accrual run completes for an account.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
account_id uuid
accrual_date string YYYY-MM-DD
accrual_amount string Fixed-point decimal
currency string ISO 4217
rate_applied string Percentage as decimal string e.g. "5.25"
posting_id uuid Ledger posting reference
idempotency_key string accrual-<account_id>-<accrual_date>

Consumers: MOD-002 (immutable log), MOD-042 (CDC → Snowflake), MOD-035 (IRRBB/NII model)


bank.core.rate_changed

Emitted by MOD-006 when a product interest rate changes and disclosure obligations are triggered. Consumed by notification orchestration to dispatch regulatory notices.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
product_id string e.g. PRD-001
rate_type string SAVINGS / LENDING / FX
previous_rate string Decimal string
new_rate string Decimal string
effective_date string YYYY-MM-DD
jurisdiction string NZ / AU / NZ + AU
disclosure_required boolean True when regulatory notice must be sent
idempotency_key string

Consumers: MOD-063 (notification orchestration — dispatches rate-change notices), MOD-035 (IRRBB model), MOD-050 (disclosure enforcement)


bank.core.dormancy_triggered

Emitted by MOD-008 when an account qualifies for dormancy classification or escheatment processing.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
account_id uuid
customer_id uuid
dormancy_stage string DORMANT / ESCHEATMENT_PENDING / ESCHEATMENT_COMPLETED
inactive_since string YYYY-MM-DD
balance string Fixed-point decimal
currency string ISO 4217
jurisdiction string NZ / AU
idempotency_key string

Consumers: MOD-007 (account state machine — transitions to Dormant), MOD-063 (notification orchestration), MOD-057 (statistical returns — unclaimed money reporting)

bank.core.share_transaction_completed

Emitted by MOD-118 after each share capital movement settles or is blocked (CLQ-001). Mutual-institution tenants only. Consumed by MOD-063 (member notification).

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
tx_id uuid
member_id uuid
party_id uuid
tx_type string PURCHASE | REDEMPTION | TRANSFER_IN | TRANSFER_OUT | DIVIDEND_REINVESTMENT | CORRECTION
shares string Fixed-point decimal
total_amount string Fixed-point decimal
status string SETTLED | BLOCKED
blocked_reason string capital_gate when CLQ-001 fires
jurisdiction string
trace_id string

bank.core.dividend_declared

Emitted by MOD-118 on board dividend declaration. Mutual-institution tenants only. Consumed by MOD-063, MOD-022.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
declaration_id uuid
record_date string ISO 8601 date
payment_date string ISO 8601 date
rate_per_share string Fixed-point decimal
total_declared string Fixed-point decimal
jurisdiction string
trace_id string

bank.core.dividend_paid

Emitted by MOD-118 per member per declaration on confirmed net credit. Mutual-institution tenants only. Consumed by MOD-063 (member notification), MOD-022.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
payment_id uuid
declaration_id uuid
member_id uuid
party_id uuid
net_dividend string Fixed-point decimal
posting_id uuid
jurisdiction string
trace_id string

bank.core.member_status_changed

Emitted by MOD-118 on any member register status transition. Mutual-institution tenants only. Consumed by MOD-063, MOD-022.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
member_id uuid
party_id uuid
status_from string
status_to string
reason string
jurisdiction string
trace_id string

bank.core.member_statement_due

Emitted by MOD-118 at FY end per active member. Full annual statement data payload. MOD-113 renders when deployed (FR-536 deferred — Gap #2 Option C). Mutual-institution tenants only.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
member_id uuid
party_id uuid
fy_end_date string ISO 8601 date
opening_shares string
closing_shares string
transactions array Share transaction summary
dividends_declared array Dividend payments summary
jurisdiction string
trace_id string

bank.core.tax_certificate_due

Emitted by MOD-118 at FY end per member who received a dividend. Full tax calculation payload. MOD-113 renders when deployed (FR-535 deferred — Gap #2 Option C). Mutual-institution tenants only.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
member_id uuid
party_id uuid
fy_end_date string ISO 8601 date
total_gross_dividend string Fixed-point decimal
total_tax_withheld string Fixed-point decimal
total_net_dividend string Fixed-point decimal
dividend_payments array Per-declaration breakdown
jurisdiction string
trace_id string

SD02 — KYC Platform (bank-kyc bus)

bank.kyc.identity_verified

Emitted by MOD-009 when an identity verification attempt produces a PASS result with sufficient confidence to proceed.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
customer_id uuid
verification_id uuid Stable record reference
document_type string PASSPORT / DRIVERS_LICENCE / NATIONAL_ID
confidence_score string Decimal string "0.00""1.00"
jurisdiction string NZ / AU
edd_required boolean True if confidence below auto-accept threshold
verified_at ISO8601
idempotency_key string

Consumers: MOD-010 (CDD tier assignment — primary consumer), MOD-013 (sanctions screener — triggers initial screen), MOD-012 (KYC audit trail), MOD-007 (account state machine — enables activation gate)


bank.kyc.identity_failed

Emitted by MOD-009 when a verification attempt produces a FAIL or irrecoverable REFER result that cannot proceed without manual intervention.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
customer_id uuid
verification_id uuid
failure_reason string DOCUMENT_REJECTED / BIOMETRIC_MISMATCH / WATCHLIST_HIT / UNSUPPORTED_DOCUMENT / EXPIRED_DOCUMENT
attempt_number integer Retry count
max_attempts_reached boolean
idempotency_key string

Consumers: MOD-018 (alert case management — creates manual review task), MOD-012 (KYC audit trail), MOD-063 (notification orchestration — customer notification)


bank.kyc.cdd_tier_assigned

Emitted by MOD-010 after CDD classification is complete for a customer.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
customer_id uuid
cdd_tier string LOW / MEDIUM / HIGH / ENHANCED
previous_tier string Omitted on initial assignment
tier_rationale string Human-readable reason
sanctions_check_status string CLEAR / MATCH_FOUND / PENDING
account_activation_permitted boolean
idempotency_key string

Consumers: MOD-007 (account state machine — activation gate), MOD-039 (customer risk score — informs risk model), MOD-016 (typology engine — AML risk parameter), MOD-012 (KYC audit trail)


bank.kyc.sanctions_match_found

Emitted by MOD-013 when a customer or payment counterparty matches an entry on OFAC, UN, MFAT, or DFAT lists.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
screening_id uuid
entity_type string CUSTOMER / COUNTERPARTY
entity_id uuid customer_id or counterparty reference
list_source string OFAC / UN / MFAT / DFAT
match_score string Decimal string "0.00""1.00"
match_type string EXACT / FUZZY / ALIAS
triggering_context string ONBOARDING / PAYMENT / LIST_UPDATE / PERIODIC_REVIEW
idempotency_key string

Consumers: MOD-007 (account state machine — immediate restriction), MOD-020 (pre-payment validation — blocks all payments), MOD-018 (alert case management — creates sanctions case), MOD-022 (payment audit trail)


bank.kyc.sanctions_match_cleared

Emitted by MOD-015 when a sanctions match is adjudicated as a false positive and the hold is lifted.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
screening_id uuid References original bank.kyc.sanctions_match_found
entity_id uuid
cleared_by string Agent ID or system principal
adjudication_notes string Optional — redacted in non-compliance contexts
idempotency_key string

Consumers: MOD-007 (account state machine — lifts restriction), MOD-020 (pre-payment validation — removes payment block), MOD-012 (KYC audit trail)


bank.kyc.kyc_review_due

Emitted by MOD-011 when a customer's periodic KYC review falls due. Triggers review workflows on a 3-year cadence for standard customers and 1-year for high-risk.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
customer_id uuid
review_type string STANDARD / HIGH_RISK / ENHANCED
due_date string YYYY-MM-DD
days_until_expiry integer Negative when overdue
current_cdd_tier string
idempotency_key string

Consumers: MOD-062 (workflow orchestration — creates review task), MOD-064 (operations work queue — queues for analyst), MOD-063 (notification orchestration — may trigger customer outreach)


bank.kyc.false_positive_recorded

Emitted by MOD-015 when an analyst formally records a sanctions false positive adjudication for audit and model-improvement purposes.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
screening_id uuid
entity_id uuid
list_source string
adjudicated_by string Agent ID
reason_code string Stable false-positive category
idempotency_key string

Consumers: MOD-012 (KYC audit trail), MOD-037 (AML reporting pipeline — RBNZ/AUSTRAC disclosures)


SD03 — AML Monitoring (bank-aml bus)

bank.aml.alert_raised

Emitted by MOD-016 (rule-based typology) or MOD-017 (ML behavioural scoring) when a transaction or behavioural pattern crosses an alert threshold.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
alert_id uuid
alert_source string RULE_ENGINE / ML_MODEL
customer_id uuid
alert_type string FATF typology code e.g. STRUCTURING, RAPID_MOVEMENT, UNUSUAL_CROSS_BORDER
risk_score string Decimal string "0""100"
triggering_transaction_ids array of uuid Present when alert is transaction-specific
rule_ids array of string Present when alert_source is RULE_ENGINE
idempotency_key string

Consumers: MOD-018 (alert case management — primary consumer, creates analyst queue entry), MOD-022 (payment audit trail), MOD-042 (CDC → Snowflake)


bank.aml.case_opened

Emitted by MOD-018 when an alert is promoted to a formal AML investigation case.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
case_id uuid
alert_id uuid Causal alert reference
customer_id uuid
assigned_analyst string Agent ID; null if unassigned
priority string LOW / MEDIUM / HIGH / CRITICAL
idempotency_key string

Consumers: MOD-064 (operations work queue), MOD-047 (agent action logger), MOD-042 (CDC → Snowflake)


bank.aml.case_escalated

Emitted by MOD-018 when a case is escalated to MLRO or senior analyst review.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
case_id uuid
escalated_to string MLRO / SENIOR_ANALYST / BOARD
escalation_reason string Human-readable
idempotency_key string

Consumers: MOD-063 (notification orchestration — MLRO notification), MOD-047 (agent action logger), MOD-042 (CDC → Snowflake)


bank.aml.case_closed

Emitted by MOD-018 when a case is closed with a final disposition.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
case_id uuid
customer_id uuid
disposition string SAR_FILED / NO_ACTION / ENHANCED_MONITORING / ACCOUNT_CLOSED
closed_by string Agent ID
sar_reference string Present when disposition is SAR_FILED
idempotency_key string

Consumers: MOD-019 (regulatory report submission — when SAR filed), MOD-039 (customer risk score — re-scores on close), MOD-012 (KYC audit trail), MOD-042 (CDC → Snowflake)


bank.aml.regulatory_submission_completed

Emitted by MOD-019 after a SAR, IFTI, or CMIR is successfully submitted to AUSTRAC or RBNZ/FMA.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
submission_id uuid
report_type string SAR / IFTI / CMIR
jurisdiction string NZ / AU
regulator string AUSTRAC / RBNZ / FMA
case_id uuid Present when linked to a case
submitted_at ISO8601
idempotency_key string

Consumers: MOD-047 (agent action logger — immutable record), MOD-048 (system decision log), MOD-042 (CDC → Snowflake)


SD04 — Payments (bank-payments bus)

bank.payments.payment_initiated

Emitted by MOD-020 (pre-payment validation) when a payment instruction is received and passes initial structural validation, before full validation and posting.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid Stable payment reference
customer_id uuid
source_account_id uuid
destination_account_id uuid Internal transfers only
destination_bsb_account string External AU payments
destination_sort_account string External NZ payments
amount string Fixed-point decimal
currency string ISO 4217
payment_type string INTERNAL / DOMESTIC / INTERNATIONAL / FX
channel string APP / API / OPEN_BANKING / AGENT
idempotency_key string Caller-supplied

Consumers: MOD-022 (payment audit trail — opens audit record), MOD-023 (transaction fraud scorer — immediate scoring trigger), MOD-024 (device & session intelligence)


bank.payments.payment_validated

Emitted by MOD-020 when all pre-payment validation checks pass and the payment is cleared for posting.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid
validation_checks_passed array of string e.g. ["BALANCE", "LIMITS", "SANCTIONS", "FRAUD", "ACCOUNT_STATUS"]
fraud_score string Decimal string from MOD-023
idempotency_key string

Consumers: MOD-001 (posting engine — proceeds to ledger posting), MOD-022 (payment audit trail)


bank.payments.payment_completed

Emitted by MOD-001 (via MOD-022) once the ledger posting is confirmed and settlement is initiated.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid
posting_id uuid Ledger posting reference
customer_id uuid
amount string Fixed-point decimal
currency string ISO 4217
payment_type string
settled_at ISO8601 Present when settled in same event cycle
idempotency_key string

Consumers: MOD-063 (notification orchestration — payment confirmation), MOD-026 (IFTI/CMIR trigger — threshold check), MOD-039 (customer risk score — transaction signal), MOD-042 (CDC → Snowflake), MOD-070 (transaction history)


bank.payments.payment_failed

Emitted by MOD-020 or MOD-001 when a payment cannot be completed.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid
customer_id uuid
failure_stage string VALIDATION / FRAUD_BLOCK / SANCTIONS_BLOCK / POSTING
failure_code string Stable machine key
failure_message string Human-readable operator message
idempotency_key string

Consumers: MOD-022 (payment audit trail), MOD-063 (notification orchestration — customer notification), MOD-042 (CDC → Snowflake)


bank.payments.payment_reversed

Emitted by MOD-001 (general reversals), MOD-119 (BPAY returns), MOD-120 (Osko returns), and MOD-122 (NZ interbank returns) after a reversal posting pair is committed to the ledger.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid Original payment reference
reversal_posting_id uuid
customer_id uuid
amount string Fixed-point decimal
currency string ISO 4217
reversal_reason string CUSTOMER_REQUEST / FRAUD / SETTLEMENT_FAILURE / COMPLIANCE_HOLD / BPAY_RETURN / OSKO_RETURN / NZ_INTERBANK_RETURN
reversed_by string Agent ID, SYSTEM, BPAY_SCHEME, NPP_SCHEME, or NZ_PAYMENTS_NZ_SCHEME
idempotency_key string
trace_id uuid ADR-031 trace propagation

Consumers: MOD-022 (payment audit trail), MOD-063 (notification orchestration), MOD-042 (CDC → Snowflake)


bank.payments.fx_rate_locked

Emitted by MOD-025 when an FX rate lock is granted to a payment instruction. Lock duration is 30–60 seconds; expired locks must trigger a new lock request.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
lock_id uuid
payment_id uuid
source_currency string ISO 4217
target_currency string ISO 4217
rate string Fixed-point decimal — locked rate
inverse_rate string For display purposes
source_amount string Fixed-point decimal
target_amount string Fixed-point decimal
lock_expires_at ISO8601
idempotency_key string

Consumers: MOD-022 (payment audit trail), MOD-082 (nostro & FX treasury — hedging trigger)


bank.payments.fx_conversion_completed

Emitted by MOD-025 when the FX conversion posting pair is committed and settlement is instructed.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
conversion_id uuid
lock_id uuid Reference to bank.payments.fx_rate_locked
payment_id uuid
source_posting_id uuid Debit ledger posting
target_posting_id uuid Credit ledger posting
source_currency string
target_currency string
source_amount string Fixed-point decimal
target_amount string Fixed-point decimal
rate_applied string Fixed-point decimal
idempotency_key string

Consumers: MOD-022 (payment audit trail), MOD-082 (nostro & FX treasury), MOD-042 (CDC → Snowflake)


bank.payments.limit_breach_detected

Emitted by MOD-021 when a payment instruction would exceed a customer's per-transaction or daily velocity limit.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid
customer_id uuid
limit_type string DAILY_VALUE / PER_TRANSACTION / DAILY_COUNT
limit_value string Fixed-point decimal
attempted_value string Fixed-point decimal
idempotency_key string

Consumers: MOD-020 (pre-payment validation — blocks payment), MOD-022 (payment audit trail), MOD-016 (typology engine — structuring signal)


bank.payments.ifti_threshold_crossed

Emitted by MOD-026 when a cross-border electronic transfer triggers an IFTI reporting obligation, or when a physical cash movement meets the CMIR threshold. IFTI-E has no monetary minimum — every cross-border electronic transfer is reportable; the applied threshold is configurable per jurisdiction via SSM/AppConfig (production default: every cross-border transfer).

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
payment_id uuid
customer_id uuid
amount string Fixed-point decimal
currency string ISO 4217
direction string INBOUND / OUTBOUND
counterparty_country string ISO 3166-1 alpha-2
report_type string IFTI / CMIR
jurisdiction string NZ / AU
idempotency_key string

Consumers: MOD-019 (regulatory report submission — files IFTI/CMIR), MOD-022 (payment audit trail)


bank.payments.settlement_file_received

Emitted by MOD-081 when an inbound settlement file is received from a payment scheme (NPP, BECS, SWIFT).

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
file_id uuid
scheme string NPP / BECS / SWIFT / RTGS
settlement_date string YYYY-MM-DD
transaction_count integer
total_value string Fixed-point decimal
currency string ISO 4217
idempotency_key string

Consumers: MOD-081 (reconciliation engine — triggers matching run), MOD-082 (nostro & FX treasury — position update)


bank.payments.reconciliation_exception_raised

Emitted by MOD-081 when a settlement record cannot be matched to a ledger posting, or when a mismatch is detected during reconciliation.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
exception_id uuid
settlement_file_id uuid
exception_type string UNMATCHED_CREDIT / UNMATCHED_DEBIT / AMOUNT_MISMATCH / DUPLICATE_DETECTED
amount string Fixed-point decimal
currency string ISO 4217
scheme string
idempotency_key string

Consumers: MOD-064 (operations work queue — creates reconciliation task), MOD-047 (agent action logger), MOD-042 (CDC → Snowflake)


bank.payments.direct_debit_mandate_created

Emitted by MOD-114 on new mandate registration. Consumed by MOD-063 for "Mandate created" customer notification.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
idempotency_key string
mandate_id string
party_id string
account_id string
jurisdiction string NZ or AU
biller_id string
biller_name string
max_amount number
effective_date string

bank.payments.direct_debit_mandate_cancelled

Emitted by MOD-114 on customer cancellation (FR-507). Consumed by MOD-063 for "Mandate cancelled" notification.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
idempotency_key string
mandate_id string
party_id string
account_id string
jurisdiction string
biller_id string
cancel_reason string
cancelled_at string

bank.payments.direct_debit_dishonoured

Emitted by MOD-114 on dishonoured debit presentation (FR-508). Consumed by MOD-063 (customer notification within 60 s) and MOD-022 (audit trail).

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
idempotency_key string
presentation_id string
mandate_id string
party_id string
account_id string
jurisdiction string
biller_id string
biller_name string
amount number
currency string
return_code string Scheme return code
return_reason string Plain-language
dishonour_fee_assessed boolean

bank.payments.bpay_biller_registered

Emitted by MOD-136 when a BPAY biller registration moves to ACTIVE. AU-only. Consumed by MOD-063 (back-office staff notification).

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
biller_id uuid
party_id uuid Business customer
bpay_code string Sponsor-assigned
biller_name string
jurisdiction string AU
trace_id string

bank.payments.bpay_inbound_received

Emitted by MOD-136 after MOD-001 credit posting for an inbound BPAY payment. AU-only. Triggers biller notification within 60 s (FR-607 / CON-005). Consumed by MOD-063 + MOD-022.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
payment_id uuid Synthetic payments.payments row
posting_id uuid SD01 posting reference
biller_id uuid
bpay_code string
crn string Validated CRN
amount string Fixed-point decimal
currency string AUD
settlement_date string ISO 8601 date
settlement_batch_reference string
trace_id string

bank.payments.bpay_inbound_returned

Emitted by MOD-136 when CRN validation fails and the payment is quarantined as RETURNED. AU-only. Consumed by MOD-063 (ops-queue alert within 60 min per FR-606) + MOD-022.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
payment_id uuid
biller_id uuid
bpay_code string
crn string Invalid CRN as received
amount string Fixed-point decimal
currency string AUD
return_reason_code string Scheme return reason code
settlement_batch_reference string
trace_id string

bank.payments.batch_validated

Emitted by MOD-135 when a batch file passes format validation (FR-601) and the MOD-020 aggregate balance gate (FR-602). Batch moves to PENDING_APPROVAL; customer must confirm before processing begins (CON-005).

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid FK to payments.batch_files
party_id uuid Business/SME customer party
account_id uuid Source debit account
file_format string ABA or CSV
validated_item_count integer
validated_total_amount string Fixed-point decimal
currency string ISO-4217
jurisdiction string NZ or AU
shortfall_amount string Present if insufficient funds — customer must confirm partial-funding intent
trace_id string

Consumers: MOD-063 (customer notification: batch ready for confirmation).


bank.payments.batch_confirmed

Emitted by MOD-135 when the customer explicitly confirms the batch (CON-005). Processing begins immediately after this event.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
party_id uuid
account_id uuid
item_count integer
total_amount string Fixed-point decimal
currency string
jurisdiction string
trace_id string

Consumers: (triggers batch submission orchestrator internally).


bank.payments.batch_item_quarantined

Emitted by MOD-135 per item that receives a fraud or sanctions alert from the per-item MOD-020 call (FR-603). Must be published within 60 s of batch submission; quarantined items do not block sibling items.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
item_id uuid FK to payments.batch_items
payment_id uuid MOD-135-minted payment_id for this item
party_id uuid
amount string Fixed-point decimal
currency string
quarantine_reason string MOD-020 failure_reason e.g. SANCTIONS_MATCH, FRAUD_BLOCK
sequence_number integer Position in source file
trace_id string

Consumers: MOD-063 (customer notification of quarantined item within 60 s per FR-603).


bank.payments.batch_item_returned

Emitted by MOD-135 when an item cannot be credited (account closed, invalid account) and a re-credit has been posted to the source account (FR-604).

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
item_id uuid
payment_id uuid
party_id uuid
amount string Fixed-point decimal — returned amount
currency string
return_reason string e.g. ACCOUNT_CLOSED, INVALID_ACCOUNT
return_posting_id uuid Re-credit posting to source account
sequence_number integer
trace_id string

Consumers: MOD-063 (return notification to customer per FR-604).


bank.payments.batch_settled

Emitted by MOD-135 when all non-quarantined, non-failed items have reached a terminal state (SETTLED, RETURNED, or FAILED). Terminal success event for the batch.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
party_id uuid
account_id uuid
settled_item_count integer Items that reached SETTLED
settled_total_amount string Fixed-point decimal
quarantined_item_count integer Items held as QUARANTINED
returned_item_count integer Items returned (FR-604)
currency string
jurisdiction string
settled_at string ISO8601 UTC
trace_id string

Consumers: MOD-063 (batch settlement confirmation to customer), MOD-022 (payment audit trail).


bank.payments.batch_failed

Emitted by MOD-135 on a batch-level failure (source account closed mid-batch, system error during processing). Items not yet submitted at failure are not charged.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
party_id uuid
account_id uuid
failure_reason string e.g. SOURCE_ACCOUNT_CLOSED, SUBMISSION_TIMEOUT
items_submitted integer Items that reached MOD-020 before failure
items_not_submitted integer Items not yet processed
currency string
jurisdiction string
trace_id string

Consumers: MOD-063 (failure notification to customer), MOD-022 (payment audit trail).


bank.payments.agency_batch_received

Emitted by MOD-137 when an agency batch file has landed in S3, been parsed, and per-item processing has been queued.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid FK to payments.agency_batch_files
agency_network string AUSTRALIA_POST | NZ_POST | OTHER
file_reference string Network-assigned file identifier
batch_date string ISO-8601 date — transaction date from file header
declared_item_count integer
jurisdiction string NZ or AU
trace_id string

Consumers: MOD-022 (payment audit trail).


bank.payments.agency_batch_settled

Emitted by MOD-137 when all items in the batch have reached a terminal state and the reconciliation pass is complete.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
agency_network string
posted_count integer Items that reached POSTED
posted_total_amount string Fixed-point decimal
quarantined_count integer Items held as QUARANTINED
currency string ISO-4217
jurisdiction string
settled_at string ISO8601 UTC
trace_id string

Consumers: MOD-063 (batch settlement summary to customer), MOD-022 (payment audit trail).


bank.payments.agency_item_quarantined

Emitted by MOD-137 per item that fails account matching, account-active validation, or available-balance check (FR-609). Must be published within 2 hours of batch receipt.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
transaction_id uuid FK to payments.agency_transactions
agency_network string
transaction_type string DEPOSIT | WITHDRAWAL
amount string Fixed-point decimal
currency string
failure_reason string ACCOUNT_NOT_FOUND | ACCOUNT_INACTIVE | INSUFFICIENT_BALANCE | PARSE_ERROR
terminal_id string
agent_outlet_code string
sequence_number integer Position in source file
trace_id string

Consumers: MOD-063 (ops queue notification per FR-609).


bank.payments.agency_aml_threshold_flagged

Emitted by MOD-137 for each agency cash transaction at or above the jurisdiction-specific AML reporting threshold (default AUD/NZD 10,000). Published in the same handler invocation as the MOD-001 posting — the flag never delays the transaction (FR-611). Carries terminal_id and agent_outlet_code as required location metadata.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
transaction_id uuid FK to payments.agency_transactions
account_id uuid Resolved account — soft ref SD01
transaction_type string DEPOSIT | WITHDRAWAL
amount string Fixed-point decimal
currency string ISO-4217
jurisdiction string NZ or AU
threshold_value string Threshold that was triggered (e.g. "10000.00")
terminal_id string FR-611 required location metadata
agent_outlet_code string FR-611 required location metadata
trace_id string

Consumers: SD03 MOD-016 (typology engine — cash transaction analysis), SD06 MOD-037 (CDC consumer — regulatory reporting pipeline).


bank.payments.agency_reconciliation_discrepancy

Emitted by MOD-137 when the reconciliation pass (FR-612) finds a mismatch between processed totals and the agency network's settlement file. Must be published within 2 hours of reconciliation completing.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
batch_id uuid
agency_network string
discrepancy_type string COUNT_MISMATCH | AMOUNT_MISMATCH | BOTH
expected_count integer From settlement file
actual_count integer Items processed by MOD-137
expected_amount string Fixed-point decimal — settlement file total
actual_amount string Fixed-point decimal — MOD-137 processed total
currency string ISO-4217
jurisdiction string
trace_id string

Consumers: MOD-063 (ops queue alert per FR-612; escalation to agency network within 1 business day if unresolved), MOD-022 (payment audit trail).


bank.payments.card_ordered

Emitted by MOD-124 when a physical card order is submitted to the bureau.

Bus: bank-payments · Source: bank.payments · Detail-type: card_ordered

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid payments.physical_cards(id)
party_id uuid
account_id uuid
card_scheme string VISA | MASTERCARD
jurisdiction string NZ | AU
bureau_order_ref string Bureau tracking reference
idempotency_key string
trace_id uuid

Consumers: MOD-063 (notify customer — card ordered confirmation).


bank.payments.card_dispatched

Emitted by MOD-124 when the bureau webhook confirms the card has been printed and dispatched.

Bus: bank-payments · Source: bank.payments · Detail-type: card_dispatched

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid
party_id uuid
card_number_last4 string For display in notification
estimated_delivery_date string ISO 8601 date if provided by bureau
pci_disclosure_required boolean Always true; MOD-073 subscribes
bureau_order_ref string
idempotency_key string
trace_id uuid

Consumers: MOD-063 (dispatch notification), MOD-073 (PCI disclosure document delivery).


bank.payments.card_activated

Emitted by MOD-124 when the customer activates their physical card.

Bus: bank-payments · Source: bank.payments · Detail-type: card_activated

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid
party_id uuid
account_id uuid
card_number_last4 string
idempotency_key string
trace_id uuid

Consumers: MOD-063 (activation confirmation), MOD-078 (initialise control profile once deployed).


bank.payments.card_frozen

Emitted by MOD-124 when a card is frozen (lost, stolen, or customer request).

Bus: bank-payments · Source: bank.payments · Detail-type: card_frozen

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid
party_id uuid
freeze_reason string LOST | STOLEN | CUSTOMER_REQUEST | SYSTEM
idempotency_key string
trace_id uuid

Consumers: MOD-063 (freeze confirmation notification), MOD-022 (audit trail).


bank.payments.card_cancelled

Emitted by MOD-124 when a card is permanently cancelled (terminal state).

Bus: bank-payments · Source: bank.payments · Detail-type: card_cancelled

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid
party_id uuid
cancel_reason string LOST_STOLEN_REPLACEMENT | CUSTOMER_REQUEST | EXPIRY_REPLACED | SYSTEM
idempotency_key string
trace_id uuid

Consumers: MOD-063 (cancellation notification), MOD-078 (remove control profile).


bank.payments.card_replaced

Emitted by MOD-124 when a replacement card order is submitted following a lost/stolen report.

Bus: bank-payments · Source: bank.payments · Detail-type: card_replaced

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
original_card_id uuid The cancelled card
replacement_card_id uuid The newly ordered card
party_id uuid
replace_reason string LOST | STOLEN | DAMAGED
bureau_order_ref string
idempotency_key string
trace_id uuid

Consumers: MOD-063 (replacement order confirmation).


bank.payments.card_pin_changed

Emitted by MOD-124 after the processor's HSM confirms a successful PIN change. No PIN data included — audit event only.

Bus: bank-payments · Source: bank.payments · Detail-type: card_pin_changed

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
card_id uuid
party_id uuid
change_channel string APP | ATM | BRANCH
idempotency_key string
trace_id uuid

Consumers: MOD-063 (PIN change security notification), MOD-022 (audit trail).


bank.payments.card_renewed

Emitted by MOD-124 when the 60-day pre-expiry scan orders a renewal card.

Bus: bank-payments · Source: bank.payments · Detail-type: card_renewed

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
expiring_card_id uuid Card approaching expiry
renewal_card_id uuid Newly ordered renewal card
party_id uuid
expiry_date string ISO 8601 YYYY-MM of expiring card
bureau_order_ref string
idempotency_key string
trace_id uuid

Consumers: MOD-063 (renewal notification on subsequent card_dispatched for renewal_card_id).


SD05 — Credit Decisioning (bank-credit bus)

bank.credit.application_received

Emitted by MOD-029 (pre-approval engine) or the credit application intake flow when a complete credit application is submitted.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
application_id uuid
customer_id uuid
product_id string e.g. PRD-002
requested_amount string Fixed-point decimal
currency string ISO 4217
application_source string APP / AGENT / PRE_APPROVAL
idempotency_key string

Consumers: MOD-027 (affordability calculator — starts assessment), MOD-028 (credit score & risk rating), MOD-062 (workflow orchestration)


bank.credit.credit_decision_made

Emitted by MOD-028 when a credit decision is produced — whether automated or following analyst review.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
application_id uuid
customer_id uuid
decision string APPROVE / DECLINE / REFER
approved_amount string Fixed-point decimal; present on APPROVE
approved_rate string Decimal string; present on APPROVE
risk_rating string Basel risk rating e.g. BBB+
decline_reason_codes array of string Present on DECLINE
model_version string
idempotency_key string

Consumers: MOD-029 (pre-approval engine — if originated from pre-approval), MOD-063 (notification orchestration — decision notification), MOD-033 (RWA engine — updates RWA on approval), MOD-048 (system decision log)


bank.credit.loan_account_opened

Emitted by MOD-001 (via credit servicing) when a loan account is created in the ledger following credit approval and customer acceptance.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
loan_account_id uuid
customer_id uuid
application_id uuid
principal_amount string Fixed-point decimal
currency string ISO 4217
term_months integer
interest_rate string Decimal string
product_id string
jurisdiction string NZ / AU
idempotency_key string

Consumers: MOD-030 (stage allocation model — initial IFRS 9 staging), MOD-031 (ECL calculation), MOD-033 (RWA engine), MOD-059 (credit bureau submission)


bank.credit.repayment_received

Emitted by MOD-001 after a scheduled or unscheduled loan repayment posting is committed.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
loan_account_id uuid
customer_id uuid
posting_id uuid
repayment_amount string Fixed-point decimal
principal_component string Fixed-point decimal
interest_component string Fixed-point decimal
outstanding_balance_after string Fixed-point decimal
currency string ISO 4217
repayment_type string SCHEDULED / UNSCHEDULED / EARLY_REPAYMENT
idempotency_key string

Consumers: MOD-030 (stage allocation model), MOD-031 (ECL calculation), MOD-059 (credit bureau submission), MOD-065 (credit servicing & collections — clears arrears flag if applicable)


bank.credit.arrears_triggered

Emitted by MOD-065 when a loan account enters arrears following a missed payment.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
loan_account_id uuid
customer_id uuid
days_past_due integer
overdue_amount string Fixed-point decimal
currency string ISO 4217
idempotency_key string

Consumers: MOD-030 (stage allocation model — triggers stage migration), MOD-031 (ECL calculation — recalculates provision), MOD-059 (credit bureau submission), MOD-063 (notification orchestration — hardship outreach), MOD-040 (churn & health score — financial stress signal)


bank.credit.ecl_updated

Emitted by MOD-031 after each ECL recalculation cycle. Consumed by the GL posting engine and the risk platform for capital reporting.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
ecl_run_id uuid
loan_account_id uuid
stage integer 1, 2, or 3 (IFRS 9)
ecl_amount string Fixed-point decimal
previous_ecl_amount string Fixed-point decimal
currency string ISO 4217
pd string Probability of default decimal string
lgd string Loss given default decimal string
ead string Exposure at default decimal string
idempotency_key string

Consumers: MOD-001 (posting engine — GL provision entry), MOD-033 (RWA engine), MOD-036 (prudential return builder)


bank.credit.loan_variation_requested

Emitted by MOD-132 when a customer submits a variation request. Triggers materiality assessment and customer acknowledgement.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
variation_id uuid FK credit.loan_variations.id
loan_account_id uuid
party_id string
variation_type string
requires_assessment boolean FR-589 materiality result
requires_break_cost boolean
idempotency_key string

Consumers: MOD-029 (materiality assessment), MOD-053 (request acknowledgement)


bank.credit.loan_variation_confirmed

Emitted by MOD-132 after all gates pass and the variation is confirmed. Triggers schedule regeneration and disclosure dispatch.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
variation_id uuid
loan_account_id uuid
party_id string
variation_type string
before_terms object
after_terms object
disclosure_acknowledgement_id uuid CON-004 GATE evidence
idempotency_key string

Consumers: MOD-112 (schedule regeneration via originate-schedule with generated_by='restructure'), MOD-050 (confirmation disclosure), MOD-053 (confirmation notification)


bank.credit.loan_variation_rejected

Emitted by MOD-132 when a variation is rejected by assessment, customer, or system.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id string
variation_id uuid
loan_account_id uuid
party_id string
variation_type string
rejection_reason string
rejected_by string ASSESSMENT_FAILED | CUSTOMER_DECLINED | SYSTEM
idempotency_key string

Consumers: MOD-053 (rejection notification)


SD06 — Analytics & Risk (bank-risk-platform bus)

bank.risk.capital_ratio_breach

Emitted by MOD-033 (ALERT_CAPITAL_RATIO_BREACH Snowflake Alert, 5-minute poll) when any capital ratio falls below the regulatory minimum or internal management buffer in risk_capital.capital_config. MOD-033 is dbt + DCM only — no Lambda; the alert fires directly from Snowflake via BANK_SNS_INTEGRATION and publishes to the bank-risk-platform EventBridge bus.

Bus: bank-risk-platform · Source: bank.risk-platform · Detail-type: capital_ratio_breach

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
trace_id uuid
run_id uuid Matches capital_run_audit.run_id
ratio_type string CET1 / TIER1 / TOTAL_CAPITAL
jurisdiction string NZ / AU
ratio_value string Fixed-point decimal
regulatory_minimum string Fixed-point decimal — from capital_config
internal_buffer string Fixed-point decimal — from capital_config
breach_severity string regulatory_minimum / internal_buffer
position_date string YYYY-MM-DD
calculated_at ISO8601

Consumers: MOD-076 (alarm-intake — routes to CFO + CRO per FR-207), MOD-058 (breach notification engine)


bank.risk.liquidity_ratio_updated

Emitted by MOD-032 after each LCR/NSFR calculation run.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
calculation_id uuid
lcr string Percentage as decimal string
nsfr string Percentage as decimal string
lcr_breach_flag boolean
nsfr_breach_flag boolean
idempotency_key string

Consumers: MOD-036 (prudential return builder), MOD-063 (notification orchestration — Board/ALCO alert on breach)


bank.risk.customer_risk_score_updated

Emitted by MOD-039 when a customer's risk score is recalculated and the score or tier changes.

Bus: bank-risk-platform · Source: bank.risk-platform · Detail-type: customer_risk_score_updated

Subscribers read bus ARN and detail-type from SSM: /bank/{env}/risk-platform/risk-customer/event-source-name and /bank/{env}/risk-platform/risk-customer/event-detail-type.

Field Type Required Notes
event_id uuid Envelope field
event_time ISO8601 Envelope field — UTC
schema_version string
party_id uuid Cross-domain stable identifier (SD02 party.parties.id)
composite_risk_score float 0–100 numeric score (risk scores are not money — float is correct here)
risk_tier string LOW / MEDIUM / HIGH / CRITICAL
previous_risk_tier string Omitted on first score
tier_changed boolean
score_version string Model version identifier e.g. "v1-abc123def456"
triggering_event string Cause of recalculation e.g. "sanctions_hit"
scored_at ISO8601 When the score was calculated — use as idempotency anchor with party_id
idempotency_key string Subscriber deduplication key

Idempotency: Subscribers MUST be idempotent on (party_id, scored_at) — the EB publisher Lambda may republish rows if it crashes before advancing its cursor.

Consumers: MOD-010 (CDD tier assignment — may trigger tier upgrade), MOD-016 (typology engine — threshold adjustment), MOD-039 itself publishes; MOD-079 (decision publication service — write-back)


bank.risk.fraud_alert_raised

Emitted by MOD-023 (transaction fraud scorer) or MOD-055 (onboarding fraud scoring) when a fraud probability exceeds the configured alert threshold.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
alert_id uuid
alert_source string TRANSACTION_FRAUD / ONBOARDING_FRAUD
entity_type string CUSTOMER / PAYMENT / APPLICATION
entity_id uuid
fraud_score string Decimal string "0.00""1.00"
action_taken string BLOCK / STEP_UP_AUTH / ALERT_ONLY
idempotency_key string

Consumers: MOD-020 (pre-payment validation — blocks if action_taken is BLOCK), MOD-018 (alert case management), MOD-024 (device & session intelligence), MOD-063 (notification orchestration)


bank.risk.stress_test_completed

Emitted by MOD-034 after a stress test scenario run completes.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
run_id uuid
scenario_name string Human-readable scenario identifier
scenario_type string REGULATORY / INTERNAL / REVERSE
cet1_post_stress string Decimal string
lcr_post_stress string Decimal string
passed boolean True when all thresholds met
idempotency_key string

Consumers: MOD-036 (prudential return builder), MOD-048 (system decision log)


bank.risk-platform.model_register_entry_created

Emitted by MOD-173 when a new model is added to RISK_MGMT.MODEL_REGISTER.

Bus: bank-risk-platform · Source: bank.risk-platform · Detail-type: model_register_entry_created

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
model_id string e.g. MOD-028
model_name string
model_type string CREDIT | MARKET | LIQUIDITY | OPERATIONAL | AML | OTHER
tier integer 1, 2, or 3
regulator string RBNZ | APRA | BOTH | INTERNAL
evidence_pack_complete boolean
idempotency_key string model_register_created:{model_id}

Consumers: MOD-076 (alarm intake), MOD-056 (compliance visibility — optional).


bank.risk-platform.model_validation_due_soon

Emitted by MOD-173 DCM alert + EB publisher once per overdue-or-imminently-due model per day.

Bus: bank-risk-platform · Source: bank.risk-platform · Detail-type: model_validation_due_soon

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
model_id string
model_name string
tier integer
next_validation_due string ISO 8601 date
days_overdue integer Negative = days remaining; positive = days past due
evidence_pack_complete boolean
idempotency_key string model_validation_due:{model_id}:{due_date}

Consumers: MOD-076 (alarm intake — overdue alert), MOD-056 (compliance visibility — optional).


SD07 — Data Platform (bank-platform bus)

bank.platform.decision_published

Emitted by MOD-079 after a Snowflake decision result is written back to the Neon operational database. Signals to consumers that a new decision is available to read.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
decision_id uuid Matches the decision_id in the decision publication contract
entity_type string APPLICATION / CUSTOMER / PAYMENT
entity_id string
decision_type string e.g. ONBOARDING / CREDIT / RISK_SCORE
decision_status string ACCEPT / REFER / REJECT / HOLD / CLEAR
target_table string Neon schema.table where result was written
idempotency_key string

Consumers: MOD-062 (workflow orchestration — resumes paused workflows), MOD-010 (CDD tier assignment), MOD-028 (credit score), MOD-048 (system decision log)


bank.platform.decision_applied

Emitted by the consuming service after it reads a published decision and applies the operational state change. Provides end-to-end traceability.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
decision_id uuid
applied_by_module string e.g. MOD-010
state_change string Human-readable description of what changed
idempotency_key string

Consumers: MOD-048 (system decision log — audit trail), MOD-047 (agent action logger)


bank.platform.notification_sent

Emitted by MOD-063 after a customer or operator notification is dispatched.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
notification_id uuid
recipient_id uuid customer_id or agent_id
channel string PUSH / SMS / EMAIL / IN_APP
template_id string
causal_event_id uuid Event that triggered this notification
idempotency_key string

Consumers: MOD-048 (system decision log), MOD-047 (agent action logger — for agent-directed notifications)


bank.platform.workflow_step_completed

Emitted by MOD-062 when a workflow step completes, enabling choreography-based workflow advancement.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
workflow_id uuid
workflow_type string e.g. ONBOARDING / KYC_REVIEW / CREDIT_APPLICATION
step_name string
step_result string PASS / FAIL / REFER / SKIP
next_step string Omitted when workflow is terminal
actor string Identity of the actor that triggered the step (system module ID or operator identity)
idempotency_key string

Consumers: MOD-062 (itself — advances to next step), MOD-064 (operations work queue — creates task if REFER)


bank.platform.secret_rotated

Emitted by MOD-045 after a secret rotation event in AWS Secrets Manager completes successfully. Allows consumers to refresh cached credentials.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
secret_arn string ARN — not the secret value
secret_name string Logical name e.g. bank-core/db-password
rotation_reason string SCHEDULED / MANUAL / BREACH_RESPONSE
idempotency_key string

Consumers: All modules that cache the affected credential (resolved at deployment by secret-name subscriptions in consumer Lambda event filters).


bank.platform.usage_event

Emitted by every module on billable operations. Consumed by MOD-097 normaliser for landing to S3/Iceberg, and by MOD-099 for usage-based billing aggregation. Owner: MOD-097.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string e.g. "1.0.0"
idempotency_key string
tenant_id string 'self' for bank's own operations; licensee ID for SaaS customers
module_id string Emitting module, e.g. MOD-009
facility_id string System domain, e.g. SD02
event_type enum API_CALL / ML_INFERENCE / SNOWFLAKE_QUERY / ENRICHMENT_CALL / NOTIFICATION_SEND / DOCUMENT_STORE / CDC_EVENT / DECISION_PUBLICATION / LOGIN / PAYMENT_INITIATED / KYC_CHECK
quantity number Count of billable units
resource_units number Cost-unit count; defaults to 0
resource_unit_type enum CALLS / INFERENCES / CREDITS / MB / RECORDS / WRITES / SENDS / LAMBDA_GB_SECONDS
environment enum local / dev / uat / prod
resource_id string Optional identifier for the specific resource instance
correlation_id string Links to the originating domain event or request

Consumers: MOD-097 (normaliser → S3/Iceberg), MOD-099 (billing aggregation). Canonical JSON Schema at MOD-097-usage-event-collector/schemas/bank.platform.usage_event.json.


bank.platform.transaction_enriched

Emitted by MOD-087 after enriching a bank.core.posting_completed event with canonical merchant identity and geolocation. PAYMENT posting_type only — non-merchant types are silently skipped. Foundation event for the Expense Intelligence Platform.

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string e.g. "1.0.0"
posting_id uuid Source posting dedup key
party_id uuid
account_id uuid
raw_merchant_name string v1: accounts.postings.narrative (cross-schema SELECT); v2: dedicated field or external API
canonical_merchant_name string Resolved canonical name
mcc string ISO 18245 4-digit MCC; null when unknown
logo_url string Null in v1
lat number Null when location unavailable (FR-763 conditional)
lng number Null when location unavailable
enrichment_source string DICTIONARY | MCC_INFERENCE | MANUAL
trace_id string ADR-031 trace propagation

Consumers: MOD-088, MOD-089, MOD-091, MOD-077 (customer app).


SD08 — Customer App (bank-app bus)

bank.app.session_created

Emitted by MOD-068 when a customer successfully authenticates and a new session token is issued.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
session_id uuid
customer_id uuid
device_fingerprint_id uuid Reference to MOD-024 device record
auth_method string BIOMETRIC / PIN / PASSWORD / MFA_SMS
ip_region string Coarse geolocation; never precise coordinates
idempotency_key string

Consumers: MOD-024 (device & session intelligence — anomaly detection), MOD-023 (transaction fraud scorer — session context), MOD-047 (agent action logger)


bank.app.consent_captured

Emitted by MOD-049 when a customer provides or renews consent under the CDR framework or marketing consent regime.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
consent_id uuid
customer_id uuid
consent_type string CDR_SHARING / MARKETING / PRODUCT_DISCLOSURE
scope array of string e.g. ["account_balance", "transaction_history"]
expires_at ISO8601 Omitted for indefinite consents
accredited_data_recipient string Present for CDR sharing
idempotency_key string

Consumers: MOD-061 (Open Banking API gateway — enforces consent scope), MOD-050 (disclosure enforcement), MOD-012 (KYC audit trail — consent record)


bank.app.consent_revoked

Emitted by MOD-049 when a customer withdraws consent.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
consent_id uuid References bank.app.consent_captured
customer_id uuid
consent_type string
revoked_at ISO8601
revocation_method string APP / CDR_DASHBOARD / AGENT
idempotency_key string

Consumers: MOD-061 (Open Banking gateway — immediately blocks data access), MOD-012 (KYC audit trail)


bank.app.disclosure_acknowledged

Emitted by MOD-050 when a customer acknowledges a mandatory regulatory or product disclosure within the onboarding or product-change flow.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
disclosure_id uuid
customer_id uuid
disclosure_type string FSG / PDS / RATE_CHANGE / CREDIT_CONTRACT / TERMS_AND_CONDITIONS
version string Document version string
channel string APP / AGENT / EMAIL
acknowledged_at ISO8601
idempotency_key string

Consumers: MOD-007 (account state machine — gates activation), MOD-062 (workflow orchestration), MOD-012 (KYC audit trail)


bank.app.case_opened

Emitted by MOD-053 when a customer complaint or service case is opened via the app self-service flow.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
case_id uuid
customer_id uuid
case_type string COMPLAINT / SERVICE_REQUEST / DISPUTE
channel string APP / PHONE / EMAIL
idempotency_key string

Consumers: MOD-064 (operations work queue), MOD-062 (workflow orchestration)


bank.app.complaint_escalated

Emitted by MOD-053 when a case is escalated beyond first-line resolution, triggering EDR scheme obligations.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
case_id uuid
customer_id uuid
escalation_tier string TEAM_LEAD / COMPLAINTS_TEAM / EXTERNAL_EDR
edr_scheme string AFCA / FSCL — present when escalation_tier is EXTERNAL_EDR
idempotency_key string

Consumers: MOD-064 (operations work queue), MOD-063 (notification orchestration — EDR referral letter), MOD-058 (regulatory incident & breach notification — if systemic)


bank.app.document_uploaded

Emitted by MOD-073 when a customer or agent uploads a document to the vault.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
document_id uuid
customer_id uuid
document_type string ID_DOCUMENT / BANK_STATEMENT / PAYSLIP / CONTRACT / OTHER
uploaded_by string CUSTOMER / AGENT
context string KYC / CREDIT_APPLICATION / COMPLAINT / GENERAL
idempotency_key string

Consumers: MOD-009 (eIDV — triggers verification if document_type is ID_DOCUMENT and context is KYC), MOD-027 (affordability calculator — income documents), MOD-012 (KYC audit trail)


bank.app.card_control_changed

Emitted by MOD-078 on every successful card control action — freeze, unfreeze, limit change, or channel toggle. Intra-bus on bank-app. Consumed by MOD-063 to confirm the change to the customer via push notification within the FR-373 5 s SLA.

Field Type Required Notes
event_id uuid
event_time ISO8601
schema_version string
party_id uuid
card_id uuid
control_type string FREEZE / UNFREEZE / LIMIT_SET / CHANNEL_TOGGLE / VIRTUAL_CARD
prev_state object Snapshot of control state before change
new_state object Snapshot of control state after change
audit_id uuid References app.card_control_audit(id)
idempotency_key string

Consumers: MOD-063 (notification orchestration — customer push confirmation)


bank.app.automation_rule_fired

Emitted by MOD-051 when a rule action is taken (condition passed; funds swept or notification sent). Not emitted for no-op evaluations.

Bus: bank-app · Source: bank.app · Detail-type: automation_rule_fired

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
rule_id uuid
execution_id uuid app.automation_rule_executions(execution_id)
party_id uuid
rule_type string
action_outcome string EXECUTED | NOTIFICATION_ONLY | SKIPPED_INSUFFICIENT_FUNDS | SKIPPED_RULE_PAUSED
amount string Fixed-point decimal; present when funds moved
currency char(3)
mod_020_payment_id uuid Present when action_outcome = EXECUTED
idempotency_key string
trace_id uuid

Consumers: MOD-063 (FR-324 — notify customer within 60s of rule action).


bank.app.automation_rule_failed

Emitted by MOD-051 when a rule evaluation or action fails with an error.

Bus: bank-app · Source: bank.app · Detail-type: automation_rule_failed

Field Type Required Notes
event_id uuid
event_time ISO8601 UTC
schema_version string "1.0.0"
rule_id uuid
execution_id uuid
party_id uuid
rule_type string
failure_reason string
action_outcome string FAILED | MOD_020_DECLINED
idempotency_key string
trace_id uuid

Consumers: MOD-063 (fail-soft notification), MOD-076 (ops alerting).