Architecture
MEMEH RTPO is the official Request-to-Pay orchestration platform of the Bank of Sierra Leone National Payment Switch. Its architecture separates human enablement, governed configuration, runtime orchestration, trusted addressing, provider connectivity, and the existing IPS flow.
- • Enables and certifies approved request submitters and providers
- • Governs CAS, participant, route, and adapter configuration
- • Orchestrates requests and records authoritative lifecycle evidence
- • CAS owns alias resolution and financial-address data
- • Participating providers own customer consent and RTP processing
- • IPS remains the inter-participant switching and payment rail
Diagram legend (1–8)
Each step maps to the lifecycle section below.
High-level model
A practical stack view of how responsibilities split across enablement, request submitters, governed configuration, Core, adapters, providers, and IPS.
Components
Access applications, documentation, credentials, UAT evidence, downloads, and audit support outside the Core runtime.
Publishes versioned approved provider routes and adapter bindings consumed by Core.
Payment-request validation, CAS result handling, canonical instruction routing, dispatch, and lifecycle state.
Authoritative payer and payee alias resolution into verified financial addresses and servicer identifiers.
Relays canonical requests, stores provider correlation, and forwards provider lifecycle events. It does not create IPS messages.
The provider owns customer consent and RTP processing; IPS executes the standard inter-participant exchange.
Request lifecycle
The same sequence shown in the diagram, mapped to stages 1–8.
-
1Checkout submits requestThe approved request submitter calls Core with a bearer credential and a JSON idempotency_key.
-
2Core validates and normalizesCore validates aliases, merchant identity, amount, currency, reference, description, and duplicate-request rules.
-
3CAS Resolver calls CAS V2The resolver authenticates with the assigned participant identity, maps MEMEH RTPO alias types, and obtains verified payer and payee FinAddresses from the Central Addressing Service.
-
4Published route is selectedCore matches the CAS payee servicer to an active participant, route, and Bank Adapter from the Control Plane snapshot.
-
5Canonical instruction is dispatchedCore persists one instruction and posts it to the selected Bank Adapter.
-
6Provider starts its RTP flowThe adapter posts to the configured provider RTP API. The provider owns customer consent and IPS interaction.
-
7Provider returns lifecycleThe provider posts a stable lifecycle event to the adapter; the adapter restores correlation and forwards it to Core.
-
8Core exposes outcome and historyCore deduplicates the event, enforces the state machine, and serves current status plus immutable event history.
Security model
The current implementation uses boundary-specific credentials, TLS requirements for production configuration, request and event idempotency, rate limits, controlled enablement, and auditable runtime configuration.
Public client APIs use an issued bearer key. Internal and participant boundaries use separately governed service credentials and verified TLS under restricted implementation contracts.
A required JSON idempotency_key protects payment creation; stable provider event_id values protect lifecycle processing. HMAC nonce signing is not currently implemented in Core.
The portal records applications, review decisions, sandbox credentials, signed partner invitations, downloads, and audit events. Production enablement remains a formal operational gate.