Skip to main content

🧡 Create a valid Issuer on ERIR, and set's up the frist project

Welcome to the complete guide for the "Create a valid Issuer on ERIR and set's up the first project" workflow for the General TokenCity API, and Blockchain API.

🌟 Objective: Secure and automated creation a valid Issuer, and set's up the first project into the Token City ecosystem.


πŸ“š OpenAPI Documentation​


✨ Workflow Summary​

This workflow automates the process of creating a valid Issuer on ERIR and set's up the issuance with the General TokenCity API:

  1. πŸ”Ή Create an Issuer with required documents.
  2. πŸ”Ή Create an Issuance.
  3. πŸ”Ή Generate EIP712 typed data.
  4. πŸ”Ή Sign EIP712 typed data.
  5. πŸ”Ή Deploy token.
  6. πŸ”Ή Sync token deployment data with issuance.

πŸ“‹ Workflow Steps Table​

StepAPI OperationMethodParametersOutputsDescription
Create an IssuerPOST /v2/proxy/erir/issuer (General API)-Required DocumentsIssuerDataCreates a valid issuer on ERIR
Create an IssuancePOST /v2/proxy/erir/issuance (General API)-IssuanceDataIssuanceSpecificDataCreate and sync issuance on ERIR
Generate typed data for token deployPOST /factory/erc3643/typed-data (Blockchain API)-Token Deployment DataStructured EIP712 TypedDataGenerates the necessary typed data for token deployment
Sign the previously created typed dataPOST /accounts/:accountId/signEip712 (Blockchain API)-Structured EIP712 TypedDataEIP712 SignatureSigns the previously generated structured EIP712 typed data
Deploy TokenPOST /factory/erc3643 (Blockchain API)-TokenDeploymentData + EIP712 SignaturetxUUID, TokenUUID, tokenAddressSubmits the deployment transaction to blockchain, check webhook TX_MINED for confirmation
Sync TokenDataDeployment with previously created issuance on ERIRPOST /v2/proxy/erir/issuance/:id/deploy (General API)-IssuanceID, tokenId, contractAddressDeployment operation dataSubmits the deployment transaction to blockchain, check webhook tX_MINED for confirmation

🎨 Workflow Visualizations​

🌊 Mermaid Sequence Diagram​


πŸ“ Step-by-Step Implementation​

Step 1: Create an Issuer on ERIR​

Register your organization as a valid issuer on the ERIR (European Regulated Identity Registry).

Endpoint: POST /v2/proxy/erir/issuer (General API)

Request Body (multipart/form-data):

name: "Green Energy Solutions S.L."
email: "[email protected]"
client_tenant_id: "tc_tenant_spain_001"
kyc_status: "PENDING"
type: "COMPANY"
wallet_address: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1"

user_data[phone]: "+34912345678"
user_data[document_type]: "CIF"
user_data[document_number]: "B87654321"
user_data[document_expiration_date]: "2030-12-31"
user_data[address]: "Calle de AlcalΓ‘ 45"
user_data[country]: "ES"
user_data[city]: "Madrid"
user_data[postal_code]: "28014"

issuer_data[landing_page_url]: "https://greenenergysolutions.es"
issuer_data[about]: "Renewable energy company specializing in solar and wind projects across Spain"
issuer_data[social_form]: "Sociedad Limitada"
issuer_data[fiscal_address]: "Calle de AlcalΓ‘ 45, 28014 Madrid, EspaΓ±a"
issuer_data[company_size]: "50-100"
issuer_data[cnae]: "3511"
issuer_data[sector]: "Renewable Energy"
issuer_data[web_address]: "https://greenenergysolutions.es"
issuer_data[start_date]: "2015-03-15"
issuer_data[end_date]: ""
issuer_data[soon]: "false"
issuer_data[private]: "false"

LOGO: [file: company-logo.png]
CONTRACT: [file: incorporation-certificate.pdf]

Request Parameters:

  • name: The name of the issuer (company or person)
  • email: Contact email address for the issuer
  • client_tenant_id: Identifier for the client tenant
  • kyc_status: KYC status (PENDING, VALIDATED, REJECTED)
  • type: Type of issuer - COMPANY or PERSON
  • wallet_address: Blockchain wallet address of the issuer
  • user_data[phone]: Contact phone number with country code
  • user_data[document_type]: Type of identification document (CIF, NIF, NIE, PASSPORT)
  • user_data[document_number]: Document identification number
  • user_data[document_expiration_date]: Expiration date of the document (YYYY-MM-DD)
  • user_data[address]: Street address
  • user_data[country]: ISO country code (ES, FR, DE, etc.)
  • user_data[city]: City name
  • user_data[postal_code]: Postal/ZIP code
  • issuer_data[landing_page_url]: URL for the issuer's landing page
  • issuer_data[about]: Description about the issuer
  • issuer_data[social_form]: Legal form (S.L., S.A., etc.)
  • issuer_data[fiscal_address]: Complete fiscal/tax address
  • issuer_data[company_size]: Number of employees range
  • issuer_data[cnae]: CNAE classification code (Spanish economic activity)
  • issuer_data[sector]: Business sector/industry
  • issuer_data[web_address]: Company website URL
  • issuer_data[start_date]: Company start date (YYYY-MM-DD)
  • issuer_data[end_date]: Company end date if applicable
  • issuer_data[soon]: Indicates if coming soon (true/false)
  • issuer_data[private]: Indicates if private issuer (true/false)
  • LOGO: Company logo file (image format)
  • CONTRACT: Contract/incorporation certificate file (PDF)

Response:

{
"id": 54,
"user_id": 96,
"data": {
"landing_page_url": "https://greenenergysolutions.es",
"about": "{\"en\": \"<p>Green Energy Solutions S.L. is a leading renewable energy company in Spain, specializing in solar and wind projects. We are committed to sustainable energy development and environmental protection.</p>\", \"es\": \"<p>Green Energy Solutions S.L. es una empresa lΓ­der en energΓ­as renovables en EspaΓ±a, especializada en proyectos solares y eΓ³licos. Estamos comprometidos con el desarrollo energΓ©tico sostenible y la protecciΓ³n ambiental.</p>\"}",
"social_form": "SL",
"fiscal_address": "Calle de AlcalΓ‘ 45, 28014 Madrid",
"company_size": "50-100",
"cnae": "3511",
"sector": "Renewable Energy",
"web_address": "https://greenenergysolutions.es",
"start_date": "15/03/2015",
"end_date": "",
"soon": "false",
"private": "false"
},
"name": "Green Energy Solutions S.L.",
"status": null,
"created_time": "2025-11-10 10:30:20",
"updated_time": "2025-11-10 10:30:20",
"user": {
"id": 96,
"data": {
"phone": "+34912345678",
"document_type": "CIF",
"document_number": "B87654321",
"document_expiration_date": "31/12/2030",
"address": "Calle de AlcalΓ‘ 45",
"country": "ES",
"city": "Madrid",
"postal_code": "28014"
},
"kyc_status": "PENDING",
"type": "COMPANY",
"role": "ISSUER",
"email": "[email protected]",
"status": "PENDING",
"created_time": "2025-11-10 10:30:20",
"updated_time": "2025-11-10 10:30:20"
},
"userDocuments": [
{
"id": 196,
"user_id": 96,
"document_type": "CONTRACT",
"filepath": "../resources/18/erir/sync/issuer/54/1752678500_incorporation-certificate.pdf",
"filename": "incorporation-certificate.pdf",
"created_time": "2025-11-10 10:30:20",
"updated_time": "2025-11-10 10:30:20"
}
],
"validation": {
"id": 321,
"user_id": null,
"entity_id": 54,
"entity_type": "ISSUER",
"text": null,
"status": "PENDING",
"created_time": "2025-11-10 10:30:20",
"updated_time": "2025-11-10 10:30:20"
},
"notification": {
"id": 532,
"item_id": 54,
"asset_id": null,
"title": {
"en": "Issuer registration",
"es": "Alta de Emisor"
},
"body": {
"en": "The issuer Green Energy Solutions S.L. has been registered",
"es": "Se ha dado de alta el emisor Green Energy Solutions S.L."
},
"message": null,
"data": null,
"type": "ISSUER",
"status": "PENDING",
"archived": 0,
"requires_validation": 1,
"resolved_at": null,
"created_time": "2025-11-10 10:30:20",
"updated_time": "2025-11-10 10:30:20"
}
}

Response Fields:

  • id: Issuer ID in ERIR system
  • user_id: Associated user ID
  • name: Issuer name
  • data: Issuer-specific information (company details)
  • user: Complete user object with KYC status and personal data
  • user.kyc_status: KYC validation status (PENDING, SUCCESS, FAILED)
  • user.type: User type (COMPANY or PERSON)
  • user.role: User role (ISSUER)
  • userDocuments: Array of uploaded documents
  • validation: Validation workflow information
  • validation.status: Current validation status (PENDING, APPROVED, REJECTED)
  • notification: System notification about issuer registration

Note: ERIR will review the documents and KYC information. Verification typically takes 3-5 business days. The validation.status will change from PENDING to APPROVED once approved, and user.kyc_status will change to SUCCESS.


Step 2: Create an Issuance​

Once the issuer is verified, create an issuance (security offering project).

Endpoint: POST /v2/proxy/erir/issuance (General API)

Request Body (multipart/form-data):

issuer_id: "54"
name: "Green Energy Bond 2025"
symbol: "GEB25"
network: "80001"
type: "security"
isin: "ES0205052025"

data[decimals]: "18"
data[product_type]: "Bonds"
data[price]: "1000"
data[crypto_payment]: "1"
data[yield]: "4.5"
data[years]: "5"
data[face_value]: "1000"
data[maturity_value]: "1225"
data[issuance_date]: "Mon Jan 15 2026 09:00:00 GMT+0000 (Western European Standard Time)"
data[issuance_end_date]: "Wed Dec 31 2025 23:59:59 GMT+0000 (Western European Standard Time)"
data[soft_cap]: "500000"
data[max_supply]: "10000000"

WHITEPAPER: [file: green-energy-bond-whitepaper.pdf]
CONTRACT: [file: bond-terms-and-conditions.pdf]

Request Parameters:

  • issuer_id: The issuer ID from Step 1 (must be validated)
  • name: The full name of the issuance/token
  • symbol: Trading symbol for the token (typically 3-6 characters)
  • network: Blockchain network ID (80001 for Mumbai testnet, 137 for Polygon mainnet)
  • type: Type of issuance (security, utility, etc.)
  • isin: International Securities Identification Number
  • data[decimals]: Number of decimal places for the token (typically 18)
  • data[product_type]: Product type (Bonds, Equity, Fund, etc.)
  • data[price]: Token price in base currency
  • data[crypto_payment]: Accept crypto payments (0 = no, 1 = yes)
  • data[yield]: Expected annual yield/return percentage
  • data[years]: Duration/maturity in years
  • data[face_value]: Nominal/face value per token
  • data[maturity_value]: Value at maturity per token
  • data[issuance_date]: Start date of the issuance period
  • data[issuance_end_date]: End date of the issuance period
  • data[soft_cap]: Minimum funding goal
  • data[max_supply]: Maximum token supply
  • WHITEPAPER: Whitepaper document file (PDF)
  • CONTRACT: Contract/terms document file (PDF)

Response:

{
"id": 37,
"data": {
"decimals": "18",
"product_type": "Bonds",
"price": "1000",
"crypto_payment": "1",
"yield": "4.5",
"years": "5",
"face_value": "1000",
"maturity_value": "1225",
"issuance_date": "Mon Jan 15 2026 09:00:00 GMT+0000 (Western European Standard Time)",
"issuance_end_date": "Wed Dec 31 2025 23:59:59 GMT+0000 (Western European Standard Time)",
"soft_cap": "500000",
"max_supply": "10000000"
},
"sc_address": null,
"manager_address": null,
"type": "security",
"token_UUID": null,
"token_name": "Green Energy Bond 2025",
"token_symbol": "GEB25",
"token_image": null,
"token_network": 80001,
"isin": "ES0205052025",
"status": null,
"created_time": "2025-11-10 11:00:41",
"updated_time": "2025-11-10 11:00:41",
"documents": [
{
"id": 97,
"asset_id": 37,
"name": "bond-terms-and-conditions.pdf",
"type": "CONTRACT",
"description": null,
"contents": null,
"location": "../resources/18/erir/sync/asset/37/1752680262_bond-terms.pdf",
"created_time": "2025-11-10 11:00:42",
"updated_time": "2025-11-10 11:00:42"
},
{
"id": 96,
"asset_id": 37,
"name": "green-energy-bond-whitepaper.pdf",
"type": "WHITEPAPER",
"description": null,
"contents": null,
"location": "../resources/18/erir/sync/asset/37/1752680262_whitepaper.pdf",
"created_time": "2025-11-10 11:00:42",
"updated_time": "2025-11-10 11:00:42"
}
],
"validation": {
"id": 324,
"user_id": null,
"entity_id": 37,
"entity_type": "TOKEN",
"text": null,
"status": "PENDING",
"created_time": "2025-11-10 11:00:41",
"updated_time": "2025-11-10 11:00:41"
}
}

Response Fields:

  • id: Issuance ID in ERIR system
  • token_name: Full name of the token
  • token_symbol: Trading symbol
  • token_network: Blockchain network ID
  • isin: International Securities Identification Number
  • type: Issuance type (security)
  • data: Complete issuance parameters
  • sc_address: Smart contract address (null until deployed)
  • token_UUID: Token UUID from blockchain API (null until deployed)
  • documents: Array of uploaded documents (whitepaper, contract)
  • validation: Validation workflow information
  • validation.status: Current validation status (PENDING, APPROVED, REJECTED)
  • status: Overall issuance status

Note: The issuance is created in draft status. ERIR will review the whitepaper and contract documents. Once validation.status changes to APPROVED, you can proceed to deploy the token (Steps 3-5).


Step 3: Generate EIP712 Typed Data for Token Deployment​

Generate the structured data needed to deploy the ERC-3643 token on blockchain.

Endpoint: POST /factory/erc3643/typed-data (Blockchain API)

Request Body:

{
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000
}

Request Parameters:

  • name: Token's name (must match issuance from Step 2)
  • symbol: Token's symbol (must match issuance from Step 2)
  • decimals: Number of decimal places (typically 18 for divisible tokens, 0 for non-divisible)
  • erir: Address of the ERIR's wallet
  • issuer: Address of the issuer's wallet (must be authorized)
  • operator: Address of the operator's wallet (can be same as issuer)
  • maxSupply: Maximum amount of tokens that can be issued

Response:

{
"domain": {
"name": "OwnerMulticallDeployer",
"version": "1.0.0",
"chainId": 80001,
"verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"
},
"types": {
"EIP712Domain": [
{ "name": "name", "type": "string" },
{ "name": "version", "type": "string" },
{ "name": "chainId", "type": "uint256" },
{ "name": "verifyingContract", "type": "address" }
],
"DeployToken": [
{ "name": "salt", "type": "string" },
{ "name": "name", "type": "string" },
{ "name": "symbol", "type": "string" },
{ "name": "decimals", "type": "uint8" },
{ "name": "_erir", "type": "address" },
{ "name": "issuer", "type": "address" },
{ "name": "operator", "type": "address" },
{ "name": "maxSupply", "type": "uint256" }
]
},
"primaryType": "DeployToken",
"message": {
"salt": "ERC3643-GEB25",
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"_erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000000000000000000000
}
}

Response Fields:

  • domain: EIP712 domain separator with contract information
  • types: Type definitions for the structured data
  • primaryType: The primary type being signed (DeployToken)
  • message: The actual data to be signed, including a generated salt for unique contract address

Step 4: Sign the EIP712 Typed Data​

Sign the typed data using the issuer's authorized custodian account (Venly or Onyze).

Endpoint: POST /accounts/{accountId}/signEip712 (Blockchain API)

Path Parameters:

  • accountId: Wallet address of the issuer's custodian account

Request Body (Venly):

{
"passcode": 123456,
"eip712Object": {
"domain": {
"name": "OwnerMulticallDeployer",
"version": "1.0.0",
"chainId": 80001,
"verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC"
},
"types": {
"EIP712Domain": [
{ "name": "name", "type": "string" },
{ "name": "version", "type": "string" },
{ "name": "chainId", "type": "uint256" },
{ "name": "verifyingContract", "type": "address" }
],
"DeployToken": [
{ "name": "salt", "type": "string" },
{ "name": "name", "type": "string" },
{ "name": "symbol", "type": "string" },
{ "name": "decimals", "type": "uint8" },
{ "name": "_erir", "type": "address" },
{ "name": "issuer", "type": "address" },
{ "name": "operator", "type": "address" },
{ "name": "maxSupply", "type": "uint256" }
]
},
"primaryType": "DeployToken",
"message": {
"salt": "ERC3643-GEB25",
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"_erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000000000000000000000
}
}
}

Request Parameters:

  • passcode: Secret verification code for the custodian wallet (Venly)
  • eip712Object: Complete typed data object from Step 3

Response:

{
"eip712Signature": "0xea8a0fb12ebadd4574b9fc1677ebfbede47f51d6afe352c625a4032b5f8e190d6ea64ee83e4eaf5d380ec1505d2f35cdcf80f38e66d677eea1ed45a3158c285c1b"
}

Response Fields:

  • eip712Signature: Hexadecimal signature string to be used in Step 5

Step 5: Deploy the ERC-3643 Token​

Deploy the token contract to the blockchain with the signed data.

Endpoint: POST /factory/erc3643 (Blockchain API)

Request Body:

{
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000,
"modules": [],
"signature": "0xea8a0fb12ebadd4574b9fc1677ebfbede47f51d6afe352c625a4032b5f8e190d6ea64ee83e4eaf5d380ec1505d2f35cdcf80f38e66d677eea1ed45a3158c285c1b"
}

Request Parameters:

  • name: Token's name (same as Step 3)
  • symbol: Token's symbol (same as Step 3)
  • decimals: Number of decimals (same as Step 3)
  • erir: ERIR wallet address (same as Step 3)
  • issuer: Issuer wallet address (same as Step 3)
  • operator: Operator wallet address (same as Step 3)
  • maxSupply: Maximum token supply (same as Step 3)
  • modules: Optional array of modules (e.g., ["Untransferable"] for non-transferable tokens)
  • signature: EIP712 signature from Step 4

Response:

{
"result": {
"id": "6585b5fb-8de8-452d-aa96-8e5de0f1ca09",
"contractId": "75ec20f7-3de4-4fd1-bc7d-d6475f82d57c",
"message": "Deployment Successful",
"contractAddress": "0xC593e77451cE7009209Ea4e7F62d64F2355D71ff"
}
}

Response Fields:

  • id: UUID identifier of the deployment transaction
  • contractId: UUID of the deployed token contract (use this for Step 6)
  • message: Status message
  • contractAddress: Blockchain address of the deployed token contract (use this for Step 6)

Note: The deployment is asynchronous. Subscribe to webhooks to receive TX_MINED notification when the deployment is confirmed on the blockchain (typically 2-5 minutes).


Step 6: Sync Deployment with ERIR Issuance​

Link the deployed blockchain token with your ERIR issuance record.

Endpoint: POST /v2/proxy/erir/issuance/{id}/deploy (General API)

Path Parameters:

  • id: The issuance ID from Step 2 (e.g., 37)

Request Body:

{
"uuid": "75ec20f7-3de4-4fd1-bc7d-d6475f82d57c",
"address": "0xC593e77451cE7009209Ea4e7F62d64F2355D71ff"
}

Request Parameters:

  • uuid: The contractId (UUID) from Step 5 deployment response
  • address: The contractAddress (hexadecimal) from Step 5 deployment response

Response:

The response format will typically be a JSON object containing the result of the deployment operation. The exact structure of the response may vary based on the implementation but will generally include success status and relevant data pertaining to the issuance deployment.

{
"success": true,
"message": "Token deployment successfully synced with ERIR issuance",
"issuanceId": 37,
"tokenUUID": "75ec20f7-3de4-4fd1-bc7d-d6475f82d57c",
"contractAddress": "0xC593e77451cE7009209Ea4e7F62d64F2355D71ff",
"network": 80001,
"syncedAt": "2025-11-10T12:00:00.000Z"
}

Important Notes:

  • Wait for the TX_MINED webhook from Step 5 before calling this endpoint
  • This step links the blockchain deployment with the ERIR issuance record
  • Once synced, the issuance status in ERIR will be updated to reflect the deployment
  • The uuid must match exactly the contractId from the deployment response
  • The address must match exactly the contractAddress from the deployment response

πŸ’‘ Key Concepts​

What is ERIR?​

ERIR (European Regulated Identity Registry) is a compliance framework that:

  • Verifies issuer legitimacy and regulatory compliance
  • Maintains a registry of authorized token issuers
  • Ensures securities offerings meet regulatory requirements
  • Provides investor protection through verified issuers


πŸ†˜ Troubleshooting​

Issuer Verification Rejected​

If issuer verification fails:

  • βœ“ Ensure all documents are officially certified and current
  • βœ“ Verify company registration is active and valid
  • βœ“ Check that legal address matches registration documents
  • βœ“ Ensure compliance certificates are from recognized authorities
  • βœ“ Director identification must be government-issued
  • βœ“ Contact ERIR support for specific rejection reasons

Issuance Creation Failed​

If issuance creation fails:

  • βœ“ Issuer must be in "verified" status
  • βœ“ All required fields must be provided
  • βœ“ Token symbol must be unique
  • βœ“ Prospectus URL must be accessible
  • βœ“ Jurisdiction codes must be valid ISO country codes
  • βœ“ Asset type must match offering structure

Token Deployment Failed​

If token deployment fails:

  • βœ“ Signature must match typed data exactly
  • βœ“ All agent addresses must be valid Ethereum addresses
  • βœ“ Compliance modules must be pre-deployed
  • βœ“ OnchainID must exist and be registered
  • βœ“ Sufficient gas must be available
  • βœ“ Signer must have deployment permissions

Sync with ERIR Failed​

If deployment sync fails:

  • βœ“ Token must be successfully deployed first
  • βœ“ Contract address must match deployment response
  • βœ“ Network must be supported by ERIR
  • βœ“ Issuance must be in "approved" status
  • βœ“ Wait for TX_MINED confirmation before syncing

πŸ“š Additional Resources​


πŸ’Ό Use Case Example​

Corporate Green Bond Issuance​

Green Energy Solutions S.L. wants to issue a €10M green bond token for renewable energy projects.

Step 1 - Register as Issuer:

name: "Green Energy Solutions S.L."
email: "[email protected]"
type: "COMPANY"
wallet_address: "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1"
user_data[document_type]: "CIF"
user_data[document_number]: "B87654321"
user_data[country]: "ES"
issuer_data[sector]: "Renewable Energy"
issuer_data[company_size]: "50-100"

Result: Issuer created with ID 54, status PENDING validation

Step 2 - Create Issuance:

issuer_id: "54"
name: "Green Energy Bond 2025"
symbol: "GEB25"
network: "80001"
type: "security"
isin: "ES0205052025"
data[product_type]: "Bonds"
data[price]: "1000"
data[yield]: "4.5"
data[years]: "5"
data[face_value]: "1000"
data[max_supply]: "10000000"

Result: Issuance created with ID 37, validation status PENDING

Step 3 - Generate EIP712 Typed Data:

{
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000
}

Result: Typed data generated with salt ERC3643-GEB25

Step 4 - Sign with Issuer Account:

{
"passcode": 123456,
"eip712Object": {
/* typed data from Step 3 */
}
}

Result: Signature 0xea8a0fb12ebadd4574b9fc1677ebfbede47f51d6afe352c625a4032b5f8e190d...

Step 5 - Deploy ERC-3643 Token:

{
"name": "Green Energy Bond 2025",
"symbol": "GEB25",
"decimals": 18,
"erir": "0x0290FB167208Af455bB137780163b7B7a9a10C16",
"issuer": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"operator": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb1",
"maxSupply": 10000000,
"modules": [],
"signature": "0xea8a0fb12ebadd4574b9fc1677ebfbede47f51d6afe352c625a4032b5f8e190d..."
}

Result: Token deployed with contractId: 75ec20f7-3de4-4fd1-bc7d-d6475f82d57c, contractAddress: 0xC593e77451cE7009209Ea4e7F62d64F2355D71ff

Step 6 - Sync with ERIR:

{
"uuid": "75ec20f7-3de4-4fd1-bc7d-d6475f82d57c",
"address": "0xC593e77451cE7009209Ea4e7F62d64F2355D71ff"
}

Result: Deployment successfully synced with ERIR issuance ID 37

Final Outcome:

  • €10M green bond tokenized on Polygon Mumbai testnet
  • Compliant with ERIR regulations
  • Available to institutional and qualified investors
  • 4.5% annual yield, 5-year maturity
  • Token address: 0xC593e77451cE7009209Ea4e7F62d64F2355D71ff
  • Ready to accept investments and manage lifecycle