Bridge stablecoin transactions on Solana to the banking world's native language. Generate ISO 20022 bank statements, custody reports, and execute payment orders — all from a single HTML file running in your browser.
Built by Gbits.io during StableHacks: Building Institutional Stablecoin Infrastructure on Solana (Deadline: 2026/03/22).
Solana → ISO 20022 (primary direction)
Connect your Solana wallet, select a date range, and generate XML reports that import directly into accounting software like Bexio, SAP, or Abacus — no manual data entry, no CSV hacks.
- camt.053.001.04 — BankToCustomerStatement. Your stablecoin transaction history as a standard bank statement.
- camt.054.001.08 — BankToCustomerDebitCreditNotification (SPS 2024). Real-time payment notifications for instant payment workflows.
- semt.002.001.11 — SecuritiesBalanceCustodyReport. A point-in-time snapshot of all SPL token holdings in your wallet. Uses the v11
<BlckChainAdrOrWllt>element — ISO 20022's native blockchain address field.
ISO 20022 → Solana (reverse direction)
- pain.001.001.03 — CustomerCreditTransferInitiation (SPS 2009 Swiss flavor). Upload a standard Swiss payment order file. The gateway parses each payment, resolves the creditor's IBAN to a Solana address via verified-iban.sol SNS subdomains, and constructs SPL token transfers with memo.
Real-time camt.054 notifications
The Realtime tab demonstrates inbound payment monitoring: when a stablecoin payment arrives on-chain, ISOFIX generates a camt.054 debit/credit notification. Currently simulated in the browser; a Cloudflare Worker backend for live Helius webhook processing is planned.
- Simulate inbound payments with randomized counterparty, stablecoin, and amount
- Show your wallet address as a scannable Solana QR code for easy testing
- View, download, copy, or email each notification
- Syntax-highlighted XML viewer for inspecting generated messages
| Token | Currency | Mint |
|---|---|---|
| USDC | USD | EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v |
| USDT | USD | Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB |
| PYUSD | USD | 2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo |
| EURC | EUR | HzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr |
| EUROe | EUR | 2VhjJ9WxaGC3EZFwJG9BDUs9KxKCAjQY4vgd1qxgYWVg |
| VCHF | CHF | AhhdRu5YZdjVkKR3wbnUDaymVQL2ucjMQ63sZ3LFHsch |
The semt.002 custody report includes all SPL tokens in the wallet, not just stablecoins.
┌───────────────┐ ┌───────────────────────┐ ┌────────────────┐
│ Solana │ ──RPC──▶ │ isofix │ ──XML──▶ │ Bexio / SAP │
│ Blockchain │ │ (single HTML file) │ │ / Abacus │
└───────────────┘ └───────────┬───────────┘ └────────────────┘
│
┌───────────┴───────────┐
│ Browser-only │
│ No backend │
│ No build step │
│ No frameworks │
└───────────────────────┘
By design, this is one .html file. No React, no Node.js, no build tools, no bundlers. Open the file in a browser and it works. This is intentional:
- Auditability — Every line of code is visible in a single file. You can read exactly what it does before connecting your wallet.
- Portability — Drag it to Netlify, open it from your desktop, host it on IPFS. It runs anywhere a browser runs.
- Zero supply chain — No
node_modules, no dependency vulnerabilities, no build artifacts to trust.
External dependencies loaded from CDN:
@solana/web3.jsv1.95.8 (transaction construction for pain.001 execution)- Google Fonts (Outfit + JetBrains Mono)
A minimal Cloudflare Worker is planned for:
- Helius RPC proxy — Move the API key server-side instead of embedding it in the client. Required for production use.
- Real-time notifications — Helius Webhook → Cloudflare Worker → SSE → Browser for live camt.054 generation when payments arrive.
- ISOFIX REST API — Companies fetch camt.053/054 reports programmatically via
GET /api/v1/reports/camt053?address={addr}&from={date}&to={date}. - Multi-chain extensibility — The same relay pattern works with Infura/Alchemy webhooks for Ethereum L1/L2 stablecoins (USDC on Base, Arbitrum, etc.).
The client remains a static HTML file. The server is a stateless relay (~50 lines of Cloudflare Worker). See docs/ISOFIX_ServerSide_Plan.md for the full plan.
The pain.001 executor resolves creditor IBANs to Solana addresses using Bonfida SNS subdomain lookups:
IBAN: CH5204835012345671000
↓ normalize to lowercase
ch5204835012345671000.verified-iban.sol
↓ SNS resolution
Solana address: 4dcVxYLg8ofyC9tbUvS4JBV7nBMUsHN1hTHmzU1BJy7Y
The verified-iban.sol domain is owned by the project. IBAN subdomains are registered manually after verification.
This is the key demo: a Swiss payment standard file goes in, a Solana transaction comes out, and a Swiss accounting import comes back.
- Creditor creates a QR-bill → encodes as pain.001
- Debtor uploads pain.001 to isofix → sends VCHF on Solana with
QRR:{ref}memo - Creditor connects wallet → generates camt.054 → imports into Bexio
- Bexio auto-matches the payment to the invoice via QR reference
All without touching a bank.
- camt.053.001.04 — SPS 2009, namespace
urn:iso:std:iso:20022:tech:xsd:camt.053.001.04 - camt.054.001.08 — SPS 2024 v2.1.1, with structured
<Sts><Cd>BOOK</Cd></Sts>and<DtTm>booking dates for instant payments - pain.001.001.03 — SPS 2009 Swiss flavor, supports both SIX namespace (
http://www.six-interbank-clearing.com/de/pain.001.001.03.ch.02.xsd) and ISO namespace - semt.002.001.11 — ISO 20022 Release 2019, with
<BlckChainAdrOrWllt>blockchain address element - QR reference forwarding via SPL Memo (
QRR:{ref}pattern) - Bexio import validated (Feb 2026): camt.053, camt.054, duplicate detection across message types
- Open
index.htmlin a browser (or visit iso.gbits.io) - Connect your Solana wallet (Phantom, Solflare, Backpack)
- Verify wallet ownership (sign a message)
- Select a date range and report type
- Click Generate → download the XML → import into your accounting software
For pain.001 execution: switch to the "Execute Payments" tab, upload a pain.001 XML file, review parsed payments, and send.
For real-time notifications: switch to the "Realtime" tab, simulate an inbound payment or show your wallet QR code to receive a real one.
| Feature | Status |
|---|---|
| camt.053 generation | ✅ Working, Bexio-validated |
| camt.054 generation | ✅ Working, Bexio-validated |
| semt.002 generation | ✅ Working |
| pain.001 parsing | ✅ Working |
| IBAN → Solana (SNS) | ✅ Working |
| Syntax-highlighted XML viewer | ✅ Working |
| Realtime camt.054 (simulated) | ✅ Working |
| Wallet QR code for testing | ✅ Working |
| Field mapping reference | ✅ Working |
| Message flow animation | ✅ Working |
| pain.001 → SPL transfer | ✅ Working |
| Real-time notifications (live) | 🔲 Planned (Cloudflare Worker) |
| Helius RPC proxy | 🔲 Planned (Cloudflare Worker) |
| ISOFIX REST API | 🔲 Planned |
| Ethereum L1/L2 support | 🔲 Planned |
isofix/
├── public/ # Deployable web root
│ ├── index.html # The entire application (~130KB)
│ ├── isofix_flow.html # Landing page message flow animation
│ ├── camt053_field_mapping.html # Solana → camt.053 field mapping reference
│ └── images/
│ └── isofix-pic-01.png
├── docs/
│ ├── ISOFIX_Project_Knowledge.md # Detailed technical documentation
│ ├── ISOFIX_ServerSide_Plan.md # Cloudflare Worker implementation plan
│ └── roadmap.md # Milestone roadmap with timeline
├── llms.txt
├── README.md
└── LICENSE
Yes, the web app is one HTML file.
| Document | Purpose |
|---|---|
| Field Mapping | Interactive reference showing how each Solana on-chain field maps to camt.053 XML elements |
| Message Flow | Animated diagram of the bidirectional Solana ↔ ISO 20022 architecture |
| Project Knowledge | Technical deep-dive: architecture, all three tabs, wallet integration, known issues, how to resume work |
| Server-Side Plan | Cloudflare Worker implementation plan with route structure and TODO list |
| Roadmap | Five milestones: server-side, live realtime, multi-chain, REST API, improvements |
Business Source License 1.1
Parameters:
- Licensor: Roman Bischoff, Zürich
- Licensed Work: isofix
- Additional Use Grant: You may use the Licensed Work for non-commercial, personal, academic, research, and development purposes, including use on Solana testnet and devnet. Production use for commercial payment processing services requires a separate commercial license.
- Change Date: 2028-03-01
- Change License: Apache License, Version 2.0
The full BSL 1.1 text is available at https://mariadb.com/bsl11/
© 2026 Roman Bischoff. All rights reserved.
Built with stubbornness and a single HTML file by the Gbits.io team.
