On-chain USDC settlement in under 10 seconds with atomic FX conversion, real-time sanctions screening, and SWIFT ISO 20022 integration.
Imagine sending money from New York to Berlin. Normally it takes 3-5 days and costs $35. With Tokenize, the on-chain transfer completes in under 10 seconds and costs 2 cents — like sending an email instead of a letter. The full end-to-end flow includes off-chain banking steps (SWIFT messaging, SEPA credit) which add time but still beat traditional correspondent banking. Your money moves on blockchain, but the payment details travel through normal banking channels (SWIFT), so both banks can verify everything matches.
Alice in the US sends 1,000 USDC to Bob in the EU. The payment leverages the CBPR (Cross-Border Payment Rail) smart contract on Sepolia testnet, with embedded compliance checks, corridor validation, and real-time settlement.
Demo vs Production: This demo shows direct USDC transfer (simplest flow). In production, the PvP FX swap (described below) converts USDC → EURC atomically, then EURC is redeemed to EUR fiat via SEPA Instant — so Bob receives EUR, not USDC.
TMMFRedeemed and TMFSubscribed) to maintain the required audit trail for fund administrator sign-off and depositary verification.
Business Value: This demo replaces legacy SWIFT MT103 wire transfers (3-5 day settlement, $25-50 fees) with on-chain USDC settlement in under 10 seconds at ~$0.02 cost. Production uses ISO 20022 pacs.008 — under the SWIFT CBPR+ programme, MT messages were retired for cross-border payments in November 2025 (coexistence mode ran alongside during the transition). The CBPR contract acts as a smart escrow — funds are locked when the payment is initiated, validated against corridor rules and compliance status, then released to the recipient upon settlement confirmation.
Integration Architecture: In production, this blockchain layer sits alongside legacy banking systems. The Middleware Service receives payment instructions from SAP/Oracle Financials, validates them against the CorridorRegistry for routing rules, checks the IdentityRegistry for KYC/AML compliance, and then submits the transaction to the CBPR contract. Settlement status flows back to the legacy core via the same middleware.
Standards used: ERC-20 (USDC transfers), FATF Travel Rule (KYC/AML), ISO 20022 pacs.008 (payment data), SWIFT (bank routing), hash commitment (data integrity).
Alice enters payment details. Frontend looks up Bob's BIC from IdentityRegistry (ERC-3643 T-REX identity standard for regulated tokens; custom contract on-chain, not ERC-725 which is a key manager standard).
IdentityRegistry.checkCompliance() — FATF Travel Rule: verifies KYC, accreditation level, sanctions screening.
CorridorRegistry.validateCorridor() — checks active routes, min/max limits, sanctions restrictions.
USDC.transferFrom() — Alice's USDC (ERC-20) transferred to CBPR contract as escrow.
Channel 1 (Blockchain): keccak256(SWIFT_XML) stored on-chain as tamper-proof receipt.
Channel 2 (SWIFT): ISO 20022 pacs.008 XML sent to Bob's bank BIC — carries full payment data (invoice, line items, tax).
Bob's bank: Receives ISO 20022 XML via SWIFT → computes hash → compares to on-chain hash → verifies integrity → credits Bob's account.
Blockchain: 3-of-5 multi-sig releases USDC from escrow to Bob's wallet address (ERC-20 transfer).
Alice opens the Tokenize web application and enters the payment details: recipient address, amount, corridor (US-EU), and purpose of payment (memo). The frontend validates the inputs and displays a summary screen showing all payment details including fees, exchange rates, and estimated settlement time.
Before any funds move, the CBPR contract calls identityRegistry.checkCompliance(Alice) to verify that Alice has completed KYC and is not on any sanctions list. This is a non-revertible check — if Alice is unverified, the transaction reverts immediately with "UNVERIFIED_SENDER". This ensures regulatory compliance at the smart contract level, not just at the application layer.
The CBPR contract validates the requested corridor (US-EU) against the CorridorRegistry. This checks that: (a) the corridor is active, (b) the payment amount falls within allowed min/max limits for this corridor, and (c) there are no sanctions or restrictions on this route. In production, this would also include AML screening against OFAC, EU, and UN sanctions lists. The Middleware Service pre-validates this data before the on-chain call, but the contract performs the definitive check.
Alice's USDC is transferred from her wallet to the CBPR contract using transferFrom(). This requires Alice to have previously approved the CBPR contract to spend her USDC (a one-time ERC-20 allowance). The funds now sit in the CBPR contract as an escrow — they are locked until the settlement is confirmed. This two-phase approach (escrow → release) provides a safety mechanism: if settlement fails, funds can be reversed back to the sender.
The CBPR contract generates a unique transaction ID using keccak256(abi.encodePacked(sender, recipient, amount, timestamp, corridorId)). This ID serves as the immutable reference for the entire payment lifecycle. The transaction is recorded on-chain with status PENDING and a PaymentInitiated event is emitted. This event is picked up by the Middleware Service, which updates the legacy core banking system (SAP/Oracle) with the new payment status.
Settlement requires 3-of-5 multi-signature approval via Gnosis Safe. The five signers are: (1) Sending Bank Node, (2) Receiving Bank Node, (3) Compliance Officer, (4) Platform Treasury, (5) Independent Validator. This ensures no single party can unilaterally release or freeze funds. The CBPR contract then transfers the USDC from escrow to Bob's address. The transaction status is updated to SETTLED and a SettlementConfirmed event is emitted. The Middleware Service propagates this to the legacy systems, completing the payment lifecycle.
Alice (0x1234...5678)
Bob (0x9ABC...DEF0)
1,000 USDC
🇺🇸 US → 🇪🇺 EU
Goods — Invoice #INV-2024-001
0x... (generated on-chain)
$35.00
~$0.02
Cost breakdown: The ~$0.02 figure reflects Sepolia testnet gas costs. In production, the platform would deploy on Base L2 (≈$0.001-0.01 per tx) or a permissioned EVM chain (zero gas). Legacy SWIFT MT103 fees ($25-50) include correspondent bank margins, not just network fees.
Robert Müller
🇩🇪 Germany
0x9ABC...DEF0
Verified
Deutsche Bank AG
DE89 3704 0044 0532 0130 00
Receives payment status updates via Middleware Service REST API. Ledger entries created for accounting reconciliation.
Used for rich payment data exchange between banks. The blockchain runs in parallel for USDC escrow and hash verification — it does not replace SWIFT.
Off-chain identity verification performed before on-chain registration. Results stored as on-chain compliance flags.
Simulation Mode — All demos work without MetaMask. Click buttons to simulate the full flow.
Connected: 0x0000...0000
WARNING: Private Key Input
DEMO ONLY — Sepolia Testnet: This private key only controls testnet tokens with no real-world value. Never use real wallet keys on any demo page. In production, you'd use MetaMask, a hardware wallet, or ERC-4337 account abstraction (bank-sponsored gas, no seed phrases).
Enter your Sepolia wallet private key. Your key never leaves your browser.
Banking Production: Customers never pay gas directly. The bank sponsors all transactions via ERC-4337 Account Abstraction paymaster — customers interact with a simple web UI, no wallet setup needed.
Two channels require two identifiers:
For USDC escrow on-chain
For ISO 20022 XML delivery via SWIFT network
Stored off-chain; referenced by txId on-chain