For issuers
1. Get approved
Governance adds your wallet (ideally a Safe) as an issuer with RWATokenFactory.addIssuer. You also need KYC from a registrar if your tokens require it, since you will receive units yourself or hold them in escrow.
2. Prepare the asset
- Legal documents: the offering memorandum, the terms of the token and the legal link to the asset. Publish them at a stable URI (IPFS recommended). This becomes the token's
metadataURI. - Devices: register as a Meter or Device provider in AssetHub with a bond, then register the asset's meters or gateways. The devices bound to a token must be operated by the token's admin wallet.
3. Create the token
In the issuer console, choose:
| Decision | Guidance |
|---|---|
| Decimals | 0 if units are whole shares; the offering unit price is then the price per unit |
| Settlement token | An allowlisted stablecoin; fixed for the life of the token |
| KYC required | Fixed for the life of the token |
| Accredited only / jurisdictions | Match your offering exemption; you can change these later, and receivers are checked |
| Redemption price and notice | Price per whole token in settlement units; 0 disables redemption |
| Holder cap | Optional concentration limit |
| Maturity | Optional; after it, ordinary transfers stop and redemptions continue |
Governance then registers the token as a system contract (SystemRegistry.setSystemContract).
4. Raise capital
Create an offering: unit price, soft cap, hard cap and window. Investors subscribe in the settlement token. When it closes:
- Succeeded: withdraw the proceeds (one withdrawal, all funds). Investors claim their units.
- Failed: investors take refunds; nothing reaches you.
- You can cancel while it is open; investors are then refunded.
5. Operate
- Dividends: approve your token to pull the settlement token, then distribute. Keep a standing allowance if a keeper will trigger distributions for you.
- Redemptions: keep the redemption pool funded. Requests execute after the notice period only if the pool can pay.
- Data: submit readings for your devices regularly.
- Markets: create a Primcast DEX pair against your settlement token, then mark it as a venue with dividends enabled (
setVenue, thensetVenueDividends). Mark any lending market as a venue too.
6. Use your powers carefully
Freeze, forced transfer, burn, pause and term changes exist for legal and regulatory reasons. Every use is public and permanent in the event log. Announce term changes to holders before making them.
7. Maturity
Set the maturity at creation or later. Once it passes, anyone can call checkMaturity(). Keep the redemption pool funded so holders can redeem.