Skip to main content

🏦 Banking Domain Knowledge Base

A comprehensive, engineer-focused reference for payment systems, ISO 20022 messaging, core banking concepts, and Australian payment infrastructure. Built for Java/Spring developers working in the payments domain.


What's in This Knowledge Base?

SectionTopics Covered
ISO 20022 Messagespain.001, pain.002, pacs.008, pacs.002, camt.053, camt.054
Payment FlowsInbound, Outbound, On-Us, Off-Us
Payment RailsNPP, SWIFT, BECS/Direct Debit, BPAY, RTGS, PayTo
Parties & InstitutionsDebtor, Creditor, FIs, Correspondent Banks
Accounting & PostingDebit/Credit Post, Debit Reversal, Payment Return
Clearing & SettlementDNS, RTGS, ESA, Liquidity
Risk & ComplianceFraud, Sanctions, AML/CTF, KYC
OperationsReconciliation, Exceptions & Investigations, FX
Modern BankingOpen Banking/CDR, ISO 20022 Migration, Account Types

End-to-End Payment Lifecycle

The diagram below shows a complete outbound off-us NPP credit transfer — the most common domestic payment type in Australia.

┌─────────────────────────────────────────────────────────────────────────────┐
│ PAYMENT LIFECYCLE │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ORIGINATION DEBTOR BANK CREDITOR BANK │
│ │
│ Customer Receive pain.001 Receive pacs.008 │
│ submits ──────► Validate & Auth ──────► Validate Schema │
│ pain.001 Balance Check Duplicate Check │
│ Sanctions Screen Sanctions Screen │
│ Fraud Assessment Fraud Assessment │
│ Debit Posting Account Lookup │
│ Build pacs.008 Credit Posting │
│ Submit to NPP ◄────── Send camt.054 ──► Cdtr │
│ Receive pacs.002 (CRDT notification) │
│ Send camt.054 ──────► │
│ (DBIT notification) Dbtr │
│ Send pain.002 ──────► │
│ (status report) Customer │
│ │
│ SETTLEMENT: RBA Fast Settlement Service (FSS) — real-time gross │
└─────────────────────────────────────────────────────────────────────────────┘

ISO 20022 Message Chain

Customer ──[pain.001]──► Debtor Bank ──[pacs.008]──► Network ──[pacs.008]──► Creditor Bank
◄─[pain.002]─── ◄─[pacs.002]─── │
[camt.054]
[camt.054]──► Debtor Customer │
Creditor Customer
If undeliverable:
Debtor Bank ◄─[pacs.004]────────────────────────────────────── Creditor Bank
──[camt.054 return]──► Debtor Customer

Key ID Fields — Traceability Across Messages

Every payment carries a chain of IDs that allow full end-to-end tracing:

IDWho Sets ItLives InPurpose
EndToEndIdOriginating customerpain.001 → pacs.008 → camt.054Customer's own reference; never changed
InstrIdDebtor bankpacs.008, pacs.002Bank's instruction reference
TxIdDebtor bankpacs.008, pacs.002Unique transaction ID for dedup
MsgIdEach senderAll messagesMessage-level dedup
UETRDebtor bankSWIFT messagesUniversal tracker for gpi
AcctSvcrRefCreditor bankcamt.053, camt.054Bank's ledger reference
MndtIdCreditor/payerDirect debit messagesPayTo/BECS mandate reference

Payment Scheme Quick-Select

Is the payment a direct debit (pull)?
└─► PayTo (NPP) for new — BECS DDR for legacy

Is the payment international?
└─► SWIFT (MT103 / pacs.008)

Is the payment domestic?
├─ Same bank (both accounts at our institution)?
│ └─► On-Us — internal book transfer, no external network

├─ High-value or time-critical (> ~$250K)?
│ └─► RTGS / HVCS

├─ Bill payment with BPAY biller code?
│ └─► BPAY

├─ Creditor bank supports NPP?
│ └─► NPP / Osko — real-time, 24/7

└─ Fallback
└─► BECS Direct Entry — next business day

Risk & Compliance Checkpoints

Every payment — inbound or outbound — passes through these controls:

Payment Instruction


┌──────────────────────────────────────────────────────┐
│ 1. DUPLICATE CHECK (TxId / EndToEndId) │
│ 2. SCHEMA VALIDATION (XSD / business rules) │
│ 3. AUTHENTICATION (customer / system auth) │
│ 4. SANCTIONS SCREENING (OFAC, UN, DFAT, AUSTRAC) │
│ 5. FRAUD ASSESSMENT (rules + ML model) │
│ 6. AML / TM CHECK (transaction monitoring) │
│ 7. BALANCE / LIMIT CHECK (outbound only) │
└──────────────────────────────────────────────────────┘


Process Payment

Australian Regulatory Landscape

BodyRoleKey Obligations
RBACentral bank, settlement operatorESA management, RTGS, NPP FSS
APRAPrudential regulatorADI licence, capital (Basel III), LCR/NSFR
AUSTRACAML/CTF regulatorTTR, IFTI, SMR reporting
ASICMarket conduct regulatorFinancial services licensing
OAICPrivacy regulatorCDR / Open Banking data rules
AusPayNetPayment scheme operatorBECS, cheque rules
NPPANPP operatorNPP/Osko/PayTo scheme rules

Glossary of Common Terms

TermDefinition
ADIAuthorised Deposit-taking Institution — licensed bank/credit union
ESAExchange Settlement Account — account at RBA used for final settlement
BIC / SWIFT codeBank Identifier Code — uniquely identifies a financial institution
BSBBank State Branch — 6-digit code identifying an AU bank branch
IBANInternational Bank Account Number — standardised account number
PayIDProxy address (phone/email/ABN) mapped to a BSB/account via NPP
UETRUnique End-to-end Transaction Reference — UUID used in SWIFT gpi
DNSDeferred Net Settlement — obligations netted and settled at end of day
RTGSReal-Time Gross Settlement — each payment settled individually, in real time
LCRLiquidity Coverage Ratio — APRA regulatory liquidity metric
PEPPolitically Exposed Person — requires enhanced due diligence
SAR / SMRSuspicious Activity/Matter Report — filed with AUSTRAC
TTRThreshold Transaction Report — cash transactions ≥ AUD 10,000
IFTIInternational Funds Transfer Instruction — all cross-border transfers
ChrgBrCharge Bearer — who pays bank fees (DEBT/CRED/SHAR/SLEV)
Nostro"Our" account held at another bank
Vostro"Your" (another bank's) account held at our bank
Straight-Through Processing (STP)Payment processed end-to-end without manual intervention
CoPConfirmation of Payee — verifying payee name matches account before payment

Java / Spring Stack Reference

Typical technology choices for a payment processing system:

LayerTechnologies
APISpring Boot, Spring Web MVC / WebFlux
MessagingSpring Integration, Apache Kafka, IBM MQ, RabbitMQ
ISO 20022 ParsingJAXB, prowide-core, open-banking-java-sdk
DatabasePostgreSQL / Oracle (transactional), Redis (caching)
SecuritySpring Security, HSM for key management
SchedulerSpring Batch (batch payments), Quartz
ObservabilityMicrometer, Prometheus, Grafana, ELK Stack
TestingJUnit 5, Mockito, Testcontainers, WireMock

Contributing & Structure

Each page in this knowledge base follows a consistent structure:

  1. Overview — What it is and why it matters
  2. Key concepts — Definitions, types, tables
  3. Flow diagrams — ASCII art showing the process
  4. Field/code references — Lookup tables
  5. Java/Spring notes — Practical implementation snippets
  6. Related concepts — Cross-links to related pages