Digital banking is a channel over an authoritative core

Internet banking should not copy core-banking behavior into a web application. The channel owns customer experience, device/session controls, orchestration, and channel-specific limits; the core remains authoritative for accounts, balances, posting, and product rules that belong there. The integration boundary must make that ownership explicit.

Separate channel models from core contracts

  • Expose channel-friendly APIs that map to stable internal banking commands.
  • Validate channel eligibility and authorization before sending a posting command to the core.
  • Treat a core timeout as an unknown outcome until status is reconciled; do not assume failure.
  • Use immutable request IDs so retries can discover an existing posting.
  • Normalize core errors into safe channel error codes while preserving original diagnostic references internally.

A transfer from browser to core

The channel establishes customer/session context, verifies the operation, sends one identified command through the integration adapter, then reconciles the authoritative core result.

Diagram

Internet-banking transfer path

The channel establishes customer/session context, verifies the operation, sends one identified command through the integration adapter, then reconciles the authoritative core result.

Handling a core timeout without double posting

Integration mistakes with financial consequences

Channel-to-core checklist

  • Document system-of-record ownership for balances and transactions.
  • Use a unique channel request reference for every mutation.
  • Define pending, success, rejected, and unknown/reconcile states.
  • Apply device/session/OTP policy server-side.
  • Test lost responses, duplicate submits, and core unavailability.