ICR Program
HomeProjectsCreditsTransactionsInsights
  • Welcome to the ICR program documentation
    • About ICR
      • ICR Team
        • Gudmundur Sigbergsson
        • Olafur "Oli" Torfason
        • Bjorn H. Helgason
        • Thordur "Thor" Agustsson
        • Alondra Silva Munoz
        • Dr. Rannveig Anna Guicharnaud
        • Robert Huldarsson
        • Ria Antil
        • Alvaro Vallejo Rendón
      • ICR's Mission Statement
      • ICR's Context
      • Leadership
        • Leadership and Commitment
        • Policies
          • Quality policy
          • KYC/KYB Compliance Policy
          • Grievance policy
          • Anti-Corruption Compliance Policy
          • Impartiality policy
          • ICR Privacy and Cybersecurity Policy
          • Diversity, Equality, and Inclusion policy
        • Organizational Roles, Responsibilities, and Authorities
          • Leadership
            • Chief Executive Officer (CEO)
            • Chief Operating Officer (COO)
            • Chief Technology Officer (CTO)
            • Chief Product Officer (CPO)
            • Chief Science Officer (CSO)
            • Chief Marketing Officer (CMO)
            • ICR Board
              • Members
                • Daníel F. Jónsson
                • Kristján I. Mikaelsson
              • ICR Board Procedures v3.0
            • ICR Program Advisory Panel
              • Members
              • ICR Program Advisory Panel 3.0
          • ICR Program Advisory Panel
            • Amit Sharma
            • Geetha Gopal
            • Javier Castro
          • Forums
            • ICR Project Proponent and Developer forum
              • ICR Project Proponent and Developer Forum Terms of Reference
            • ICR Stakeholder forum
              • ICR Stakeholder Forum - Terms of Reference
            • ICR VVB forum
              • ICR VVB Forum Terms of Reference
            • ICR Forum Guidelines
            • Forum Application
          • Committees
            • Appeals Committee
              • ICR Appeals Committee Terms of Reference
      • Articles of Association for International Carbon Registry ehf.
  • Fundamentals
    • Climate change
    • Kyoto protocol
    • Paris Agreement
      • Nationally Determined Contributions
      • Carbon Markets Under the Paris Agreement
    • Voluntary Carbon Markets
    • Compensation
      • ÍST 92
      • ISO 14068-1:2023
  • ICR Program
    • Overview
    • Fundamentals
      • ISO
        • ISO 14064
          • ISO 14064-1
          • ISO 14064-2
          • ISO 14064-3
          • ISO 14068-1
      • Project Origination
      • Additionality
      • ICR Registration Process
      • Validation and verification
        • Accreditation
    • Definitions
      • ICR Definitions v3.1
        • Version history
          • ICR Definitions v3.0
          • ICR Definitions v2.0
          • ICR Definitions v1.0
    • Methodology Development
      • Criteria
        • ICR Methodology Requirements v3.0
        • Version history
          • ICR Methodology Requirements 2.0
          • ICR Methodology Requirements 1.0
      • Procedural
        • ICR Methodology Approval Process v3.0
        • Version history
          • ICR Methodology Approval Process v2.0
          • ICR Methodology Approval Process v1.0
      • ICR Methodologies
        • Under development
          • M-ICR001
          • M-ICR002
          • M-ICR003
          • M-ICR004
          • M-ICR005:
          • M-ICR006
          • M-ICR007
          • M-ICR009
          • M-ICR011
        • Approved ICR Methodologies
      • Templates
        • Concept note
          • Older versions
        • Methodology description
          • Older versions
        • Methodology summary
          • Older versions
    • Project development
      • Criteria
        • ICR Requirement Document v6.0
          • Version history
            • ICR Requirement Document v5.0
            • ICR Requirement Document v4.0
      • Procedural
        • ICR Process Requirements v6.1
          • Version history
            • ICR Process Requirements v6.0
            • ICR Process Requirements v5.0
            • ICR Process Requirements v4.0 Final
            • ICR Process Requirements v3.0
        • ICR Article 6 2 procedures v1.0
      • Templates
        • Project concept description (PCD)
          • Older versions
        • Project design description (PDD)
          • Older versions
        • Monitoring report (MR)
          • Older versions
        • Project design description and monitoring report
          • Older versions
        • Letter of attestation
        • Non-performance report
          • Older versions
        • Non-permanence event report
          • Older versions
        • Non-permanence risk assessment
        • Non-performance risk assessment
      • Tools
        • ICR Tool for Environmental and Socio-economic Safeguards and Sustainable Development
      • Approved methodologies, modules and tools
        • ICR approved methodologies, modules and tools v4.0
    • Validation and verification
      • Validation and Verification Bodies
      • Criteria
        • ICR validation and verification specifications v2.0
          • Version history
            • ICR validation and verification specifications v1.0
      • Templates
        • Methodology validation report (MValR)
          • Older versions
        • Validation report (ValR)
          • Older versions
        • Verification report (VerR)
          • Older versions
        • Validation and verification report (ValVerR)
          • Older versions
    • Terms and conditions
      • Terms and Conditions - Users
      • Terms and Conditions - Project
      • ICR Terms and Conditions Market Participants
      • Fee Schedule 2024-2025
      • 🔦ICR KYC/KYB Complience Policy
      • ICR Terms and Conditions - Organizations
        • Older versions
          • ICR Terms and Conditions - Organizations
    • Public consultation
      • Methodologies
        • 2023
          • M-ICR0001
          • M-ICR0002
          • M-ICR0003
          • M-ICR0004
          • M-ICR0005
        • 2024
          • M-ICR0006
        • 2025
          • M-ICR009
          • M-ICR007
          • M-ICR011
      • ICR Program
        • 2023
          • Specifications to guide validation and verification
          • Program revision August 2023
        • 2024
          • Program Revision - July 2024
    • Grievance
      • ICR Grievance process
        • Submit a Complaint
    • Document Library
      • Documents
  • Biodiversity Program
    • Overview
    • Fundamentals
    • Definitions
    • Requirements
      • Templates
        • Concept note
    • Public consultation
    • Document Library
    • Fee Schedule - Biodiversity Pilot Phase 2024-2025
  • Carbonregistry.com
    • Marketplaces
      • Terms and Conditions - Trading Hub
    • On Chain
      • How it works
      • Credit data
      • Contracts
      • Retiring Credits Onchain
    • Registry user guide
      • Introduction
      • Get started
        • Create a user account
          • User profile
            • Authentication
            • Documents
            • API
          • KYC
        • Create an organizational account
          • KYB
      • Account management
        • User account management
        • Organizational account management
          • Projects
          • Users
          • Documentation
          • Settings
          • API
      • Project proponents and developers
        • Registering a project
          • Create a New Project
            • New Project Home Screen
            • Project mitigations
            • Project location
            • Benefits
            • Documents and files
            • People and Organizations
              • People
              • Organizations
            • Home screen tabs
              • Overview
              • Mitigations
              • Benefits
              • Documents
              • People
              • Media
              • VVB
            • Submit for ICR Review
          • Manage a project
          • Transition
          • Page
          • Transition
          • Validation/verification
          • Authorized representatives
          • Finish
        • Credits
          • Ex-ante issuance
          • Ex-post issuance
          • Transferring credits
          • Retiring credits
          • Cancelling credits
        • Side Panel
        • Page 1
      • Organizations
        • Account management
        • Credits
        • Retiring credits
      • Insights
    • API
      • Apps
        • Using ICR apps
          • Approve new permissions
          • Review installations
        • Creating ICR apps
          • About creating ICR apps
            • Best practices
          • Registering an ICR app
            • Permissions
            • Webhooks
              • Webhook actions and payloads
              • Handle deliveries
              • Validate deliveries
              • Handle failed deliveries
            • Callback URLs
        • Authentication
          • Authenticate as an app
          • Generate a JWT
          • Authenticate as an installation
          • App private keys
          • Authenticate as an organization
        • Examples
          • Setting up an ICR app
          • Requesting credit action for organization
          • Interacting with the organization warehouse
      • Endpoints
        • V0.5
          • Apps
          • Organizations
          • Inventory
          • Projects
          • Retirements
          • Warehouse
          • Credits
          • Documents
          • Utility
        • V1 - Beta
          • Organizations
          • Projects
          • Transactions
          • Retirements
          • Credit actions
          • Subaccounts
          • Utility
      • Environments
      • Versions
      • Authentication
    • The Credit Bundler
      • Purchasing Credits
      • Post Purchase: Accepting Credits
  • Quality management system
    • ICR QMS
Powered by GitBook
LogoLogo
On this page
  • The Project Contract's Retire Function
  • Retire Function Data Parameter
  • Retirement Data Restrictions and Guidelines
  • Unfinalized Retirements
  • Testing Data
  • Retirement Examples on CarbonRegistry.com
  1. Carbonregistry.com
  2. On Chain

Retiring Credits Onchain

CarbonRegistry.com credits can be permissionlessly retired onchain without using CarbonRegistry.com APIs. Follow the guidelines below to complete the process.

CarbonRegistry.com enables the permissionless retirement of credits issued on its platform. Users can take full control of their credits by transferring them to their own wallets, portfolio managers, or onchain solutions, without losing the ability to retire the credits. As long as the required data is provided when the retirement function is executed, the process will generate an official retirement certificate on CarbonRegistry.com.

The Project Contract's Retire Function

To retire CarbonRegistry.com credits onchain, call the retire function on the project contract that issued the credits:

function retire(
    uint256 tokenId, // The ID of the exPost credits to be retired
    uint256 amount,  // The amount of credits to be retired, where 1 tCO2-e = 10^18 tokens
    address beneficiary, // The wallet address that will receive the retirement NFT
    string memory retireeName, // Name to be displayed on the official CarbonRegistry.com retirement certificate
    string memory customUri, // Optional: Off-chain data URI for the retirement NFT
    string memory comment, // Comment to be displayed on the CarbonRegistry.com retirement certificate
    bytes memory data // Data required to generate the CarbonRegistry.com retirement certificate (see format below)
) external returns (uint256 nftTokenId) ;

Only the wallet address that holds the credits can call this function. When using this permissionless onchain method, it's essential that the transaction includes the required data for the retirement certificate. Without this, the certificate may remain in an unfinalized state.

Note: The data parameter is not stored onchain, but the retireeName, customUri, and comment are saved as onchain metadata in the generated retirement NFT. Even though data isn’t onchain, it plays a crucial role in creating the retirement certificate on CarbonRegistry.com.

Retire Function Data Parameter

The data parameter in the retire function call should always be included, as it contains key information used to generate the retirement certificate. This parameter should include the beneficiary, reason, and comment for the retirement. If the retirement is part of a marketplace transaction or on behalf of an organization on CarbonRegistry.com, the organizationId (the organization's account ID on CarbonRegistry.com) should also be provided.

Here’s an example of how to generate the data field using Node.js:

const beneficiary = "ICR";
const reason = "Voluntary purposes";  // See options for this value below.
const comment = "Retiring credits for activities in 2023";
const organizationId = "e74b0f84-0023-4bfb-bdec-ba3d2b99197e";

const data = ethers.toUtf8Bytes(
  JSON.stringify({
    beneficiary: beneficiary,
    reason: reason,
    comment: comment,
    organizationId: organizationId  // Optional, depending on transaction context
  })
);

Retirement Data Restrictions and Guidelines

When passing retirement certificate data to the retire function, ensure that all fields are provided according to the following guidelines and restrictions:

  • beneficiary: A short string representing the retiree's name, recommended to be under 100 characters.

  • comment: A string where the beneficiary can add custom text to be displayed on the retirement certificate, with a recommended limit of 500 characters.

  • reason: Must be one of the following predefined options:

    • Compliance

    • Corsia

    • Voluntary purposes

    • Overall mitigations of global emissions

    • Corporate emission compensation

    • Other

    • Article 6.2

    • Testing

Unfinalized Retirements

If a retirement was processed without the necessary data (beneficiary, reason, and comment), it will be marked as unfinalized on CarbonRegistry.com. However, in many cases, you can still finalize the retirement if you can prove ownership of the retirement certificate or the private key that signed the transaction.

To finalize, you must create a signature proving that you either hold the retirement certificate NFT or control the wallet that signed the original retirement transaction. Below is an example using ethers.js for frontend signing:

const beneficiary = "ICR";
const reason = "Voluntary purposes";  // Choose from the predefined options
const comment = "Retiring credits for activities in 2023";
const projectAddress = "0x77be59acfef85a1578a5996d06b48b6ee1bac29c";
const nftTokenId = "47";  // The retirement certificate NFT tokenId

const signatureMessage = `${beneficiary};;${comment};;${reason};;${projectAddress};;${nftTokenId}`;
const signer = await provider.getSigner();  // Ensure provider is initialized
const signature = await signer.signMessage(signatureMessage);

const carbonRegistryResponse = await axios.post("https://api.carbonregistry.com/retirements/finalize", {
    signer: "0xd00749D7eb0D333D8997B0d5Aec0fa86cf026c76",  // Signer of the signature
    signature,
    signedData: {
        comment,
        reason,
        beneficiary,
        projectAddress,
        tokenId: nftTokenId
    }
}, {
    headers: {
        Authorization: `Bearer %Carbon_Registry_Access_token%`
    }
});

Testing Data

When testing this functionality in production you should use the name of your organization as beneficiary , the value Testing for reason .

Retirement Examples on CarbonRegistry.com

PreviousContractsNextRegistry user guide

Last updated 7 months ago

This data variable can then be passed into the transaction when calling the retire function. Once the transaction is processed by a node, CarbonRegistry.com’s indexer will pick it up and generate the retirement certificate, which may take up to 15 minutes. If you need faster certificate generation, you can ping our endpoint.

This signature and signed data are then submitted to CarbonRegistry.com’s , allowing the retirement to be completed.

An example of a retirement transaction ->

An example of an official CarbonRegistry.com retirement certificate ->

https://www.carbonregistry.com/transactions/4c95045f-dd40-4edf-b009-af1a5e8239d8
https://www.carbonregistry.com/retirements/certificate/46-0x77be59acfef85a1578a5996d06b48b6ee1bac29c
indexer refresh
finalize endpoint