Skip to main content

Issuance: Primary Market Funding

Issuance is the first stage of the Bond Token lifecycle, where new Bond Tokens are created through a Primary Market funding process.


Overview

Bondi's Primary Market is the onchain issuance mechanism through which new Bond Tokens are created. Investors deposit stablecoins into audited, non-custodial funding contracts (see the Security Audit Report), receive FpUSD receipts as a synthetic deposit record, and—upon successful funding—Bond Tokens are minted and distributed proportionally. The system uses multichain infrastructure for global coordination.


For details of early‑participant rewards during the funding phase, see our blog post.


v3 supports multiple funding rounds for the same bond series: a subsequent round reuses the existing Bond Token while deploying its own Funding and Handler contracts and sharing the same Distribution.

Primary Market Flow Diagram

InvestorInvestor
Funding ContractFunding
AdminAdmin
Segregated AccountSeg. Account
Distribution ContractDistribution
RelayerRelayer
Deposit stablecoins (KYC verified)
Mint FpUSD receipts (1:1)
Wait for global funding target
Track global funding progress (multichain pool)
Target reached
extractFunds (deduct platform fees)
Transfer net capital for bond purchase
Execute bond purchase (off-chain)
emitBonds (mint Bond Tokens to Distribution)
claimBondsForUser
Transfer Bond Tokens (burn FpUSD, pro-rata)
Target not reached
Refund stablecoins (burn FpUSD)
Optional — self-claim
claimBonds (self-claim)
Transfer Bond Tokens (pro-rata)

Funding Phase

Receipt-Based Investment System

Bondi keeps track of the investment process through the FpUSD receipt system, achieving O(1) distribution complexity and efficient scaling to thousands of investors. When investors deposit USD stablecoin, they immediately receive FpUSD receipts at a 1:1 ratio. These receipts serve as proof of participation and entitle holders to claim Bond Tokens once the funding target is reached. The receipt system enables instant settlement, reduces gas costs, and provides a clean separation between investment tracking and bond token distribution.


For comprehensive details on how FpUSD tokens work, including minting during investment, burning during claims, and the exchange rate system, see the Funding Participation USD (FpUSD) documentation. For a worked example of funding math, decimals, and distribution exchange rate, see the FpUSD Real‑World Example.

Multichain Architecture

Bondi's multichain infrastructure enables global funding rounds across multiple blockchain networks without traditional bridge risks. Users can participate from their preferred blockchain while contributing to unified investment pools. Deposits on any supported network are coordinated into a single global funding target.


Real-time Monitoring: Automated systems monitor funding progress across all supported chains
Cross-Chain Reconciliation: Investments are reconciled across chains every 15 seconds
Unified Accounting: All investments contribute to the same funding pool regardless of originating chain


This architecture provides several key benefits: users avoid bridging fees and delays, the platform can aggregate liquidity from multiple ecosystems, and Bondi maintains full control over the investment process without relying on third‑party bridge protocols. For current network support and deployed contract addresses, see Proof of Reserve & Deployed Addresses.

Core Funding Parameters

Funding Phase is governed by specific parameters designed to ensure successful bond acquisition while maintaining fairness and accessibility for all participants.

Target Funding Amount

The total capital required for each bond offering, representing the amount needed to purchase the underlying bonds in traditional markets. Bondi's inaugural funding phase establishes a $200,000 target, sized to balance accessibility with meaningful market impact.

Funding Period Duration

A predetermined timeframe within which the target funding must be achieved to proceed with bond acquisition. The inaugural offering features a 30-day funding window, providing sufficient time for community participation while maintaining momentum and urgency.

Whale Participant Threshold

A minimum contribution level that qualifies investors for enhanced benefits and recognition within the platform ecosystem. Contributors meeting the $5,000 whale threshold receive the Whale NFT.

Minimum Investment Requirement

The smallest permissible investment amount, designed to maximize accessibility while maintaining operational efficiency. The $100 minimum investment ensures that retail investors can participate meaningfully in previously inaccessible emerging market bonds.

Pricing Mechanisms

Clean vs. Dirty Price Execution

Bond acquisitions are executed at the dirty price, which incorporates both the clean price and accrued interest from the last coupon payment to the settlement date. This market-standard approach ensures accurate pricing while the target amount calculation incorporates:


Base bond cost (clean price × quantity)
Accrued interest buffer collected upfront
Platform fees deducted from raised capital at extraction (service fee + Bondi commission, configured onchain in basis points)


Any excess accrued interest beyond actual requirements is distributed to token holders with their first coupon payment.


Fee Extraction & Bond Emission

Once a funding round reaches its target, Bond Tokens are created through a deliberate multi-step process, separating fund extraction, bond emission, optional incentive finalization, and distribution start from the claiming phase.



Step 1 — Fund Extraction
The platform calls Handler.extractFunds(). Platform fees — a service fee and a Bondi commission, both configured onchain in basis points — are calculated from the raised capital and split equally among the configured fee receiver addresses. The remaining capital is transferred to the regulated broker for bond purchase.



Step 2 — Bond Emission
After the broker executes the purchase in traditional markets (typically 3–5 business days later), the platform calls Handler.emitBonds() with the bond's clean price and accrued interest. The Handler computes the dirty price (clean + accrued) and mints Bond Token supply against the net, post-fee capital. Bonds are minted directly to the Distribution contract.



Step 3 — Incentive Finalization (if applicable)
Some rounds might be incentivised for Primary Market participants with an incentive token. For such rounds, the Distribution Safe deposits incentive tokens via depositIncentiveForRoundByTreasury(roundId, amount), then the orchestrator backend finalizes the Merkle root via finalizeIncentiveForRound(roundId, root, blockNumber). This must complete before distribution can begin.



Step 4 — Start Distribution
The platform calls Handler.startDistribution(), which invokes Distribution.beginDistributionForRound(roundId, initialBondSupply) and fixes the FpUSD → Bond Token exchange rate for the round.



Fee parameters (serviceFeeBps, bondiCommissionBps) are onchain state, set at Funding contract deployment and adjustable by the admin before a round begins. At least one fee receiver address is always required.

Refund Mechanism

Funds deposited into Bondi's smart contracts remain non-custodial until the target amount across all chains is reached. If the target is not met by the end of the funding period, refunds are executed via refundInvestors(uint256 amountOfInvestorsToRefund_); no individual withdrawal is required. A manual withdraw() path remains available for edge cases.


Both refund mechanisms follow the same principle: FpUSD tokens are burned before returning the underlying USD stablecoin. This ensures the receipt system maintains proper accounting and prevents any double-spending scenarios. For detailed information on how FpUSD burning works, see the FpUSD Token Mechanics section.

How to Call refundInvestors

To call the refund function, follow these steps:


1. Retrieve Total Investor Count

Use the totalInvestorsAmount() function to retrieve the total number of investors. This function can be called by anyone and returns the total count of investors in the funding phase.


Example:
uint256 totalInvestors = fundingContract.totalInvestorsAmount();

2. Execute Refund Function

Call the refundInvestors() function, providing the total number of investors as the parameter. The function will burn each investor's FpUSD tokens before returning their USD stablecoin deposits.


Example:
fundingContract.refundInvestors(totalInvestors);

User funds are held in a non-custodial manner until the target amount is reached. The refund process maintains the integrity of the receipt system by ensuring FpUSD tokens are properly burned before any funds are returned.


Investment Process Flow

Verification and Onboarding

1. Identity Verification: Complete KYC procedures through the User Dashboard to gain access to funding opportunities.


2. Wallet Whitelisting: Verified wallets receive permanent authorization for current and future funding phase participation. This authorization remains active until explicitly revoked by Bondi for compliance or security reasons.


3. Chain Selection: Choose your preferred blockchain for participation.


4. Investment Selection: Choose from available funding opportunities with detailed risk assessments and projected returns.

Funding Participation

5. Capital Commitment: Deposit stablecoins into selected funding contracts within the specified timeframe.


6. Loyalty Rewards: Early primary market participants receive NFT rewards based on their investment amount.


7. Cross-Chain Processing: Your investment is mirrored across all supported chains for unified tracking.


8. Progress Monitoring: Track funding progress through real-time dashboard updates and community metrics.


9. Automatic Processing: Upon successful funding, bonds are acquired through the Cell's regulated custodian broker, appointed by Ensuro Re Ltd.

Token Distribution

10. Bond Token Distribution: Once distribution has started, Bondi's relayer automatically calls claimBondsForUser(roundId, user) to exchange each participant's FpUSD receipts for their proportional Bond Token allocation — no action required. Holders can self-claim at any time via claimBonds(roundId) if needed.


11. Emission Round Finalization: the Admin Safe calls finalizeEmissionRound(roundId, [blacklistedAddresses]) to close the round. This burns any remaining vault Bond Token dust and prepares the contract for the proceeds distribution.


Regulatory Compliance and Security

The issuance process maintains integration with traditional financial infrastructure through:


Regulated custodian partnership for secure bond acquisition under the oversight of Ensuro Re Ltd.
Automated compliance monitoring throughout the funding process
Non-custodial smart contracts audited for security
Transparent onchain documentation via ERC‑1643


For comprehensive security details and audit results, see our Security Audit Report.