Gbits.io
Solana ISO 20022 Message Gateway
Message Flow FAQ Open App

Solana SPL Tokencamt.053.001.04

Field mapping reference for the Gbits Pay camt.053 generator — how on-chain stablecoin transfer data maps into ISO 20022 BankToCustomerStatement XML.
Solana on-chain data
UI input field
Derived / computed
Fixed constant
camt.053 XML path
Group Header — BkToCstmrStmt/GrpHdr
camt.053 XPathSourceTransformation & Notes
GrpHdr/MsgId "GBITS" + currency + fromDt + Date.now() Auto-generated unique message ID, truncated to 35 chars.
e.g. GBITSCHF20250301...
GrpHdr/CreDtTm new Date() ISO 8601 datetime at moment of generation.
GrpHdr/MsgPgntn/PgNb 1 Always single page (no pagination).
GrpHdr/MsgPgntn/LastPgInd true Always true — single report per currency.
GrpHdr/AddtlInf SPS/1.7/PROD Swiss Payment Standards version identifier.
Statement — BkToCstmrStmt/Stmt
camt.053 XPathSourceTransformation & Notes
Stmt/Id "GBITS-STMT-" + currency + "-" + fromDt + "-" + ts Unique statement ID per currency & date range. Max 35 chars.
Stmt/ElctrncSeqNb 1 Always 1 — single statement per generation run.
Stmt/CreDtTm new Date() Same as GrpHdr/CreDtTm.
Stmt/FrToDt/FrDtTm #date-start User-selected start date + T00:00:00.000+01:00
Stmt/FrToDt/ToDtTm #date-end User-selected end date + T23:59:59.999+01:00
Account — Stmt/Acct
camt.053 XPathSourceTransformation & Notes
Acct/Id/IBAN #iban User-entered IBAN (whitespace stripped). Links camt.053 to Bexio bank account.
If empty, falls back to Acct/Id/Othr/Id = Solana wallet address (34 chars).
Acct/Ccy currencySTABLECOIN_CONFIG[].currency Determined by stablecoin: USDC/USDT/PYUSD → USD, EURC/EUROe → EUR, VCHF → CHF
Acct/Ownr/Nm #owner-name User-entered account owner name. Falls back to Solana wallet address if empty.
e.g. Felix Muster or Muster AG
Acct/Ownr/PstlAdr #owner-street, #owner-bldg, #owner-zip, #owner-town, #owner-country Optional CBPR+ structured postal address. Includes StrtNm, BldgNb, PstCd, TwnNm, Ctry. Only generated if at least one address field is filled.
e.g. Hugo street 12, 8050 Zürich, CH
Acct/Svcr/FinInstnId/BICFI SOLNCHZZXXX Synthetic BIC for "Solana Network, Zurich". Not a real SWIFT code — placeholder for accounting software compatibility.
Balances — Stmt/Bal
camt.053 XPathSourceTransformation & Notes
Bal[OPBD]/Amt 0.00 Opening booked balance — always zero (no carried-forward state from previous statements).
Bal[OPBD]/CdtDbtInd CRDT Always credit.
Bal[OPBD]/Dt #date-start Statement start date.
Bal[CLBD]/Amt |totalCredit − totalDebit| Closing booked balance = absolute net of all entries. Computed from tokenTransfer.tokenAmount sums.
Bal[CLBD]/CdtDbtInd net ≥ 0 ? CRDT : DBIT Direction derived from net balance sign.
Bal[CLBD]/Dt #date-end Statement end date.
Transaction Summary — Stmt/TxsSummry
camt.053 XPathSourceTransformation & Notes
TtlNtries/NbOfNtries entries.length Total count of all SPL token transfers in selected currency & date range.
TtlNetNtry/Amt |totalCredit − totalDebit| Same as CLBD balance amount.
TtlCdtNtries/NbOfNtries count(direction === 'CRDT') Number of incoming transfers (to wallet).
TtlCdtNtries/Sum Σ amount where direction === 'CRDT' Sum of all incoming tokenAmount values.
TtlDbtNtries/NbOfNtries count(direction === 'DBIT') Number of outgoing transfers (from wallet).
TtlDbtNtries/Sum Σ amount where direction === 'DBIT' Sum of all outgoing tokenAmount values.
Entry (per transfer) — Stmt/Ntry
camt.053 XPathSourceTransformation & Notes
Ntry/NtryRef loop index + 1 Sequential 1-based entry number.
Ntry/Amt @Ccy tokenTransfer.tokenAmount + currency Absolute transfer amount (2 decimal places). Currency code from stablecoin mapping.
Ntry/CdtDbtInd toUserAccount === wallet ? CRDT if wallet is the receiver, DBIT if sender. Determined by comparing toUserAccount / toTokenAccount to connected wallet address.
Ntry/RvslInd false No reversal support. Solana transactions are final.
Ntry/Sts BOOK Always booked — only confirmed on-chain transactions are fetched.
Ntry/BookgDt/Dt tx.timestamp Block timestamp → YYYY-MM-DD. Same value used for ValDt.
Ntry/ValDt/Dt tx.timestamp Same as BookgDt — Solana has instant settlement, no value-date distinction.
Ntry/AcctSvcrRef tx.signature Solana transaction signature, truncated to 35 chars. The unique on-chain transaction ID.
Ntry/BkTxCd/Domn/Cd PMNT Domain: Payment.
Ntry/BkTxCd/Domn/Fmly/Cd CRDT → RCDT | DBIT → ICDT Family code: RCDT (Received Credit Transfer) for incoming, ICDT (Issued Credit Transfer) for outgoing.
Ntry/BkTxCd/Domn/Fmly/SubFmlyCd ESCT Sub-family: European SEPA Credit Transfer. Used for Swiss accounting software compatibility.
Ntry/AddtlNtryInf conditional If QR reference present: "Gutschrift/Belastung QRR: {qrRef}". Otherwise: "Solana {tokenLabel} via SPL Token". Max 140 chars.
Transaction Details — Ntry/NtryDtls/TxDtls
camt.053 XPathSourceTransformation & Notes
Refs/AcctSvcrRef tx.signature Same as entry-level AcctSvcrRef. Truncated to 35 chars.
Refs/EndToEndId tx.signature Solana signature reused as end-to-end identifier (35 chars).
TxDtls/Amt @Ccy tokenTransfer.tokenAmount Repeated at detail level (same as Ntry/Amt).
TxDtls/CdtDbtInd same as Ntry/CdtDbtInd Repeated at detail level.
RltdPties/Dbtr/Nm
(when CRDT)
fromUserAccount For incoming transfers: sender's Solana wallet address as debtor name. Truncated to 70 chars.
RltdPties/Cdtr/Nm
(when DBIT)
toUserAccount For outgoing transfers: receiver's Solana wallet address as creditor name. Truncated to 70 chars.
CdtrAcct/Id/Othr/Id
(when DBIT)
toUserAccount Creditor account ID — counterparty wallet (34 chars). Only present for outgoing (DBIT) entries.
Remittance Information — TxDtls/RmtInf
camt.053 XPathSourceTransformation & Notes
Path A — QR Reference present: tx.memo starts with "QRR:"
Strd/CdtrRefInf/Tp/CdOrPrtry/Prtry QRR Proprietary reference type: Swiss QR-Reference.
Strd/CdtrRefInf/Ref tx.memo QR reference extracted from memo (strip "QRR:" prefix). Standard 27-digit Swiss QR reference.
Strd/AddtlRmtInf "SOL-" + tokenLabel + " " + signature Concatenated provenance string. Max 140 chars.
Path B — No QR Reference: plain memo or no memo
Ustrd "SOL-" + tokenLabel + " " + signature Unstructured remittance: stablecoin label + tx signature. Max 140 chars.
e.g. SOL-USDC 4sGjMW1sU...
Appendix — Stablecoin → Currency Mapping
Token LabelSPL Mint AddressDecimalsISO 4217 CcyReport Grouping
USDCEPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v6USDOne camt.053 per currency
USDTEs9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB6USDMerged with USDC into USD report
PYUSD2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo6USDMerged with USDC into USD report
EURCHzwqbKZw8HxMN6bF2yFZNrht3c2iXXzpKcFu7uBEDKtr6EUROne camt.053 per currency
EUROe2VhjJ9WxaGC3EZFwJG9BDUs9KxKCAjQY4vgd1qxgYWVg6EURMerged with EURC into EUR report
VCHFAhhdRu5YZdjVkKR3wbnUDaymVQL2ucjMQ63sZ3LFHsch6CHFSole CHF stablecoin