Download OpenAPI specification:Download
The MyPuro portal API uses role-based access control (RBAC) to assign and manage rights for users. If a request is made by a user who lacks the needed authorization, the request will instead return either an HTTP 403 Forbidden or HTTP 404 Not Found response.
Not Found responses are reserved for cases where the application cannot determine whether the resource exists or whether the user is not able to interact with it. In endpoints that list multiple resources, only those the user is authorized to view will be returned.
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "accountHolderId": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Acme Inc.",
- "businessId": "FI12345671",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street 2"
}, - "registeredOn": "2024-12-13T09:53:26.760Z"
}
]
}
accountHolderId required | string <uuid> The id of the account holder to retrieve |
{- "accountHolderId": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Acme Inc.",
- "businessId": "FI12345671",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street 2"
}, - "registeredOn": "2024-12-13T09:53:26.760Z"
}
accountHolderId | string <uuid> The id of the account holder |
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "accountNumber": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Default Account",
- "parentAccountNumber": "1e54f53b-57cb-4f65-adb1-77b0e1e33ce2",
- "accountHolderId": "f4826423-905d-4ee0-4ee0-311e758ee750",
- "isActive": true
}
]
}
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
The data to create the account with.
name required | string [ 1 .. 100 ] characters The name of the account |
parentAccountNumber required | string or null <uuid> The account number of the parent, or |
accountHolderId required | string <uuid> The ID of the account holder this account is part of. |
{- "name": "Default Account",
- "parentAccountNumber": "f4826423-6423-4ee0-905d-311e758ee750",
- "accountHolderId": "f4826423-6423-4ee0-905d-311e758ee750"
}
{- "accountNumber": "f4826423-6423-4ee0-905d-311e758ee750"
}
accountNumber required | string <uuid> The account number of the account to retrieve |
{- "accountNumber": "f4826423-21b9-4ee0-905d-311e758ee750",
- "name": "Default Account",
- "parentAccountNumber": "1e54f53b-57cb-4f65-adb1-77b0e1e33ce2",
- "accountHolderId": "f4826423-905d-4ee0-4ee0-311e758ee750",
- "isActive": true
}
accountNumber required | string <uuid> The account number of the account to update |
The data to update the account with.
accountName | string The name of the account |
isActive | string Whether the account is active. Inactive accounts cannot be used for many operations, such as transferring assets. |
{- "accountName": "Default Account",
- "isActive": true
}
{- "accountName": "Default Account",
- "isActive": true
}
accountNumber required | string <uuid> The account number of the account to retrieve the balance for |
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 1,
- "accountNumber": "ca1c0b6b-0b3b-4b3b-8b3b-0b3b0b3b0b3b",
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": "2022",
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issueDate": "2022-12-12T00:00:00.000Z"
}
]
}
productionFacilityCode required | string The code of the production facility to retrieve |
{- "productionFacilityCode": "123ABC",
- "name": "Biochar facility",
- "accountHolderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "methodologyCode": "C030000000",
- "methodologyName": "Biochar",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street"
}, - "geographicalLocation": {
- "latitude": "60.192059",
- "longitude": "24.945831"
}, - "dateOfCommissioning": "2024-10-01",
- "registeredOn": "2024-10-01T00:00:00Z",
- "facilityStatus": "ACTIVE"
}
accountHolderId | string <uuid> The id of the account holder. |
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "productionFacilityCode": "123ABC",
- "name": "Biochar facility",
- "accountHolderId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "methodologyCode": "C030000000",
- "methodologyName": "Biochar",
- "address": {
- "postalCode": "00100",
- "city": "Helsinki",
- "country": "FI",
- "street1": "Long Street",
- "street2": "Long Street"
}, - "geographicalLocation": {
- "latitude": "60.192059",
- "longitude": "24.945831"
}, - "dateOfCommissioning": "2024-10-01",
- "registeredOn": "2024-10-01T00:00:00Z",
- "facilityStatus": "ACTIVE"
}
]
}
transactionId required | string <uuid> The id of the transaction to retrieve |
{- "transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "volume": 100,
- "unitPrice": 279.99,
- "totalPrice": "27999.00",
- "currency": "EUR",
- "sourceAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "destinationAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "createdOn": "2019-08-24T14:15:22Z",
- "completedOn": "2019-08-24T14:15:22Z",
- "type": "Issuance",
- "state": "CREATED",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 100,
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": 2022,
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issuanceDate": "2019-08-24T14:15:22Z"
}
], - "labels": [
- {
- "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "name": "CCP-Approved"
}
], - "offtakeAgreementId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "retirementDetails": {
- "usageType": "GENERIC_COMPENSATION",
- "beneficiaryName": "Tech Company Inc.",
- "beneficiaryLocation": "San Francisco",
- "beneficiaryType": "END_CONSUMER",
- "countryOfConsumption": "US",
- "consumptionPeriodStartDate": "2019-08-24",
- "consumptionPeriodEndDate": "2019-08-24",
- "beneficiaryHiddenUntil": "2019-08-24",
- "retirementPurpose": "Retired on behalf of X to offset emissions resulting from activities in 2023.",
- "publicStatementUrl": "string"
}
}
accountHolderId | string <uuid> The id of the account holder. |
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "transactionId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "volume": 100,
- "unitPrice": 279.99,
- "totalPrice": "27999.00",
- "currency": "EUR",
- "sourceAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "destinationAccountNumber": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "createdOn": "2019-08-24T14:15:22Z",
- "completedOn": "2019-08-24T14:15:22Z",
- "type": "Issuance",
- "state": "CREATED",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC100+_FI_148003_2024_0052850a-1263-4d3f-af6f-a91288df04e3_1-100",
- "volume": 100,
- "methodologyCode": "C03000000",
- "methodologyName": "Biochar",
- "productionFacilityCode": "OC4C00",
- "vintage": 2022,
- "productionStartDate": "2022-01-01T00:00:00.000Z",
- "productionEndDate": "2022-12-12T00:00:00.000Z",
- "creditType": "CORC100+",
- "issuanceDate": "2019-08-24T14:15:22Z"
}
], - "labels": [
- {
- "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "name": "CCP-Approved"
}
], - "offtakeAgreementId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
- "retirementDetails": {
- "usageType": "GENERIC_COMPENSATION",
- "beneficiaryName": "Tech Company Inc.",
- "beneficiaryLocation": "San Francisco",
- "beneficiaryType": "END_CONSUMER",
- "countryOfConsumption": "US",
- "consumptionPeriodStartDate": "2019-08-24",
- "consumptionPeriodEndDate": "2019-08-24",
- "beneficiaryHiddenUntil": "2019-08-24",
- "retirementPurpose": "Retired on behalf of X to offset emissions resulting from activities in 2023.",
- "publicStatementUrl": "string"
}
}
]
}
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
transferType required | string Enum: "EXTERNAL" "INTERNAL" Is the transfer INTERNAL between the Account Holder's own accounts, or EXTERNAL transfer to another Account Holder. |
sourceAccountNumber required | string <uuid4> The account sending the CORCs. |
destinationAccountNumber required | string <uuid4> The account receiving the CORCs. |
required | Array of objects (PostCertificateBundle) Certificate bundles and amounts to transfer. |
additionalNotes required | string <= 1000 characters Additional notes about the transaction. |
buyersEmail required | string\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]... This email address will receive a summary of the information you fill in this form. |
offtakeAgreementId | string Default: null Enter the reference number for the offtake agreement if one exists and has been reported to Puro.earth. This will help ensure that your transaction is properly tracked and aligned with the agreement details. |
unitPrice required | string <decimal> ^\d+\.\d{1,2}$ Price per unit. |
currency required | string Enum: "EUR" "USD" The currency for the transaction. |
{- "transferType": "EXTERNAL",
- "sourceAccountNumber": "a14e8d63-9a77-4cf9-8350-bc2fd4b47b7c",
- "destinationAccountNumber": "f94a1207-4a59-4e7d-b795-7698113b126e",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC50+_IN_278476_2024_854bfa6a-c8f3-49f8-af0d-69eabb57574b_20-1799",
- "amount": 50
}
], - "additionalNotes": "Assets issued for the production period of 2022-01-01 till 2022-12-31.",
- "buyersEmail": "john.doe@puro.earth",
- "offtakeAgreementId": "cl16h6x6h0026brxdt3q7870l",
- "unitPrice": "10.12",
- "currency": "EUR"
}
{- "transactionId": "3fa85f64-5717-4562-b3fc-2c123f03afa6"
}
Idempotency-Key required | string A client-side provided unique key to allow idempotently calling this API endpoint. The value must match the pattern: |
sourceAccountNumber required | string <uuid> The account from where the CORCs will be retired. |
offtakeAgreementId | string Enter the reference number for the offtake agreement if one exists and has been reported to Puro.earth. This will help us help ensure that your transaction is properly tracked and aligned with the agreement details. |
required | Array of objects (PostCertificateBundle) Certificate bundles and amounts to retire. |
unitPrice required | string <decimal> ^\d+\.\d{1,2}$ Price per unit. |
currency required | string Enum: "EUR" "USD" The currency for the transaction. |
beneficiaryName required | string <= 150 characters The beneficiary entity name. Examples of beneficiaries might include, but are not limited to: companies, public entities, private or public organizations. The name of the beneficiary will be visible in the public Puro Registry. |
beneficiaryLocation required | string <= 100 characters Location where the beneficiary is registered. |
beneficiaryType required | string Enum: "END_CONSUMER" "SUPPLIER" Choose SUPPLIER, if you are a supplier retiring CORCs issued to you on your own behalf. Otherwise, select END_CONSUMER. |
beneficiaryContactPersonEmail required | string <email> \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]... Beneficiary contact person email will receive a summary of the information you have submitted here. |
countryOfConsumption required | string = 2 characters ISO 3166-1 alpha-2 country code. |
usageType required | string Enum: "BUNDLED_WITH_PRODUCT_OR_SERVICE" "DISCLOSURE" "GENERIC_COMPENSATION" "OTHER" "SPECIFIC_ACTIVITY_LIKE_FLIGHTS" "SUPPORT" Usage type refers to the activity the CORCs compensate for. If the list of provided enums doesn't contain usage type relevant to you, choose OTHER. |
consumptionPeriodStartDate required | string <date> Start date of the consumption period. |
consumptionPeriodEndDate required | string <date> End date of the consumption period. |
beneficiaryHiddenUntil required | string or null <date> Beneficiary hidden until. |
retirementPurpose required | string <= 1000 characters Enter the retirement purpose e.g. “Retired on behalf of X to offset emissions resulting from activities in 2023”. This information will be visible in our public registry. |
additionalNotes | string <= 1000 characters Default: null Additional notes about the transaction. |
{- "sourceAccountNumber": "a14e8d63-9a77-4cf9-8350-bc2fd4b47b7c",
- "offtakeAgreementId": "cl16h6x6h0026brxdt3q7870l",
- "bundles": [
- {
- "certificates": "PURO_PR_CORC50+_IN_278476_2024_854bfa6a-c8f3-49f8-af0d-69eabb57574b_20-1799",
- "amount": 50
}
], - "unitPrice": "10.12",
- "currency": "EUR",
- "beneficiaryName": "string",
- "beneficiaryLocation": "string",
- "beneficiaryType": "END_CONSUMER",
- "beneficiaryContactPersonEmail": "john.doe@puro.earth",
- "countryOfConsumption": "FI",
- "usageType": "GENERIC_COMPENSATION",
- "consumptionPeriodStartDate": "2024-01-01",
- "consumptionPeriodEndDate": "2024-01-31",
- "beneficiaryHiddenUntil": "2025-12-31",
- "retirementPurpose": "string",
- "additionalNotes": "Assets issued for the production period of 2022-01-01 till 2022-12-31."
}
{- "transactionId": "3fa85f64-5717-4562-b3fc-2c123f03afa6"
}
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "sequence": 0,
- "type": "string",
- "title": "string",
- "createdOn": "2019-08-24T14:15:22Z",
- "link": {
- "referenceType": "Issuance",
- "referenceId": "123e4567-e89b-12d3-a456-426614174000"
}
}
]
}
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "name": "Biochar",
- "code": "C03000000",
- "edition": "Edition 2023 V3",
}
]
}
limit | integer [ 1 .. 100 ] How many items to return at one time (max 100) |
offset | integer >= 0 How many items to skip |
{- "pagination": {
- "total": 1,
- "offset": 0,
- "limit": 100
}, - "data": [
- {
- "id": "123e4567-e89b-12d3-a456-426614174010",
- "parentId": "3ka82f69-5717-4932-b3fc-2c963f88afa7",
- "name": "CCP-Approved",
- "createdOn": "2025-01-02T00:00:00.000Z"
}
]
}