QUSD ISO 20022 Manualby user type
QUANTVESTRIX INC · v1.0 · 2026-10-05

ISO 20022, for a dollar carried inside the coin.

QUSD is a fully-backed 1:1 US-dollar stablecoin: every coin carries its own dollar of fiat inside its mint ByteID and reads on chain. This manual shows how QUSD maps onto the ISO 20022 payment standard — pain, pacs and camt messages — and what that means for each kind of user, from an individual holder to a settlement bank.

Peg $1.00 · par · redeemable 1:1

Overview

ISO 20022 is the international standard for electronic payment messaging between customers, businesses and financial institutions. QUSD speaks it so that minting, sending, settling and reporting a QUSD dollar look to a bank exactly like a standards-based payment — while the backing stays provable on chain, without trusting anyone.

One standard, one dollar

Every QUSD is one dollar. An ISO 20022 instruction for QUSD carries the same amount, currency, parties, reference and UETR a bank already expects — the coin is the settlement asset.

Backing in the coin

A QUSD is never issued past its backing: the dollar is folded into the coin's own mint ByteID at issuance. Coverage is 1.0000 by construction — there is no pool to drain and nothing to misreport.

Verify without us

Supply reads from chain with totalSupply(); backing reads with committedValue(bytes8); any figure re-folds at /reflect. No account, no key, no bank to call.

QUSD is live across six chains — QVTX 42000, Polygon, BSC, Base, Arbitrum and the XRP Ledger — so you can settle where your counterparty already is, without a third-party bridge's IOU. See the live register on qusd.us and qusdscan.us.

Full ISO 20022 message list

Every ISO 20022 message type QUSD is XSD-gated for — 18 message types across 27 schema versions, each validated against its .xsd on disk before anything is built or accepted. Search or filter by family. live marks what the gateway advertises at /iso20022 today.

MessageSchema versionsNameDirectionUsed for
pain.001 live.001.03 · .001.09 · .001.11CustomerCreditTransferInitiationCustomer → bankInitiate a credit transfer — the instruction that funds a QUSD mint or a payout.
pain.002.001.03 · .001.10 · .001.12CustomerPaymentStatusReportBank → customerStatus of a pain.001 across its lifecycle (ACTC…ACSC/RJCT).
pacs.008 live.001.08 · .001.10FIToFICustomerCreditTransferBank → bankInterbank customer credit transfer — the settlement leg; the correct message for a corporate debtor.
pacs.009 live.001.10FinancialInstitutionCreditTransferBank → bankFI own-account transfer. Not interchangeable with pacs.008.
pacs.002.001.10 · .001.12FIToFIPaymentStatusReportBank → bankInterbank payment status report.
pacs.004.001.09PaymentReturnBank → bankReturn of a previously settled credit.
camt.053.001.02 · .001.08 · .001.10BankToCustomerStatementBank → customerEnd-of-day statement — the artefact that closes reconciliation; binds to a ByteID via the mint spec.
camt.054.001.08 · .001.10BankToCustomerDebitCreditNotificationBank → customerPer-entry debit/credit notification — "a dollar landed."
camt.050.001.05LiquidityCreditTransferBank → bankLiquidity transfer (credit).
camt.051.001.05LiquidityDebitTransferBank → bankLiquidity transfer (debit).
camt.003.001.07GetAccountCustomer → bankQuery account information.
camt.004.001.08ReturnAccountBank → customerAccount information report.
camt.009.001.07GetLimitCustomer → bankQuery a limit.
camt.010.001.08ReturnLimitBank → customerLimit report.
acmt.001.001.08AccountOpeningInstructionCustomer → bankOpen an account.
acmt.002.001.08AccountDetailsConfirmationBank → customerConfirm account details.
acmt.003.001.08AccountModificationInstructionCustomer → bankModify an account.
head.001.001.02BusinessApplicationHeaderEnvelopeWraps a business message for routing and signing.
Every version here has its .xsd on disk and is enforced by the schema gate — a message that does not validate is rejected before it is built or accepted. Identifiers every message carries: a UETR (UUID v4, one per instruction, never reused), an EndToEndId (≤ 35 chars, constant across a logical batch), and unstructured remittance (RmtInf, ≤ 140 chars). Structured creditor addresses become mandatory from November 2026.

QUSD ↔ ISO 20022

Each QUSD action has an ISO 20022 counterpart. The coin is the settlement asset; the messages describe its movement in the language banks already use.

Mint QUSD (deposit a dollar, coin issued)
→
pain.001 initiation · dollar folded into the mint ByteID
Status of that mint / payment
→
pain.002 (ACTC → ACCP → ACSP → ACSC)
Transfer / settle between institutions
→
pacs.008 FIToFICustomerCreditTransfer
"A dollar landed" notification
→
camt.054 credit notification
End-of-day statement
→
camt.053 statement
Redeem QUSD (1:1, at par)
→
pain.001 payout · burn against backing
Prove the backing
→
on-chain committedValue(bytes8) · /reflect re-fold
User type

Individuals & holders

You hold QUSD in your own wallet — non-custodial, its dollar carried inside the coin, not on anyone's balance sheet and not freezable on a platform. You can mint your own, hold it, send it, and redeem it 1:1.

Mint your own dollar

Deposit a dollar; a QUSD is issued with that dollar folded into its ByteID. In ISO terms your deposit is a pain.001 credit-transfer initiation; the coin is the result. Mint at qusd.us/mint.

Hold a real NFT dollar

QUSD$ is an on-chain NFT dollar — unique, owned, transferable, backed 1:1. It renders anywhere a wallet opens a link (PNG / SVG / JSON).

Up, never down

A hard floor at par: QUSD is redeemable 1:1 and is never sold below $1.00. Redemption is a pain.001 payout against the coin's own backing.

How a mint flows

Connect a wallet to QVTX chain 42000 (the Connect button on qusd.us adds the network for you).

Initiate the dollar in — this is your pain.001. The coin is minted with the dollar committed in the same act, so it can never be issued past its backing.

Receive the coin and a credit notification (camt.054 equivalent). The coin is yours, in your wallet.

Verify it yourself on qusdscan.us — look up the coin, its ByteID and its backing, straight from chain.

You never have to trust a custodian or a quarterly attestation. Every coin's dollar is in its own ByteID and reads on chain, any time, with no permission from anyone.
User type

Merchants & business

Accept QUSD for goods and services and settle 1:1, with every payment reconcilable by the references ISO 20022 already defines. One dollar in equals one dollar settled — no slippage, no depeg from a thin pool.

Invoice → EndToEndId

Put your invoice or order number in the EndToEndId (≤35 chars) and keep it constant across the batch. It survives end to end, so a payment reconciles to an invoice automatically.

Receive & reconcile

Incoming settlement arrives as a pacs.008 credit; you reconcile against a camt.054 per-credit notification and a camt.053 end-of-day statement — matched on UETR and amount.

Payouts

Pay suppliers or staff in QUSD by issuing a pain.001 with their address as creditor. Returns, if any, come back as pacs.004 / camt.056.

Reconciliation discipline

One EndToEndId per logical batch; a fresh UETR per instruction. Never reuse a UETR.

Match on UETR and amount, not on a running balance. Confirm each credit independently.

Close the day on the statement. A sum of confirmed credits is not a balance — the camt.053 statement is what establishes the position.

User type

Banks & financial institutions

QUSD settles institution-to-institution over a standards-based rail. The outbound settlement message is pacs.008; delivery is an HMAC-signed, idempotent instruction; reconciliation closes on camt.053.

pacs.008 is the message

Where the debtor is a corporate (not a financial institution), the interbank credit transfer is pacs.008, carrying debtor, creditor, amount, currency, UETR and remittance. pacs.009 is for an FI's own-account transfer and is not interchangeable.

Idempotent by content

Delivery is keyed on (partnerId, byteId) and on UETR. Because the byteId is derived from the instruction's content, a byte-identical retry cannot double-credit. A changed amount, reference or UETR is a new instruction, not a retry.

Authorised, per instruction

Posting real credit to a core requires the explicit, current authorisation of the sending institution for that specific instruction. Standing approval does not carry to a later instruction.

Currency & FX

A settlement rail settles in its stated currency; where a currency conversion is needed it is agreed and stated on the instruction, with the rate basis recorded. A minted balance is never presented as settlement cover.

Delivery & reconciliation

Check liveness and limits before a run; confirm settlement currency and account.

One connection per instruction; do not pipeline. Pace instructions, and capture the complete response body — it is the receipt.

Re-read every instruction independently after submit — a submit acknowledgement is not settlement. Confirm status ACSC/ posted and that ledger id, reference, UETR and byteId are distinct across legs.

Reconcile on ledger id and amount, and close on the camt.053 statement. Never present a sum of postings as a balance.

Structural acceptance is not settlement. A network/technical acceptance (ACTC) means the envelope validated — not that funds settled (ACSC). Treat the two as different states, always.
User type

Developers & integrators

Build against open, keyless endpoints and on-chain reads — the same ones qusd.us and qusdscan.us use. No key, no account.

Live endpoints

MethodEndpointReturns
GETqusd.us/iso20022ISO 20022 capability — enabled messages and rails.
GETqusd.us/byteidThe ByteID sovereign-transport protocol card and types.
POSTqusd.us/reflectFold any payload → its sense and shadow ByteID, with an involution check.
RPCqusd.quantvestrix.io/_rpc/42000JSON-RPC to QVTX chain 42000 (also /_rpc/20232).

On-chain reads (no endpoint required)

CallWhereReturns
totalSupply()each QUSD contract, any of the six chainsMinted supply at 18 decimals.
balanceOf(addr)each QUSD contractCirculating vs treasury-held.
committedValue(bytes8)
sel 0x4058baa5
anchor registry, chain 42000Dollars committed to a backing ByteID.

Identifiers & rules

UETRRFC 4122 v4 UUID, lowercase, one per instruction, never reused.
MsgIdQVTX-YYYYMMDDHHMMSS-XXXXXXXX, unique per message.
EndToEndId≤ 35 chars, assigned by the originator, constant across a logical batch.
RmtInf (Ustrd)≤ 140 chars unstructured remittance.

Sample — read capability and fold a value

# what ISO 20022 messages are enabled
curl -s https://qusd.us/iso20022

# fold any payload; confirm the engine lands on your sense + shadow ByteID
curl -s -X POST https://qusd.us/reflect \
  -H 'content-type: application/json' \
  -d '{"amount":"1500.00","ccy":"USD","ref":"Invoice #12345"}'
Idempotency is content-derived: send a byte-identical instruction twice and it cannot double-apply. Change any field and it is a new instruction. Build retries around exact-bytes resends.
User type

Auditors & regulators

QUSD is built to be checked, not trusted. Every figure can be reproduced from primary sources — the chain and a keyless fold — with no cooperation from the issuer.

Read supply from chain. Call totalSupply() on each QUSD contract across the six chains and sum at 18 decimals. Compare to the published register on qusd.us — derive it, don't take it.

Read backing from chain. committedValue(bytes8) on chain 42000 returns the dollars committed to a backing ByteID. Coverage is 1.0000 by construction, measured per coin — not a single pooled reserve ratio.

Re-fold any figure at /reflect and confirm the engine lands on the same sense and shadow ByteID as yours. A mismatch is a finding, not a support ticket.

Browse it on qusdscan.us — contracts, tokens, transfers and charts, read straight from chain.

Dual-channel verification: each attested backing record re-folds to exactly its recorded identifier across two independent channels — software and silicon. The attestation is a computation that reproduces on demand, not a signed PDF.

Status & reject codes

Transaction status (pain.002)

CodeNameMeaning
ACTCAcceptedTechnicalValidationSyntax/schema valid. Not settlement.
ACCPAcceptedCustomerProfileBusiness rules passed.
ACSPAcceptedSettlementInProcessSettlement in progress.
ACSCAcceptedSettlementCompletedFinal — settled.
ACWCAcceptedWithChangeAccepted with modifications.
PARTPartiallyAcceptedSome transactions accepted.
PDNGPendingAwaiting processing.
RCVDReceivedReceived, not yet processed.
RJCTRejectedRejected — see reason code.

Common reject reasons

CodeNameMeaning
AC01IncorrectAccountNumberAccount not found.
AC04ClosedAccountNumberAccount closed.
AC06BlockedAccountAccount blocked.
AM01ZeroAmountAmount is zero.
AM02NotAllowedAmountAmount exceeds a limit.
AM04InsufficientFundsBalance does not cover the amount.
AM09WrongAmountAmount does not match.
BE04MissingCreditorAddressStructured address required.
MD01NoMandateNo authorisation.
RC01BankIdentifierIncorrectInvalid routing/BIC.
RR01MissingDebtorAccountDebtor account not specified.
RR04RegulatoryReasonCompliance rejection.

XML templates

pain.001 — customer credit transfer initiation

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>QVTX-20261005103000-A1B2C3D4</MsgId>
      <CreDtTm>2026-10-05T10:30:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>1500.00</CtrlSum>
      <InitgPty><Nm>QUANTVESTRIX INC</Nm></InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>PMT-TRF-20261005-001</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <ReqdExctnDt>2026-10-05</ReqdExctnDt>
      <Dbtr><Nm>QUANTVESTRIX INC</Nm></Dbtr>
      <CdtTrfTxInf>
        <PmtId><EndToEndId>Invoice-12345</EndToEndId>
          <UETR>e00b5ba0-5c1e-4c8a-9c3d-7f2a1b3c4d5e</UETR></PmtId>
        <Amt><InstdAmt Ccy="USD">1500.00</InstdAmt></Amt>
        <Cdtr><Nm>John Smith</Nm></Cdtr>
        <RmtInf><Ustrd>Invoice #12345</Ustrd></RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

pacs.008 — FI-to-FI customer credit transfer

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pacs.008.001.08">
  <FIToFICstmrCdtTrf>
    <GrpHdr>
      <MsgId>PACS-20261005103100-C3D4E5F6</MsgId>
      <CreDtTm>2026-10-05T10:31:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <SttlmInf><SttlmMtd>CLRG</SttlmMtd></SttlmInf>
    </GrpHdr>
    <CdtTrfTxInf>
      <PmtId><UETR>e00b5ba0-5c1e-4c8a-9c3d-7f2a1b3c4d5e</UETR></PmtId>
      <IntrBkSttlmAmt Ccy="USD">1500.00</IntrBkSttlmAmt>
    </CdtTrfTxInf>
  </FIToFICstmrCdtTrf>
</Document>

camt.054 — credit notification

<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.08">
  <BkToCstmrDbtCdtNtfctn>
    <Ntfctn>
      <Ntry>
        <Amt Ccy="USD">1500.00</Amt>
        <CdtDbtInd>CRDT</CdtDbtInd>
        <Sts>BOOK</Sts>
        <NtryDtls><TxDtls><Refs>
          <UETR>e00b5ba0-5c1e-4c8a-9c3d-7f2a1b3c4d5e</UETR>
        </Refs></TxDtls></NtryDtls>
      </Ntry>
    </Ntfctn>
  </BkToCstmrDbtCdtNtfctn>
</Document>

Glossary

ByteIDThe quaternary fold of a coin's content and its backing. A QUSD's dollar is carried inside its mint ByteID; it re-folds to exactly its recorded identifier.
committedValueOn-chain read (bytes8 → dollars) that returns the backing committed to an anchor ByteID on chain 42000.
UETRUnique End-to-end Transaction Reference — a UUID v4 that tracks one instruction across every institution.
EndToEndIdOriginator-assigned reference (≤35 chars) that survives end to end — ideal for an invoice or order number.
pain / pacs / camtISO 20022 families: customer-to-bank initiation / bank-to-bank clearing & settlement / bank-to-customer cash management (reporting).
Par$1.00. QUSD is issued and redeemed at par; the peg holds or rises, never breaks downward.
BICBank Identifier Code (SWIFT). Used to route interbank messages; a code that is not a live, registered SWIFT connection is never placed in an envelope as one.