For banks · gateway
The ODG-PASS gateway operates inside the bank’s contour, on the bank’s equipment, on top of the core. Inbound customer instructions (standard pain.001 or legacy requisites) are structured into compliant pain.001.001.09. Outbound pacs.008 and cover pacs.009 COV are emitted in full to SWIFT Alliance and NBG Montran ATS. The core banking system is not rewritten.
The move to ISO 20022 creates two difficulties for the bank — and they sit in different places.
The core banking system already works with the new standard, or is moving there. The systems that bring payments from clients — online banking, file dumps from accounting, older interfaces — still form data in the MT format.
They cannot be rewritten at the same time as the core: separate systems, separate vendors, separate budgets, separate calendars. Payments still go out every day. One part of the bank speaks the new language, the other the old, and someone has to translate without losing data.
Structured data the bank assembled correctly must be folded into four lines of thirty-five characters. Part of it does not fit. After send it cannot be restored — it is simply gone.
Investigations, document requests, and returns with no clear reason grow from that gap.
Naïve converters dump tax numbers, budget codes, and free-text descriptions into a single unstructured field, causing correspondent filters to halt or reject the payment. ODG-PASS enforces strict Three Registers isolation:
Strictly placed in <Purp><Cd> and <PmtTpInf><CtgyPurp><Cd> using official 4-letter ISO 20022 codes (GDDS, SALA, TAXS, SUPP).
9-digit entity Tax IDs (ს/კ), 11-digit personal IDs, and 9-digit RS.ge Treasury codes (101001000) are isolated in <OrgId><Othr><Id> (TXID) and <UltmtDbtr>.
Commercial invoice dates, contract numbers, and specifications for the beneficiary are formatted into <RmtInf><Ustrd> up to 140 characters without truncation.
Detailed technical specification of listening ports, protocols, message schemas, and integration points for On-Premise bank deployment:
| Layer / Channel | Global Contour (SWIFT / BIS d230) | Georgia & SEPA Contour (Montran ATS / TBC / BOG) | Protocol, Port & Security |
|---|---|---|---|
| Client Intake (DBO / ERP) Single & Batch origination |
pain.001.001.09 / CGI-MP
Direct XML ingestion or multi-tx batch registry (HTTP 207)
|
1C / Balance BDO / TBC BIS v1 / BOG XS2A
PMPG 2026 address placer, RS.ge 9n code, printable pain.002
|
HTTPS / OAuth 2.0 · Port :8085 / :8443
Bearer Token / Idempotency-Key
|
| Structure Validation Engine Deterministic ISO rulepack |
local-core ISO Head
45 CBPR+ rules, IBAN Release 103 (89 countries), BTC 2025
|
local-core + Georgian National Library
366 Purpose + 49 CtgyPurp, 98 BICs, Decree 109 Latin X
|
HTTP IPC Loopback · Port :18080
Internal loopback only (127.0.0.1)
|
| Officer Shift Runtime Shift desks & 4 Ledgers |
odpasd Officer Console
Client Intake, Inward Nostro, Release, SHA-256 journal
|
odpasd + 4 Reconciliation Ledgers Room
Clean Passed, In-Bank Hold, Correspondent Inquiry, Fee Ledger
|
HTTP / WebView2 · Port :8080
Role PIN / Constant-time auth
|
| Core Banking Interface Balance & ledger postings | Host Outbox / MQ / Webhook Debit confirmation, camt.054 advice ingestion | BSC Gemini G6 / SOAP mygemini & BIS v1 REST Live sync with test-api.tbcbank.ge & api.bog.ge XS2A |
REST / SOAP WS-Security
Core banking system remains untouched
|
| Network Emission & Rails Outward settlement |
pacs.008.001.08 + pacs.009 COV
SWIFT Alliance Access / Lite2 / AutoClient, ACK {451:0}
|
Multi-Rail: NBG Montran ATS + SEPA + SWIFT
Domestic GEL RTGS, EUR SEPA Credit Transfer & USD/EUR SWIFT
|
host-outbox/ & client-outbox/
Or MQ / AutoClient file interface
|
| Treasury & Nostro Statements Liquidity & Fee Stitching |
camt.053 / camt.054 / camt.105
OPBD + Cr − Db = CLBD equation check & CLAV / Overdraft
|
Multi-Ntry & Sandbox Movements
Auto-links .1 / parentExternalPaymentId fees (GEL & USD) to parent payment
|
Internal Ledger Module
Auto-matching via UETR & EndToEndId
|
The gateway operates inside this bank. It receives customer instructions, structures them into pain.001.001.09, and presents verification findings to the operations desk. Once the officer confirms structure, this bank emits clean pacs.008 and cover pacs.009 COV directly to SWIFT on the channels the bank already has. The core accounting system is not rewritten.
Library and rules, not a generative model.
Gateway in this bank’s contour: customer intake, human decision on the operations desk, verified pain.001.001.09, and emission of pacs.008 / pacs.009 COV to SWIFT Alliance — without rewriting core banking systems.
pain.001 file or posted through bank API keys.pain.002 status report (ACSP / ACSC). Debit and execution stay at this bank.pain.001.pain.001 as received. Working copy in pain.001.001.09. CIF profile check and trna purpose matching. A proposal from the library; a person confirms.pacs.008 and cover pacs.009 COV are built with network UETR. If a legacy correspondent still takes MT, losses are shown before send.Together. The sender closes what they can see before send. Operations closes what the sender cannot. Clean pacs.008 on the wire. Format translation in the bank contour — not two products competing on SWIFT.
The gateway is installed in the bank’s contour, on the bank’s equipment, on top of the core banking system.
The core is not rewritten. The gateway is a layer between intake channels and the outbound flow to the network: unpack, check, assemble.
Data does not leave the bank’s contour. Processing is local. Interaction with the network uses the channels the bank already has connected.
pain.001, legacy free-text requisites, or accounting file dumps).pain.001.001.09. Street, building, post code, town, and country are verified as structured pairs. The trna enzyme reads the purpose narrative and verifies compatibility with the company's registered CIF business profile. Nothing is guessed or discarded.Emits pacs.008 and cover pacs.009 COV in full. Every verified and structured element is packaged with network AppHdr and UETR for direct transmission to SWIFT Alliance. Nothing is dropped.
When structured data is folded into MT, part of it does not fit. That usually happens in silence: the message leaves, the data disappears, and the bank learns from a correspondent query or a return.
The gateway shows the loss list before send: what did not fit, from which field, by how much. Operations sees it and decides — send as is, fix, or ask for clarification. The list is written to the decision trail. A month later it is possible to see what left truncated and who accepted that.
The sender describes the purpose in their own words. The network requires a code. The correspondent requires a code. Matching description to code is done by hand, and differently by different people.
The gateway reads the description, proposes a code from the ISO 20022 classification, and shows the grounds — why this one. Operations confirms or picks another. Both the original words and the structured code stay in the message. One does not replace the other.
Operations does not parse XML line by line. The screen shows what needs a decision, and why. Applying a proposal is a human action: Accept structure proposal.
The inbound message is frozen and stored as received. Work is done on a working copy. The difference is an explicit list of changes — not a visual compare.
For each finding, operations chooses: accept the proposal, correct it, request documents from the sender, or reject. While blocking findings are open, release is not possible — a system limit, not staff discipline.
Transactions sit on a tape with state marks: waiting, in review, ready to release, approaching cut-off.
For each payment a full history is kept:
That gives the bank three things. An answer to a correspondent query a month later — assembled from the trail, not from memory. Material for internal control and audit — every decision dated and grounded. A way to reconstruct an incident — not only what happened, but why that decision was taken under the rules then in force.
A local assistant is built into the gateway for one job: unpacking unstructured data — mainly addresses, where no formal rule exists.
Payment requirements differ by country and change over time. Standard releases come yearly; regulators issue amendments; effective dates move.
The gateway core does not contain the rules of a particular jurisdiction. Rules arrive as packs: each pack has a version, an effective date, a source, and an owner. When a requirement changes, the pack is updated — not the program. The bank sees which pack version applied to each payment.
Prepares and checks messages. Structures customer instructions into pain.001.001.09. Forms outbound pacs.008 and pacs.009 COV in full to SWIFT Alliance. Shows MT losses before release when communicating with legacy correspondents. Records the immutable decision trail. Runs the officer queue.
Does not replace the bank’s compliance: sanctions lists, anti-money-laundering, customer identification, and regulator reporting stay with the bank and its systems. ODG-PASS does not take those functions on. Does not execute payments — posting, accounts, and settlement stay with the bank. Does not change delivery speed: route and correspondents do. It removes delays caused by data quality — manual unpack, document requests, returns. Does not give legal opinions.
The move to the new standard stops being a choice between rewriting every system at once and working with losses.
Inbound flow from older channels is unpacked and completed. Outbound is formed in full. Where it cannot be made full, the bank knows that before send — not after a return. Every decision is recorded and grounded. Rules update without a program change. The core banking system stays untouched.
ODG-PASS Gateway — Sovereign ISO 20022 & SWIFT CBPR+ Structure Engine.
[email protected] · [email protected] · +968 79690973 (Telegram, WhatsApp)