Every coupon, redemption and bondholder vote, executed on-chain
Record date, per-holder entitlements, escrowed settlement and ISO 20022 reporting for tokenized bonds, under Kazakhstan market rules.
Follow one coupon to the last tenge
The issuer funds an escrow; the program pays each holder their exact share, sends withheld tax to the tax vault and bank payouts through the paying agent. Band widths follow the money; every leg is a transaction.
BTRK-tmnc80 · MCAL
Proven on devnet
- Verified build hash
- 4a2e46778847f8b6277194a74ee89e9145fc8c03f8e4e8c9ede3bdda752a3505
- Demo runs · 2026-10-09
- 28 transactions — every plan-15 instruction succeeded
60 transactions — the full bond lifecycle
The program on devnet is the binary built from this repository — reproducibly, in Docker. Nothing on this page is a mock-up.
Verify the build yourself
One command rebuilds the program in Docker and compares its hash with the binary deployed on devnet.
cargo install solana-verify --locked solana-verify verify-from-repo https://github.com/savvax/qupon \ --program-id QPN1zdVm6PgMdJo4YxemtDxxbUczqaAk9sDsJQsJ2qd \ --library-name qupon_bonds \ --base-image solanafoundation/solana-verifiable-build:4.3.0
Docker required. On any mismatch solana-verify exits non-zero.
Beyond a coupon
A coupon is the smallest thing Qupon does. The plan-15 mechanics below each ran for real on devnet — follow the transaction.
Default and cure
The issuer missed the payment date. One series day later anyone declared the default on-chain; the issuer's late funding cured it, and the record-date holders were still paid in full.
Paid to your bank
SimulatedOnly the holder's own signature chooses the payout route. This coupon went to the paying agent, who confirmed the transfer with a reference hash — the bank transfer itself is simulated.
Anyone can push the next step
Snapshot, payout, completion — every crank step is permissionless. This snapshot was pushed by an outsider key, not by the registrar or the issuer.
Accrued interest on every trade
A DvP trade between coupon dates carries its accrued interest: clean 4,975.00 ₸ + accrued 25.00 ₸ = a 5,000.00 ₸ cash leg, computed by the program.
The notice is anchored
The sha256 of the seev.031 notice is anchored on-chain once; attaching it a second time is rejected. Download the notice and compare the hash yourself.
From record date to payout in five on-chain steps
Register
Investors pass KYC; the provider attests it on Solana (SAS) and the registrar admits the wallet.
Record date
The bond mint is paused and every holder's position is snapshotted on-chain.
Entitlements
Per-holder amounts under 30E/360, rounded half-up, with resident and non-resident tax.
Escrow & payout
The issuer funds an escrow; payouts run in batches and withheld tax goes to a tax vault.
Report
ISO 20022 seev.031 / seev.036 files and a KASE-style notice are generated from chain state.
Everything around the engine, for every participant
Accounts and KYC
Investors sign up, link their own wallet by signature and apply with documents; the registrar's approval attests the wallet on-chain.
kase.kz data
Bond terms, schedules and market data from kase.kz: one-click import into a new series and a check of every record date against KASE.
Tenge on Solana
Settle in any registered token: test tenge stand-ins on devnet, Evo's KZTE ready for mainnet, or USDC. Each mint is verified on-chain.
Notifications
Holders hear about new actions, meetings and payments the moment they land on-chain, in the language they chose.
Admin panel
Users and organisations, series visibility, cash assets, system health and a searchable audit trail with CSV export.
Mainnet-ready
Same code, a network profile per deployment: demo access off and a typed confirmation for every write on mainnet.
The corporate actions a bond actually lives through
- INTR
Coupon
1,000 ₸ face, 10% paid semi-annually. Holders of 10, 25 and 65 bonds receive 500, 1,250 and 3,250 ₸.
- REDM
Redemption
At maturity holders receive the principal plus the final coupon; the bonds are burned and the series is closed.
- BMET
Bondholder meeting
Holders vote with snapshot weights to raise the coupon from 10% to 12%; quorum and majority are checked on-chain.
- MCAL
Early redemption
The issuer calls the bonds early; interest accrued over the 47 days since the last coupon is paid with the principal.
For issuers
- Issue a series from its terms in minutes
- Fund each coupon into escrow, the registrar does the rest
- Call bondholder meetings and change terms with a full audit trail
For investors
- Holdings, next coupon and every payout with its transaction
- Subscribe at par with delivery versus payment
- Vote in bondholder meetings from your own wallet
What is real, what is simulated
Running on Solana devnet: the program enforces it and every step is a transaction.
- Bond token, holder registry, record date, entitlements, coupon payment, redemption, burn and close, voting, terms change, on-chain eventsImplemented
Running on Solana devnet.
- Secondary settlementImplemented
Trades between registered investors settle on devnet through the Solana Foundation's DvP program; Qupon admits the escrow, refuses a record date while a trade is open and can return the bonds to the seller. Order matching and a trading venue are not included.
Stand-ins for outside systems, labelled wherever they appear. Nothing real leaves the demo.
- Cash legTest tokens
Real token transfers from an admin-managed registry: devnet USDC (Circle), tKZT and two tenge stand-ins (KZTE-dev, dKZT) with an investor faucet. Evo's KZTE is pre-registered for mainnet, off until its official mint is added.
- KYCReview simulated
Investors upload documents and a registrar decides by hand, with no licensed KYC vendor. Approval is real: a Solana Attestation Service attestation and the on-chain registration.
- ISO 20022 seev.031 / seev.036Delivery simulated
Generated from on-chain state; Swift delivery is replaced by downloadable files.
- KASERead only
Bond data is read from kase.kz and cached; the disclosure notice and package are generated automatically. Submission to KASE is simulated.
Designed, not built yet.
- ARDFM registration of a terms changeSimulated
Represented by a registrar signature step.
- MainnetReady, not deployed
Network profile, write confirmations and a dry-run deploy script are in place; everything runs on devnet.
- Multisig issuer approval (Squads)Roadmap
Planned.
Meeting thresholds (quorum 50%, approval ⅔ of votes cast) are series configuration, not a statement of Kazakh law.