Introduction

Welcome to the Rejoose API Documentation

Our APIs help you integrate sustainability data into your workflows. This documentation covers the following endpoint groups, each serving a specific purpose. Go to the section relevant to your needs:

  • e.voice – Carbon data for invoices or similar transactions.
  • e.voice circularity – Carbon and circularity data for refurbished and recycled IT products, for ITADs and circular IT.
  • Reports – Aggregate PDF reports of your e.voice and e.voice circularity data over a period.
  • e.product and e.product+ – Carbon data for single or bulk products. e.product provides the total CO₂e; e.product+ includes full life cycle (LCA) data.
  • Categories – Every product category Rejoose recognises, with the other names it is known by, so you can map your product groups before you send devices.
  • Groups (e.hub Enterprise) – Data extraction across the organisations of an enterprise group.

Before you send your first document, read Reporting IDs: the ids you send decide the reports you can pull later.

How Our APIs Work

  • All Rejoose APIs follow REST principles, using standard REST-oriented URLs and HTTP verbs.
  • Requests are form-encoded, and responses are JSON-encoded.
  • Authentication is handled via API keys, which you can create in e.hub. Contact support@rejoose.com for access.
  • Our APIs evolve over time. We aim to minimize changes, but when updates occur, we'll notify you in advance.

Getting Started

Once your contract is signed, we'll begin a thorough onboarding process.

If you need support before the contract is finalized, please reach out - we'll do our best to assist. Pre-contract support may incur a cost, depending on scope and hours required (we'll inform you beforehand).

Tips for Using the Docs

  • Expand objects marked with ⯈ (e.g., ⯈ client, ⯈ devices) to view additional fields.
  • Use the sandbox mode for safe testing before going live.
  • Do not use the production environment for testing!

Base URLs

Production Base URL
https://app.rejoose.com/
Sandbox Base URL
https://sandbox.rejoose.com/

Sandbox mode

When accessing e.hub® (https://e-hub.rejoose.com), you have the option to switch between production and sandbox modes. Sandbox mode allows you to test and explore features without affecting your live data. This mode is ideal for tasks like setting up APIs, testing integrations, and generating reports before going live.

Please note: When in Sandbox mode, you will only receive sample data for API and integration testing. So do not conduct data quality testing when testing the API in Sandbox mode.

In sandbox mode:

  • Data created or modified won't impact your production environment.
  • The Life Cycle Assessment (LCA) data mirrors the production environment but is limited to category average values. During your testing phase, you can use the following categories if you want some LCA data returned:
    • Monitor
    • Docking Station
    • Smartphone
    • Notebook
    • Server
    • Workstation
    • Tablet
    • Network
    • Storage
    • Desktop

Utilize sandbox mode to ensure your integration is robust and ready for production use.

Rate Limiting

Our API enforces rate limiting to ensure fair usage and prevent abuse. The current rate limit is set to 600 requests/min.

Please note: For Enterprise solutions, we can adjust rate limitation according to SLA. Please contact our support@rejoose.com or your regional manager. The following headers are included in each API response to provide information about your current rate limit status:


  • X-RateLimit-Limit
    • This header indicates the maximum number of requests you are permitted to make in a given time window.
    • Example: X-RateLimit-Limit: 100
  • X-RateLimit-Remaining
    • This header shows the number of requests remaining in the current rate limit window.
    • Example: X-RateLimit-Remaining: 50
  • Retry-After
    • This header is included in the response only when your rate limit has been exceeded. It indicates how many seconds you should wait before making a new request.
    • Example: Retry-After: 55
  • Response Example
    • When a request exceeds the rate limit, the API will return a 429 Too Many Requests status code. The response will include the Retry-After header, as shown below:
      • HTTP/1.1 429 Too Many Requests
      • Content-Type: application/json
      • Retry-After: 55
      • X-RateLimit-Limit: 100
      • X-RateLimit-Remaining: 0
      • Body: { "data": null, "errors": { "too_many_requests": ["Too many requests. Please wait a moment and try again."] }, "status": 429 }

IDs in URLs

The GET endpoints for an e.voice and an e.voice circularity take your own id in the URL: external_invoice_id or external_doc_id. URL-encode the id twice before you put it in the path. Rejoose decodes it twice.

  • 2024/001 is sent as 2024%252F001
  • INV+001 is sent as INV%252B001
  • INV 001 is sent as INV%2520001

An id that holds only letters, digits, -, _, . and ~ does not change when it is encoded, so you can send it as it is. An id with /, + or % that is encoded only once is not found (404), or it reaches a different endpoint.

The links in a response (self, pdf, base_64_pdf) are already encoded this way. Call them as they are, without encoding them again.

Reporting IDs

Every e.voice and e.voice circularity carries ids that decide how your data is grouped in e.hub and e.insights, and which documents a report covers. Decide on them before the first document goes to production: they are hard to change once data has been sent.

LevelFieldWhat it is
GroupSet up in e.hub Enterprise, nothing is sent in the APIOne customer that reaches you under several organization_id values, for example from two ERPs.
Organisationclient.organization_idYour customer. One static value per customer, the same on every document.
Companyclient.company_idA company, branch office, or subsidiary of that customer. One value per entity you want to see on its own.
Transactionexternal_invoice_id (e.voice) or external_doc_id (e.voice circularity)One document.
Batchbatch_id (e.voice circularity only)The batch of products you received as an ITAD, for example one pickup from a customer. Give every e.voice circularity from that batch the same value and you can report on the batch as a whole.

Example. Your customer Northwind has customer number NW-10482 in your ERP:

Entityclient.organization_idclient.company_id
London head officeNW-10482NW-GB-LON
Manchester branch officeNW-10482NW-GB-MAN
French subsidiaryNW-10482NW-FR-PAR

Give every office its own company_id, even when it usually reports together with another one: you can always combine companies in a report by sending several company_ids, but documents sent under one shared id can never be split afterwards. If Northwind also reaches you from a second ERP under another organization_id, an e.hub Enterprise group combines the two.

To getUse
Everything for the groupList a group's e.voices
One customerThe organization_id filter on List e.voices, List e.voice circularities, and both report endpoints
One company or branch officeThe company_ids filter on the same endpoints
One documentRetrieve an e.voice or Retrieve an e.voice circularity by its id
One batch of received products (e.voice circularity)The batch_id filter on List e.voice circularities and the circularity report

Company ID was formerly called VAT number. vat_number is still accepted and responses return both; use company_id whenever possible. sender.company_id is your own issuing office and is not part of this hierarchy.

Documents already sent under a wrong value: contact support@rejoose.com with the document ids and the correct value.

Refurbishment impact

A refurbished device keeps the production footprint of its first life, so Rejoose does not count manufacturing and transport for it again. What remains is the impact of the refurbishment itself: labour, spare parts, storage, packaging, and transport at the refurbishment facility. This is the refurbishment impact (refurbishment_impact_kg_co2_eq). The avoided emissions are the manufacturing and transport footprint the device avoids, minus its refurbishment impact. They never go below zero.

The refurbishment impact is used by these endpoints:

Where the figure comes from

Rejoose calculates the refurbishment impact from certified refurbishment impact reporting (RFI) data: the facility data and per-category figures that you submit in e.hub and Rejoose reviews and certifies. Each refurbished device uses the first source in this list that has a figure for it. refurbishment_impact_basis on each device tells you which one was used.

refurbishment_impact_basisSource
rfi_categoryYour own certified RFI has a figure for the device's category and variant.
rfi_averageYour own certified RFI has no figure for the category, so its average for the variant is used.
standard_categoryYour own RFI has no figure for the device, so the Rejoose standard RFI's figure for the category is used.
standard_averageThe Rejoose standard RFI's average for the variant.
percentageYour refurbishment percentage of the device's manufacturing and transport footprint. Only used while no Rejoose standard RFI is certified.

refurbishment_impact_basis is null for devices that are not refurbished, are excluded or recycled, or have no carbon data.

Choosing the facility and the variant

  • Facility (facility_external_id) – the external_id of one of your own facilities, as registered in e.hub. It must be your own facility and cannot be the Rejoose standard facility; otherwise the request fails with a 422 validation error. When you leave it out, your default facility is used.
  • Variant (variant) – the refurbishment process the device went through, named by a variant on the facility. Every facility has full (repair) and light (test and wipe). When you leave it out, the facility's default variant is used. A variant the facility does not have is rejected with a 422, on every device. When the Rejoose standard RFI is used, a variant named full or light selects that variant of the standard.
EndpointFacilityVariant
Generate an e.voiceoptions.facility_external_id (whole e.voice)devices[].variant
Generate an e.voice circularityoptions.facility_external_id (the whole e.voice circularity)devices[].variant
Look up a productfacility_external_idvariant
Look up products in bulkproducts[].facility_external_idproducts[].variant

Both fields are only used for refurbished devices and are ignored for all other devices.

What the response tells you

  • Each device carries refurbishment_impact_basis and variant (the variant you sent). e.voice circularity devices also carry rfi_per_unit_kg_co2_eq, the certified figure per unit, so you can reproduce refurbishment_impact_kg_co2_eq from the response.
  • Each e.voice and e.voice circularity carries facility_external_id, rfi_external_id and rfi_version (your own certified RFI), and standard_rfi_external_id and standard_rfi_version (the Rejoose standard RFI). A field is null when no such RFI covered the document date.
  • Each e.product answer carries rfi_external_id and rfi_version of the RFI that was used: your own, or the Rejoose standard (standard-<year>).

When the figure is set

  • e.voice and e.voice circularity – Rejoose sets the figure when the document is generated, from the certified RFI that covers the document date (external_invoice_date or external_doc_date). The daily update keeps using the same RFI. A stored figure only changes if Rejoose restates or backfills the RFI, and the change appears in the document's version history.
  • e.product – the answer uses the RFI that applies today and is not stored. A later certification changes the next answer.

In sandbox mode, you may not have a certified RFI, so devices usually use the Rejoose standard RFI or the percentage. Contact support@rejoose.com if you want to set up your facilities and RFI.

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_API_KEY}".

All endpoints that need an API key are marked with a Requires API key badge in the documentation below.

You can create an API key in Rejoose e.hub®: open Developer → API keys and click Create API key.

API key abilities

When you create an API key in e.hub, you choose its abilities. An ability decides which endpoints the key can call. Each endpoint below shows the abilities it accepts next to API key ability. When it lists more than one, any one of them is enough. A key without a fitting ability gets 403 with {"data": null, "errors": {"forbidden": ["Invalid ability provided."]}, "status": 403}.

Ability What it opens
API_EVOICE e.voice: generate, list and fetch e.voices, and the CSR report. Groups also need an e.hub Enterprise subscription.
API_EVOICE_CIRCULARITY e.voice circularity: generate, list and fetch e.voice circularities and their PDF, and the RCIBR report.
API_PRODUCT e.product: product lookup, bulk lookup and product changes.

Some endpoints accept more than one ability: a queued report's status and download take API_EVOICE or API_EVOICE_CIRCULARITY, and Categories takes any of the three.

Give each key only the abilities its system needs.

Errors

A request that fails answers with an HTTP status code and a JSON body that says what went wrong. Each endpoint shows the errors that are specific to it in its example responses, and lists the shared ones under Other responses. Those link to the sections below.

StatusWhen
401No or invalid API key
403The key or the account may not call the endpoint
404No record with that id for your organisation
422A parameter failed validation
429Rate limit exceeded
5xxA problem on our side

Unauthenticated (401)

The request carried no API key, or a key that is invalid or revoked. Send the key as Authorization: Bearer {YOUR_API_KEY}; see Authenticating requests.

{
  "data": null,
  "errors": {
    "unauthenticated": [
      "Unauthenticated."
    ]
  },
  "status": 401
}

Forbidden (403)

The key is valid, but it or your account may not call this endpoint. The cause decides the body.

The API key lacks the ability the endpoint needs – every endpoint. See API key abilities.

{
  "data": null,
  "errors": {
    "forbidden": [
      "Invalid ability provided."
    ]
  },
  "status": 403
}

Your subscription usage limit is reached – e.voice and e.voice circularity generate, and the report endpoints. The message names the product. e.product documents its own usage-limit responses on its endpoints.

{
  "data": null,
  "errors": {
    "forbidden": [
      "Your max limit on e.voice is reached. Contact us on \"sales@rejoose.com\" or \"+45 71 74 70 30\" to change your limit."
    ]
  },
  "status": 403
}

Your organisation is not a supplier partner – the report endpoints.

{
  "data": null,
  "errors": {
    "forbidden": [
      "Only supplier partners can use this endpoint."
    ]
  },
  "status": 403
}

Your account is restricted to sandbox mode and called the production environment – the report endpoints.

{
  "data": null,
  "errors": {
    "forbidden": [
      "Your account is restricted to sandbox mode. Please use the sandbox environment."
    ]
  },
  "status": 403
}

Your organisation has no e.hub Enterprise subscription – the group endpoints.

{
  "data": null,
  "errors": {
    "forbidden": [
      "You are not an enterprise partner."
    ]
  },
  "status": 403
}

Not found (404)

The id in the URL does not name a record of your organisation: it was never created, it is spelled differently, or it was not URL-encoded twice as described under IDs in URLs. A queued report also answers 404 once it is older than 7 days. The message names what was looked up.

{
  "data": null,
  "errors": {
    "not_found": [
      "Evoice with external_invoice_id 2024-001 not found"
    ]
  },
  "status": 404
}

The e.product lookup is the exception: a product without data answers 404 with the product echoed back and null carbon values, as shown on that endpoint.

Validation failed (422)

A query or body parameter did not pass the rules in the endpoint's parameter table. The body names each parameter with a dot path, such as client.name or products.0.brand, and lists its messages. Nothing was created or billed.

{
  "data": null,
  "errors": {
    "country_code": [
      "The country code field is required."
    ],
    "products.0.brand": [
      "The products.0.brand field is required."
    ]
  },
  "status": 422
}

An endpoint whose 422 body differs from this shape says so in its own 422 example.

Too many requests (429)

Every endpoint shares the per-minute limit described under Rate Limiting, and the report endpoints have a second limit of their own, 25 requests per minute per partner by default. Both answer with a Retry-After header and this body; the message names the limit.

{
  "data": null,
  "errors": {
    "too_many_requests": [
      "Too many requests. Please wait a moment and try again."
    ]
  },
  "status": 429
}

Server errors (5xx)

Something went wrong on our side. These are rare and safe to retry after a short wait. If the problem persists, contact support@rejoose.com.

500 – an unexpected error. We are notified automatically.

{
  "data": null,
  "errors": {
    "internal_server_error": [
      "Something went wrong. We have been notified and will fix it soon!"
    ]
  },
  "status": 500
}

503 – a service we depend on is temporarily unavailable: product data for e.product, e.voice, and e.voice circularity; the category catalogue for categories; PDF generation for reports. The message names the service.

{
  "data": null,
  "errors": {
    "service_unavailable": [
      "Product data is temporarily unavailable. Please try again in a few minutes."
    ]
  },
  "status": 503
}

An error that escapes the handling of the API itself answers with a short body:

{
  "data": null,
  "errors": {
    "internal_server_error": [
      "Server Error"
    ]
  },
  "status": 500
}

e.voice

e.voice – Carbon data on invoice level

The e.voice API enables the generation of an environmental invoice (e.voice), serving as the carbon counterpart to a financial invoice. It bridges financial transactions with their associated carbon impact, allowing businesses to track and report emissions seamlessly.

When using the e.voice API, you have flexible implementation options:

  • The solution can be fully anonymized, using only unique identifiers known to you, or it can include customer names.
  • Rejoose does not receive a copy of the financial invoice. Instead, only specific extracted data points are transmitted—just enough to determine the carbon footprint and link the e.voice with its corresponding financial transaction.

Upon a successful transaction, the API provides:

  • Transaction details confirming all is good or other relevant error responses (see example response).
  • Carbon data for the total transaction and individual products (raw data format). (optional)
  • A base64-encoded PDF file (the e.voice document). (optional)

Keep in mind that you do not need to save the above data in your ERP system (or similar), as everything is archived for you in the e.hub and for your customers via e.insights.

e.voice API – Options Explained

  • deferred: Specifies whether the e.voice generation should run as a background (deferred) job.
    This is useful for large batches or when you want to avoid delays in your primary workflow. Setting deferred to true allows the generation process to run asynchronously, reducing impact on real-time operations.
    Poll GET api/v3/evoices/{external_invoice_id} for the result: 202 while pending, 200 with the full e.voice when finalized or while it has status: "updating", or 200 with status: "failed" and a failure_reason if generation failed — the same external_invoice_id can then be re-submitted. During an update, top-level totals may not yet match the device rows.
  • include_pdf: Specifies whether the API response should include a base64-encoded PDF file of the e.voice document.
    Great for scenarios where you only need raw carbon data and want to reduce payload size. Set include_pdf to false if you’re storing PDFs separately or handling document generation downstream.
  • credit_note: Specifies whether the e.voice is a credit note, which reverses the carbon data recorded for a transaction. (amounts will be handled as absolute numbers)
    Ideal for returns, corrections, or adjustments where you need to negate previously recorded carbon impacts. Setting credit_note to true ensures your carbon accounting stays accurate and reflects true net impacts.
  • facility_external_id: Specifies which of your refurbishment facilities refurbished the devices on the e.voice, using the facility's external_id from e.hub.
    Use it when you refurbish at more than one facility. The refurbishment impact of each refurbished device then uses the certified RFI of that facility, for the external_invoice_date. When you leave it out, your default facility is used. It must be your own facility; the Rejoose standard facility cannot be used. See Refurbishment impact.

Quick tips

  • Use deferred: true for better system performance and faster responses (a sustainable choice).
  • Set include_pdf: false if you only want to minimize response size and rely on retrieving data from e.hub and e.insights
  • Mark transactions as credit_note: true to define this is an credit note and return of products, and this will be visible in the carbon reporting.

Reading an e.voice

  • Status. finalized is the normal state. A deferred generation answers 202 while it is pending. A refresh returns the full resource with status: "updating"; while it runs, top-level totals may not yet match the device rows. A failed generation returns status: "failed" with a failure_reason, and the same external_invoice_id can be re-submitted.
  • Refurbishment impact. Each refurbished device is paid by your certified facility RFI, the Rejoose standard RFI, or your refurbishment percentage, and its refurbishment_impact_basis and variant tell you which. The e.voice carries the facility and RFI versions used. See Refurbishment impact for the details.
  • LCA split. Responses include manufacturing_kg_co2_eq, transportation_kg_co2_eq, and eol_kg_co2_eq at e.voice and device level.
  • List rows. The list endpoint returns each e.voice with its totals and devices exactly as the single e.voice endpoint does, without the PDF.

Product data validation. After the request validation, each device is checked against the Rejoose product data. When a device is rejected there, the 422 errors object names it by its position in the array you sent, as products.N.<field> (N counts from 0 and follows the order of devices), and manufacturer_part_number stands for the device's external_id. When no single field can be named, errors is a plain message instead.

You can access more detailed information in the API documentation by expanding objects marked with a small black arrow (⯈), such as ⯈ client or ⯈ devices. Simply click the arrow to reveal additional data fields.

Generate an e.voice

Requires API key
API key ability API_EVOICE

Generates the e.voice document and returns its data.

POST api/v3/evoices/generate

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Content-Type required
Example: application/json

Body Parameters

external_invoice_id   string     

A unique identifier that can connect the e.voice with the invoice sent to the customer. It is recommended to use the actual invoice number stated on the customer invoice. Must be between 1 and 255 characters. Example: 123456789

external_invoice_date   string     

The date of the financial transaction. The date should use the invoicing date in ISO 8601 standard (YYYY-MM-DD). Must be between 1970-01-02 and 2037-12-31. Example: 2023-09-25

country_code   string     

Country code for product delivery. This defines the use phase country, so this should represent the country where products are shipped to and used in. Use an ISO 3166-1 alpha-2 country code (e.g. GB), or an ISO 3166-2 subdivision code where state-level emission factors are available: US states use the "US-" prefix (e.g. US-CA) and Australian states use the "AU-" prefix (e.g. AU-VIC, AU-NSW, AU-QLD, AU-SA, AU-WA, AU-TAS, AU-ACT, AU-NT). Bare AU still resolves to the Australian national factor. This will determine the use country carbon intensity (gram CO2e per kWh) used for the e.voice. Example: GB

supplier_contact   string  optional    

Optional. Contact email for a person or mailbox for you as the supplier to the customer. When provided, this contact email address will be visible on the e.voice. Must be between 1 and 80 characters. Example: example@rejoose.com

client   object     

Client information object. It carries two identifiers that decide your reporting: organization_id, which identifies your customer, and company_id, which identifies the company, branch office, or subsidiary within that customer. All reporting is aggregated on organization_id, so use one unique and static value per customer and send it on every document; a customer sent under several values is reported as several customers. Read Reporting IDs first.

name   string     

The name of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Ltd

organization_id   string     

The identifier of the customer organisation in your system, such as its customer or account number in your ERP. Every report, dashboard, list filter, and e.insights invitation is keyed on it, so send one unique and static value per customer, the same on every e.voice and e.voice circularity. Not the invoice number and not the company id. Must be between 1 and 240 characters. See Reporting IDs. Example: EcoFriendly-4987

company_id   string     

This defines the company, branch office, or subsidiary and, as with organization_id, is used for reporting purposes. This needs to be a unique static id from your ERP identifying this specific entity; it can also be a new unique identifier made for this specific purpose. Must be between 1 and 80 characters. Formerly vat_number, which is still accepted; we recommend company_id. See Reporting IDs. Example: ECOF1234567

address   string  optional    

Optional. The address of the customer as on the invoice. When provided, this line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 255 characters. Example: 100 Enviro Way

address2   string  optional    

The second line of the address of the customer as on the invoice. Must be between 1 and 255 characters. Example: Sustainability Lane 3

zip_code   string  optional    

Optional. The zip code of the customer as on the invoice. When provided, this line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: ECO321

city   string  optional    

Optional. The city of the customer as on the invoice. When provided, this line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: GreenVille

country   string     

The country of the customer as on the invoice. This line will be shown on the e.voice. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Denmark

country_code   string  optional    

Optional. The country code of the customer as on the invoice. Use an ISO 3166-1 alpha-2 code or supported ISO 3166-2 subdivision code. If omitted or null, the code is looked up from client.country, then falls back to the e.voice's country_code. Example: DK

sender   object  optional    

Optional. Use this when your organisation issues documents from more than one office or location, and the document should show the office that sent the invoice. When sent, the sender is shown as the issuing party on the PDF instead of your registered partner details. When not sent, the PDF shows your registered partner details. A sender is identified by its name, company_id, and country: a later request with the same three values reuses the location as first stored, including its address. When sent, name, company_id, country, and country_code are required. Returned as sender, or null when not sent.

name   string     

The name of the office or location that issues the document. Required when sender is sent. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Nordic

company_id   string     

The company identifier of the office or location, such as its VAT or registration number. Together with name and country, this identifies the sender. Required when sender is sent. Must be between 1 and 80 characters. Formerly vat_number, which is still accepted. Example: DK12345678

address   string  optional    

Optional. The address of the office or location. Shown on the PDF when provided. Must be between 1 and 255 characters. Example: Havnegade 12

address2   string  optional    

Optional. The second line of the address. Shown on the PDF when provided. Must be between 1 and 255 characters. Example: 2nd floor

zip_code   string  optional    

Optional. The zip code of the office or location. Shown on the PDF when provided. Must be between 1 and 80 characters. Example: 1058

city   string  optional    

Optional. The city of the office or location. Shown on the PDF when provided. Must be between 1 and 80 characters. Example: Copenhagen

country   string     

The country of the office or location. Required when sender is sent. Must be between 1 and 80 characters. Example: Denmark

country_code   string     

The country code of the office or location. Required when sender is sent. Use an ISO 3166-1 alpha-2 country code or its alpha-3 form (e.g. DK or DNK; canonicalised to alpha-2 on ingest). Example: DK

devices   object[]     

This is the list of devices and products from the invoice sent to the customer (Array of device objects). A maximum of 500 devices per request applies by default; this limit can be changed — contact Rejoose if you would like it adjusted. Requests exceeding the limit are rejected with a 422 validation error.

external_id   string     

Provide the product's manufacturer part number (MPN). If another identifier is used, the original_manufacturer_part_number should be provided. Example: RE8989121

original_manufacturer_part_number   string  optional    

This is the unique manufacturer part number (MPN). The MPN is a special code that uniquely identifies a product from a specific manufacturer. If another identifier is used as external_id, the original manufacturer part number should be provided. Example: 62B6ASD3EU

quantity   integer     

The number of units for the invoiced or credited item: the quantity sold on an e.voice, the quantity reversed on a credit note. A whole number from 1 to 1000000; a decimal such as 2.7 or a 0 is rejected with a 422. A negative number is read as its absolute value, because the direction comes from options.credit_note, not from the sign. Example: 10

category   string     

The category information serves two purposes: together with the external_id and brand, it provides a 100% unique data set for secure product matching. In the absence of LCA data, the system can provide CA data for the brand/category. Must be between 1 and 80 characters. Example: Notebook

brand   string     

The name of the manufacturer of the product. This information, together with the external_id (MPN) and category, provides a unique data set to match carbon data to the specific product. Must be between 1 and 80 characters. Example: Lenovo

model_name   string     

The product model name as on the invoice. This line of text will also be shown on the e.voice to have a 1:1 match with the invoice. Must be between 1 and 240. characters. Example: ThinkPad T480

refurbished   boolean  optional    

Utilize this if you are selling a refurbished product; otherwise, do not add this. Set the parameter as true to define this as a refurbished product and you will receive a data set for this. Example: true

variant   string  optional    

The refurbishment process the device went through, for example full (repair) or light (test and wipe). Only used for refurbished devices. Optional: when you leave it out, the facility's default variant is used. A value the facility does not have is rejected with a 422. Max 64 characters. See Refurbishment impact. Example: full

lifetime_months   integer  optional    

Use this if you know the actual lifespan of the product in months. If not used, Rejoose will utilize the standard EU lifespan. Must be between 1 and 600. Example: 48

excluded   boolean  optional    

Use this if you want to exclude this product's LCA data from the e.voice. Use cases could include products with no carbon footprint or products where the footprint has already been accounted for elsewhere. This defaults to false. Example: true

options   object  optional    

Settings for the request.

deferred   boolean  optional    

Specifies whether the e.voice generation should run as a background job. Defaults to false. Example: true

include_pdf   boolean  optional    

Specifies whether the response should include a base64-encoded PDF file. Defaults to true. If the e.voice is saved but its PDF cannot be rendered, the 201 response leaves pdf_base64 out; fetch the PDF later with GET /evoices/{external_invoice_id}. Example: false

credit_note   boolean  optional    

Specifies whether the e.voice is a credit note. If set to true, it will mark the e.voice as a credit note, reversing the carbon data. Defaults to false. Example: true

unit   string  optional    

Specifies the unit system for weight measurements in the response. Use 'metric' for kilograms (kg) or 'imperial' for pounds (lbs). Defaults to metric. Example: metric

facility_external_id   string  optional    

The external_id of your facility that refurbished the devices. Must be your own facility, not the Rejoose standard facility. Optional: when you leave it out, your default facility is used. See Refurbishment impact. Example: CPH-01

Response (200, When using deferred)
{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2"
    }
}
Response (201)
{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "pdf_base64": "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Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "country_code": "DK",
        "facility_external_id": "CPH-01",
        "rfi_external_id": "CPH-01-2023",
        "rfi_version": 1,
        "standard_rfi_external_id": "standard-2023",
        "standard_rfi_version": 1,
        "carbon_intensity_gram": 123,
        "tec_annual_kwh": 478.65,
        "total_kg_co2_eq": 1301.51,
        "manufacturing_kg_co2_eq": 650.25,
        "transportation_kg_co2_eq": 50.13,
        "eol_kg_co2_eq": 53.52,
        "status": "finalized",
        "type": "evoice",
        "source_type": "api",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "updated_at": "2024-01-05T13:11:50.000000Z",
        "unit": "metric",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "company_id": "ECOF1234567",
            "vat_number": "ECOF1234567",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark"
        },
        "sender": {
            "name": "Green Supply Co. Copenhagen Branch",
            "company_id": "DK12345678",
            "vat_number": "DK12345678",
            "address": "Havnegade 12",
            "address2": "Building B",
            "zip_code": "1058",
            "city": "Copenhagen",
            "country": "Denmark"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "quantity": 10,
                "lifetime_months": 72,
                "tec_annual_kwh": 377.25,
                "scope_2_kg_co2_eq": 278.41,
                "scope_3_kg_co2_eq": 249.27,
                "total_kg_co2_eq": 527.68,
                "manufacturing_kg_co2_eq": null,
                "transportation_kg_co2_eq": null,
                "eol_kg_co2_eq": 18.42,
                "refurbished": true,
                "variant": "full",
                "refurbishment_impact_basis": "rfi_category",
                "excluded": false,
                "epeat_tier": "silver",
                "epeat_climate_plus": true,
                "epeat_status": "active",
                "epeat_certificate_url": "https://epeat.net/product-details/92ff91678f38486c",
                "tco_certified": true,
                "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=D1010052",
                "avoided_emissions_kg_co2_eq": 256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "quantity": 10,
                "lifetime_months": 30,
                "tec_annual_kwh": 101.4,
                "scope_2_kg_co2_eq": 31.18,
                "scope_3_kg_co2_eq": 742.65,
                "total_kg_co2_eq": 773.83,
                "manufacturing_kg_co2_eq": 650.25,
                "transportation_kg_co2_eq": 50.13,
                "eol_kg_co2_eq": 35.1,
                "refurbished": false,
                "variant": null,
                "refurbishment_impact_basis": null,
                "excluded": false,
                "epeat_tier": null,
                "epeat_climate_plus": null,
                "epeat_status": null,
                "epeat_certificate_url": null,
                "tco_certified": null,
                "tco_certificate_url": null,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789",
            "pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf?base64=1"
        }
    }
}
Response (201, When using credit_note)
{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "pdf_base64": "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Ci9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "country_code": "DK",
        "facility_external_id": "CPH-01",
        "rfi_external_id": "CPH-01-2023",
        "rfi_version": 1,
        "standard_rfi_external_id": "standard-2023",
        "standard_rfi_version": 1,
        "carbon_intensity_gram": 123,
        "tec_annual_kwh": 478.65,
        "total_kg_co2_eq": -1301.51,
        "manufacturing_kg_co2_eq": -650.25,
        "transportation_kg_co2_eq": -50.13,
        "eol_kg_co2_eq": -53.52,
        "status": "finalized",
        "type": "credit_note",
        "source_type": "api",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "updated_at": "2024-01-05T13:11:50.000000Z",
        "unit": "metric",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "company_id": "ECOF1234567",
            "vat_number": "ECOF1234567",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark"
        },
        "sender": {
            "name": "Green Supply Co. Copenhagen Branch",
            "company_id": "DK12345678",
            "vat_number": "DK12345678",
            "address": "Havnegade 12",
            "address2": "Building B",
            "zip_code": "1058",
            "city": "Copenhagen",
            "country": "Denmark"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "quantity": 10,
                "lifetime_months": 72,
                "tec_annual_kwh": 377.25,
                "scope_2_kg_co2_eq": -278.41,
                "scope_3_kg_co2_eq": -249.27,
                "total_kg_co2_eq": -527.68,
                "manufacturing_kg_co2_eq": null,
                "transportation_kg_co2_eq": null,
                "eol_kg_co2_eq": -18.42,
                "refurbished": true,
                "variant": "full",
                "refurbishment_impact_basis": "rfi_category",
                "excluded": false,
                "epeat_tier": "silver",
                "epeat_climate_plus": true,
                "epeat_status": "active",
                "epeat_certificate_url": "https://epeat.net/product-details/92ff91678f38486c",
                "tco_certified": true,
                "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=D1010052",
                "avoided_emissions_kg_co2_eq": -256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "quantity": 10,
                "lifetime_months": 30,
                "tec_annual_kwh": 101.4,
                "scope_2_kg_co2_eq": -31.18,
                "scope_3_kg_co2_eq": -742.65,
                "total_kg_co2_eq": -773.83,
                "manufacturing_kg_co2_eq": -650.25,
                "transportation_kg_co2_eq": -50.13,
                "eol_kg_co2_eq": -35.1,
                "refurbished": false,
                "variant": null,
                "refurbishment_impact_basis": null,
                "excluded": false,
                "epeat_tier": null,
                "epeat_climate_plus": null,
                "epeat_status": null,
                "epeat_certificate_url": null,
                "tco_certified": null,
                "tco_certificate_url": null,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789",
            "pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf?base64=1"
        }
    }
}

Retrieve an e.voice

Requires API key
API key ability API_EVOICE

Returns one e.voice with its device lines and, by default, the PDF.

GET api/v3/evoices/{external_invoice_id}

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

URL Parameters

external_invoice_id string required

The external_invoice_id of the e.voice, URL-encoded twice: 2024/001 is sent as 2024%252F001. See IDs in URLs.

Example: 123456789

Query Parameters

include_pdf boolean optional

Whether the response includes the base64-encoded PDF. Defaults to true. Set it to false (or 0) when you only poll for the status.

unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: imperial
Response (200)
{
    "success": true,
    "data": {
        "external_invoice_id": "123456789",
        "external_invoice_date": "2023-09-25",
        "pdf_base64": "JVBERi0xLjcKMSAwIG9iago8PCAvVHlwZSAvQ2F0YWxvZwovT3V0bGluZXMgMiAwIFIKL1BhZ2VzIDMgMCBSID4+CmVuZG9iagoyIDAgb2JqCjw8IC9UeXBlIC9PdXRsaW5lcyAvQ291bnQgMCA+PgplbmRvYmoKMyAwIG9iago8PCAvVHlwZSAvUGFnZXMKL0tpZHMgWzYgMCBSCl0KL0NvdW50IDEKL1Jlc291cmNlcyA8PAovUHJvY1NldCA0IDAgUgovRm9udCA8PCAKL0YxIDggMCBSCi9GMiA5IDAgUgovRjMgMTAgMCBSCj4+Cj4+Ci9NZWRpYUJveCBbMC4wMDAgMC4wMDAgNTk1LjI4MCA4NDEuODkwXQogPj4KZW5kb2JqCjQgMCBvYmoKWy9QREYgL1RleHQgXQplbmRvYmoKNSAwIG9iago8PAovUHJvZHVjZXIgKP7/AGQAbwBtAHAAZABmACAAMgAuADAALgAzACAAKwAgAEMAUABEAEYpCi9DcmVhdGlvbkRhdGUgKEQ6MjAyNDAxMDUxMzIzMTArMDAnMDAnKQovTW9kRGF0ZSAoRDoyMDI0MDEwNTEzMjMxMCswMCcwMCcpCi9UaXRsZSAo/v8ARQB2AG8AaQBjAGUpCj4+CmVuZG9iago2IDAgb2JqCjw8IC9UeXBlIC9QYWdlCi9NZWRpYUJveCBbMC4wMDAgMC4wMDAgNTk1LjI4MCA4NDEuODkwXQovUGFyZW50IDMgMCBSCi9Bbm5vdHMgWyAxMSAwIFIgXQovQ29udGVudHMgNyAwIFIKPj4KZW5kb2JqCjcgMCBvYmoKPDwgL0ZpbHRlciAvRmxhdGVEZWNvZGUKL0xlbmd0aCAyODM3ID4+CnN0cmVhbQp4nK2b23LcNhKG7/UUqORmt0qiiQNxyNXGsezaHCqxpdhV6/LFaIaSGM2Q8gxlRy+VZ9wGB2iCHhIYU/aFytVmA/g/NNANCD75eMJ0xoUkSuRZLgTZEG/gpjOsSSFlZrgYszin0EKzorNgu97wjtQn8LnSJM9YYeCnEIq8eXUCH5DPJCc/k/eEfIC/rMJBKWMHFfZoLWtycfJ6pLntzcnzS+xbs0wpQS5X5NlLRrjt6PKakPf/elP+1TS7kvx4f/HvD+TyZ3J+af0KCi0yRZQUmZTcO4JVOcerRzJwYAV0m0ccXE+hE4wz01JEhnf+7FNTLQdOhVRZbqAnY7JCMeyJZblz+gc/x0mVhejg46TKgrvZ8EDHLOLAIt00YzPeMGNSZVFkbDCp3oKTmuck/DmcVJZnhso9AE4UQru8rXbEkSPLpm4XVU3a25K0TbtYk/tts3pYtmS52F41NSk31W5XNfUuhOy7sFTzkS6gwW15XW7Lemmb7Vq/rupFvaygh3a7qHeLZQutZsFccFNAUHEipQY4hlBFQQAlBUykKaDBDiLtlIY/ASKE0QFF35xiCkLOAEZR5BnnCi0W45QnNxq+026po4UWGYRy57kfsFLQA5UZg2YgQjQVhMKwqPHjnVp63Chwss4m4/CFYygz7Ri+WLTlD4jn9fHCgV1WaBUIx00hIdx6GskC4WgJhI952h4KUNh7omWADKfAIaPwrxqYHDAbjWxR0Ex33gEzGjC7KO/bcnNVbgnsN4TB9M8BiJEDgzPwWRA5zpKMHCcviJycw/fyy8jJYQuBBTQvcnKYzdwcRs5/6/3ahiX4tABC/RhACf19uHj9aAn0RwMIPdEyIIcz4cjNDKAQXRhAkl8vlTbLM2kWV2eiWOkzky/ZmaDi6roslGHs6kkhBcOmnIYh5SzJkHKC+5CSBvZHmKZhSEkDyRLanRVS0lia+WFI/fSwa5tNuX1aPKF4jKeE+D56vHhvCcVH4wk9vWWIzU+DxzYvngbcwng6XzZnL7dVWa/Wj+SiWT/YpLcjv7arp0SRHSwHCH0UeUsqirzMIIo0hAPVX0YRWI3UM6NIC/iCjkRR81C320coOlZPS209ACyNEgD6uPEA0BIAiEVS74mWATqcCoduZiSF7MJIevHLkyIGBlUYHkaMs8QixldjmonQ01mSseZABLHmKrsvYk2ajBozM9YUzHvORmJtX75WdVvWu6p9fFq8IT6MtwQ+9ER86JnAF8blHh9aAnzRSEVPtAzA9xO5Bz8zUkPyYaRSiJqbZ3fvbgPiySOohFMd5VjMBMc1f1Jpm34KE0cfyaAxmR+eS47YjoNWYBCswE29b+XtoiXf/0DOf/r9JWgVcOIc84ayhYsRbwqjPa8/VduGvFs8klPbDmd0pInCiEzwkSZebcuyflut1+UpeVHWm8X2buBu7MAFKXSRSc29f8CUhCTHpwUWp21jel4uHu7v11VYEkzOipEQrWJ6WiZuGdBvaiLKvxeb+3X5n+3eP1s2m/Bs7yQUWmaiWw69RXUWOLnD4ZLC0hqzyAMLd5a+HW+ZPN7zg8M9+gq/SLH9vSVxZeP9Yfnl/iZlMDGX3TH+1bs/khMj7AYApfV0WxSWOD0tyN0N+en3wTWLgF2A6e66hQWu/YUOG36u9honeyo/xmOSmSw3kghNATmDvUrD0KEF6B4UwJ51ffy27taXMLZNu6tTGJ6BndBbpnZYcFSMdp+5iHIG2HEV3Vcfh6PYw4aBa8PgUzh6aDFyantBvo8jwFEGDLQyAwZjo7Z+TJhAL4NZkzB7Kb3WU0Ku6gWj5QjFVMMxXRTTkv9wV01Vfd0kZt8P2EkvQBFPK2eQ/7TSgXLOYE+kKj3TNq4hvoKp9pYjlDPYGHiup5W/fljULVQlcdU4WKdawr8Dz5RqzkSmpQpVw2YGu2hSte2QCRaoRssRqrkQUNDZ5ZFneqwmu1g29yXh4cbABWwB3LYvMtZfZkCnzud9t/UwUn78kIDlNX4lLEiSWrIAlr12lnk6RGyHjKsQlrccAUvkUP3KIgVrsIsKqClyJr8BLNTYr6dCsyQsIWB8RRhZBcgwPL1z2g4ZDyMLLcfAkiCYimlYv1bXZVtthr8+gMXPeYzWpqnb210CFSr8uriybrABhqjcASCFynoWMtx00RKgih0AAk9vOQJyYdOi4tOQu8Ji+FsdOAJ0W+JXxaNiBeBVSsJPzYswu0uaSSX67A5mriP7u0vkMDW5VmEid5ZUIndz2idymF3jDmcf06OKnZO4PSBaZ2gZRnJ41ciey99+vOTnfwbnpHE4Pvm5cfjkF8A5vvTxGRGRhUkmigzzHzLzliG01Gij0KjcD2aKGs1TtFCP69+v1zm0MJP2tIIsE6PV501PCy0DWsnRRmnZ+h2cJmlB1XfKk8C8pG8BzGdTBBZmmigwzJ0IzFuGwFKjjd5dwKKk0kSAKX0qUsBQUh/hXfKcAwwzKgIL800MWJ8/PTC0DIAlRxsFZuR+MFPAFEvRQj3fILwwqfa0fFJN0OpTqKeFloBWNKn2nt4y4JzUGeNcCMjYsWxRMHWqUqgx+wUJqzsgzmGNp0ZkHR7CYqz7M6InhpYBsfRwY8hohwy8FcuUkSM1YVk3n5qwXkEXaQ8qI5Qvb6v67m1l3zuQcybOQGxQt1BYp3kmC8udwTnHnfVAk7RFOTRqV7JrVGMR9GbOzbOvbAANMyasbJwlVdk4pn1lI+xFnvyisrG3OFrOrGyE7kZ0+Fv4384uDNXP//fLi/Pz57PU+yoF5Yd5MiofaxLU7y1DAD6WHYF5VcoUgUGV8vXVRq86SHYx1X1t4VWjZaAaKTrV86qNKdVKsFM5S7ivGlB4mLSiwrFGQOHeMhTuQc4RLvj+6dekcE5P2RzdmPxRd5hEYrr7VO91o2WgGzn2YT4j+U/qnhXmmMR71T6JJ1T3KdurRkugOprEe09vGfBC/nPiBJP45AJR/FTPQYa5GJGFp6wYsj7zeuFoGQjH9BJkhBm5uOBgHXnMdrHY7B7qm9FkLERm9AitV4v14u9HcsE4+XPdbhfJY7LLabbGp6rPafhbzRm/IbCPcikN06+zRNJv5wiDge0wdHSWVN52/Pu8DX5cqi/y9qTG6O/MXd6G7YyxkUc+3f3O7ugiMxhDFylzOGNgI+gwMcdAoyeSRs8E6XAB7FGjZcA6LdTCTt3ZOGdfX8wKRl8NIaQwj0ej0XsiJPRMhWNQNbl49JZhQKZ0HlVHTUUkO/62x/XvN+w5nLH+6jkHZUOMM3r2nL1ngnNYp+05o2XAOanzqMptirMx9NQcfU/0LVD7ig9Rh5VKFLX3RNTomUIdVIYOtbcMUad0HnXDNIWa52ZQJMdvmPpV1ZVtc1BjkYmowyInhho9ETV6JlCHxegeNVoGqJM6IzssjuUbhCOWpD0jX5ImGKFnz8h7JhiFpeueEVoCRtFitvf0lgHdJKF4MWsfH0X2DPc0ZBDK4035moiq7hnbwTOeN+X1w/aq2t2WK7IqP1XLckcWMDz7rglMn6v2lixq8l3yKobaJ4R2n5vsKfkkhhY2yUcG+1367RQ1sN1C0Qy1sza6vxAy/mniulrekdty2/3fmMUS9O6IfwO1KdvbZtWsm5tH8vm2aktyv7gvt1mk1y6oxeDPQc3jh6S6t8/2SabMqGDesA+1qeJeZ4wW9kZLIxD7H8AOX2+RM2iYwse5hL++rOpdWe8+lX8RGPEZYbZNMG/LVbmt7nZX5fYmG3vAZl8JFXbNsowrOdIlfYbv5f4P4se8CQplbmRzdHJlYW0KZW5kb2JqCjggMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMQovQmFzZUZvbnQgL1RpbWVzLVJvbWFuCi9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nCj4+CmVuZG9iago5IDAgb2JqCjw8IC9UeXBlIC9Gb250Ci9TdWJ0eXBlIC9UeXBlMQovTmFtZSAvRjIKL0Jhc2VGb250IC9IZWx2ZXRpY2EtQm9sZAovRW5jb2RpbmcgL1dpbkFuc2lFbmNvZGluZwo+PgplbmRvYmoKMTAgMCBvYmoKPDwgL1R5cGUgL0ZvbnQKL1N1YnR5cGUgL1R5cGUxCi9OYW1lIC9GMwovQmFzZUZvbnQgL1RpbWVzLUJvbGQKL0VuY29kaW5nIC9XaW5BbnNpRW5jb2RpbmcKPj4KZW5kb2JqCjExIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovQSAxMiAwIFIKL0JvcmRlciBbMCAwIDBdCi9IIC9JCi9SZWN0IFsgMTk5LjEzNzggMTguMjE4NSAzOTYuMTQyMiAyNy4wMTg1IF0KPj4KZW5kb2JqCjEyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL1VSSQovVVJJIChodHRwczovL3Jlam9vc2UuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIzLzA2L0V2b2ljZV9FeHBsYWluZXIucGRmKQo+PgplbmRvYmoKeHJlZgowIDEzCjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwMDAwOSAwMDAwMCBuIAowMDAwMDAwMDc0IDAwMDAwIG4gCjAwMDAwMDAxMjAgMDAwMDAgbiAKMDAwMDAwMDI5NSAwMDAwMCBuIAowMDAwMDAwMzI0IDAwMDAwIG4gCjAwMDAwMDA0OTcgMDAwMDAgbiAKMDAwMDAwMDYxOSAwMDAwMCBuIAowMDAwMDAzNTI5IDAwMDAwIG4gCjAwMDAwMDM2MzggMDAwMDAgbiAKMDAwMDAwMzc1MCAwMDAwMCBuIAowMDAwMDAzODU5IDAwMDAwIG4gCjAwMDAwMDM5ODUgMDAwMDAgbiAKdHJhaWxlcgo8PAovU2l6ZSAxMwovUm9vdCAxIDAgUgovSW5mbyA1IDAgUgovSURbPGQ0MjEyYTIwY2E1NTc3NTg1NGNiOWUyNmM3NGRiYjdiPjxkNDIxMmEyMGNhNTU3NzU4NTRjYjllMjZjNzRkYmI3Yj5dCj4+CnN0YXJ0eHJlZgo0MTA0CiUlRU9GCg==",
        "country_code": "DK",
        "facility_external_id": "CPH-01",
        "rfi_external_id": "CPH-01-2023",
        "rfi_version": 1,
        "standard_rfi_external_id": "standard-2023",
        "standard_rfi_version": 1,
        "carbon_intensity_gram": 123,
        "tec_annual_kwh": 478.65,
        "total_kg_co2_eq": 1301.51,
        "manufacturing_kg_co2_eq": 650.25,
        "transportation_kg_co2_eq": 50.13,
        "eol_kg_co2_eq": 53.52,
        "status": "finalized",
        "type": "evoice",
        "source_type": "api",
        "created_at": "2024-01-05T13:11:49.000000Z",
        "updated_at": "2024-01-05T13:11:50.000000Z",
        "unit": "metric",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "company_id": "ECOF1234567",
            "vat_number": "ECOF1234567",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark"
        },
        "sender": {
            "name": "Green Supply Co. Copenhagen Branch",
            "company_id": "DK12345678",
            "vat_number": "DK12345678",
            "address": "Havnegade 12",
            "address2": "Building B",
            "zip_code": "1058",
            "city": "Copenhagen",
            "country": "Denmark"
        },
        "devices": [
            {
                "external_id": "RE8989121",
                "original_manufacturer_part_number": "62B6MAT3EU",
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "quantity": 10,
                "lifetime_months": 72,
                "tec_annual_kwh": 377.25,
                "scope_2_kg_co2_eq": 278.41,
                "scope_3_kg_co2_eq": 249.27,
                "total_kg_co2_eq": 527.68,
                "manufacturing_kg_co2_eq": null,
                "transportation_kg_co2_eq": null,
                "eol_kg_co2_eq": 18.42,
                "refurbished": true,
                "variant": "full",
                "refurbishment_impact_basis": "rfi_category",
                "excluded": false,
                "epeat_tier": "silver",
                "epeat_climate_plus": true,
                "epeat_status": "active",
                "epeat_certificate_url": "https://epeat.net/product-details/92ff91678f38486c",
                "tco_certified": true,
                "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=D1010052",
                "avoided_emissions_kg_co2_eq": 256.68
            },
            {
                "external_id": "SM-S918BZKDEEB",
                "original_manufacturer_part_number": null,
                "brand": "Samsung",
                "model_name": "Galaxy S23 Ultra",
                "category": "Smartphone",
                "quantity": 10,
                "lifetime_months": 30,
                "tec_annual_kwh": 101.4,
                "scope_2_kg_co2_eq": 31.18,
                "scope_3_kg_co2_eq": 742.65,
                "total_kg_co2_eq": 773.83,
                "manufacturing_kg_co2_eq": 650.25,
                "transportation_kg_co2_eq": 50.13,
                "eol_kg_co2_eq": 35.1,
                "refurbished": false,
                "variant": null,
                "refurbishment_impact_basis": null,
                "excluded": false,
                "epeat_tier": null,
                "epeat_climate_plus": null,
                "epeat_status": null,
                "epeat_certificate_url": null,
                "tco_certified": null,
                "tco_certificate_url": null,
                "avoided_emissions_kg_co2_eq": 0
            }
        ],
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/123456789",
            "pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf?base64=1"
        }
    }
}
Response (200, The e.voice generation failed)
{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2",
        "status": "failed",
        "failure_reason": "Product data service is temporarily unavailable. Please try again later."
    }
}
Response (202, The e.voice is still processing)
{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2",
        "status": "pending"
    }
}

Download an e.voice as PDF

Requires API key
API key ability API_EVOICE

Returns the e.voice PDF: the current document, or with changes=true the changes document, which is the same document with an old › new marker on every value an update changed since it was generated (each marker shows the field's most recent change). An e.voice that has never been updated has no changes document yet.

GET api/v3/evoices/{external_invoice_id}/pdf

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Accept required
Example: application/pdf

URL Parameters

external_invoice_id string required

The external_invoice_id of the e.voice, URL-encoded twice: 2024/001 is sent as 2024%252F001. See IDs in URLs.

Example: 123456789

Query Parameters

locale string optional

The language of the PDF: en-US (default), en-GB, en-DK (English with Danish number formatting), da-DK, de-DE, es-ES, fr-FR or nb-NO. Any other value is rejected with a 422.

Example: da-DK
unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: imperial
changes boolean optional

true returns the changes document instead of the current one. Defaults to false.

Example: 1
base64 boolean optional

true (or 1) returns the PDF as base64 in a JSON body ({"data": "..."}) instead of a binary stream. Defaults to false.

Response (200)
application/pdf The PDF file. The changes document also carries the <code>X-Evoice-Version</code> header with the version it was rendered at.
Response (202, The e.voice is still processing)
{
    "success": true,
    "data": {
        "external_invoice_id": "94825344-eb3a-4b5d-8ac8-6e462f37bba2",
        "status": "pending"
    }
}
Response (409, The e.voice failed and has no PDF)
{
    "data": null,
    "errors": {
        "conflict": [
            "Evoice with external_invoice_id 123456789 failed and has no PDF. Generate it again to replace it."
        ]
    },
    "status": 409
}
Response (409, changes=true, but the e.voice has never been updated)
{
    "data": null,
    "errors": {
        "conflict": [
            "Evoice with external_invoice_id 123456789 has no change history yet. The changes document exists once an update has changed it."
        ]
    },
    "status": 409
}

List e.voices

Requires API key
API key ability API_EVOICE

One page of your e.voices, newest first, each with its device lines but without the PDF.

GET api/v3/evoices

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

from string optional

The first day of the period (YYYY-MM-DD). Defaults to the first day of your accounting period.

Example: 2025-01-01
to string optional

The last day of the period (YYYY-MM-DD). Must be on or after from. Defaults to the last day of your accounting period.

Example: 2025-12-31
date_type string optional

The date that places an e.voice in the period: external_invoice_date (the invoice date you sent), created_at or last_updated_at. Defaults to external_invoice_date.

Example: external_invoice_date
organization_id string optional

Only e.voices of this customer organisation (the client.organization_id you sent).

Example: EcoFriendly-4987
group_slug string optional

Only e.voices of the customer organisations in this group (the slug from the groups endpoint). Must be one of your groups.

Example: nordic-offices
company_ids string[] optional

Only these companies (the client.company_id values you sent). At most 100.

Example: ["ECOF1234567"]
search string optional

Only e.voices whose invoice ID (external_invoice_id) or customer name contains this text.

Example: INV-2025-001
status string optional

Only this status: finalized, draft, pending, updating, failed, deleted, or updated for e.voices that have a revision, whatever their status. Leave it out for all.

Example: finalized
evoice_type string optional

evoice or credit_note. Leave it out for both.

Example: evoice
updated_filter string optional

updated for e.voices changed after creation only, not_updated for unchanged e.voices only. Leave it out for all.

Example: updated
metric string optional

The total that metric_min and metric_max apply to, in kg CO2e: total_kg_co2_eq, scope_3_kg_co2_eq or use_kg_co2_eq. Defaults to total_kg_co2_eq when a bound is sent without it.

Example: total_kg_co2_eq
metric_min number optional

Only e.voices whose metric is at least this value.

Example: 100
metric_max number optional

Only e.voices whose metric is at most this value. Bounds are in kg, from 0 to 99999999999, and metric_max must be at least metric_min.

Example: 5000
sort_by string optional

external_invoice_date (default) or external_invoice_id.

Example: external_invoice_date
sort_direction string optional

desc (default) or asc.

Example: desc
page integer optional

The page, from 1.

Example: 1
per_page integer optional

Rows per page, 1 to 100. Defaults to 10.

Example: 10
unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: metric
Response (200)
{
    "data": {
        "items": [
            {
                "external_invoice_id": "123456789",
                "external_invoice_date": "2025-09-25",
                "status": "finalized",
                "type": "evoice",
                "country_code": "GB",
                "total_kg_co2_eq": 1234.56,
                "manufacturing_kg_co2_eq": 912.4,
                "transportation_kg_co2_eq": 103.7,
                "eol_kg_co2_eq": 218.46,
                "devices_count": 1,
                "versions_count": 1,
                "created_at": "2025-09-25T10:12:33.000000Z",
                "updated_at": "2025-10-02T08:00:00.000000Z",
                "unit": "metric",
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "EcoFriendly-4987",
                    "company_id": "ECOF1234567",
                    "vat_number": "ECOF1234567",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark"
                },
                "devices": [
                    {
                        "external_id": "RE8989121",
                        "original_manufacturer_part_number": "62B6MAT3EU",
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "quantity": 10,
                        "lifetime_months": 72,
                        "tec_annual_kwh": 377.25,
                        "scope_2_kg_co2_eq": 278.41,
                        "scope_3_kg_co2_eq": 249.27,
                        "total_kg_co2_eq": 527.68,
                        "manufacturing_kg_co2_eq": null,
                        "transportation_kg_co2_eq": null,
                        "eol_kg_co2_eq": 18.42,
                        "refurbished": true,
                        "variant": "full",
                        "refurbishment_impact_basis": "rfi_category",
                        "excluded": false,
                        "epeat_tier": "silver",
                        "epeat_climate_plus": true,
                        "epeat_status": "active",
                        "epeat_certificate_url": "https://epeat.net/product-details/92ff91678f38486c",
                        "tco_certified": true,
                        "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=D1010052",
                        "avoided_emissions_kg_co2_eq": 256.68
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/123456789",
                    "pdf": "https://app.rejoose.com/api/v3/evoices/123456789/pdf"
                }
            }
        ],
        "filters": {
            "from": "2025-01-01",
            "to": "2025-12-31",
            "date_type": "external_invoice_date",
            "organization_id": null,
            "group_slug": null,
            "company_ids": null,
            "search": null,
            "status": null,
            "evoice_type": null,
            "updated_filter": null,
            "metric": null,
            "metric_min": null,
            "metric_max": null
        },
        "unit": "metric",
        "pagination": {
            "current_page": 1,
            "last_page": 4,
            "per_page": 10,
            "total": 37,
            "next_page_url": "https://app.rejoose.com/api/v3/evoices?page=2",
            "prev_page_url": null
        }
    },
    "errors": null,
    "status": 200
}

List e.voice clients

Requires API key
API key ability API_EVOICE

The clients you have sent e.voices to, one row per client.

Each client is listed once, told apart by organization_id, the customer id you send with each e.voice. subsidiaries lists the names, company IDs and countries your e.voices gave that client, one entry per company ID and country; names joins the names.

Search. search finds clients whose organisation id, or a subsidiary's name or company ID, has a word that starts with each word of the text: search=friendly finds "Eco-Friendly Solutions Ltd" and search=DK3333 finds company ID DK33334444, but search=3333 does not.

Paging. 10 clients per page by default, 100 at most. pagination.total is the number of clients found. Rows are sorted by organization_id.

Tip. Use the organization_id of a row as the organization_id filter of List e.voices to get that client's e.voices.

GET api/v3/evoices/clients

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

search string optional

Find clients whose organisation id, subsidiary name or company ID has a word starting with each word of this text. Up to 255 characters.

Example: eco
page integer optional

The page, from 1.

Example: 1
per_page integer optional

Clients per page, 1 to 100. Defaults to 10.

Example: 10
Response (200)
{
    "data": {
        "items": [
            {
                "organization_id": "EcoFriendly-4987",
                "names": "Eco-Friendly Solutions Ltd",
                "subsidiaries": [
                    {
                        "name": "Eco-Friendly Solutions Ltd",
                        "company_id": "ECOF1234567",
                        "vat_number": "ECOF1234567",
                        "country_code": "DK"
                    }
                ]
            },
            {
                "organization_id": "NordicOffice-2210",
                "names": "Nordic Office AB, Nordic Office Supplies A/S",
                "subsidiaries": [
                    {
                        "name": "Nordic Office AB",
                        "company_id": "SE556677889901",
                        "vat_number": "SE556677889901",
                        "country_code": "SE"
                    },
                    {
                        "name": "Nordic Office Supplies A/S",
                        "company_id": "DK22104411",
                        "vat_number": "DK22104411",
                        "country_code": "DK"
                    }
                ]
            }
        ],
        "pagination": {
            "current_page": 1,
            "last_page": 4,
            "per_page": 10,
            "total": 37,
            "next_page_url": "https://app.rejoose.com/api/v3/evoices/clients?page=2",
            "prev_page_url": null
        }
    },
    "errors": null,
    "status": 200
}

e.voice - circularity

Provides carbon footprint and avoided emissions data for IT products in the ITAD industry. This API is used when receiving used IT products for refurbishment or selling refurbished products for reuse.

The response includes:

  • Avoided emissions from refurbishing the products (kg CO2e).
  • Carbon impact of the refurbishment process itself (kg CO2e).
  • When devices have recycled=true: avoided e-waste (kg), avoided emissions from recycling (kg CO2e), and material_flow with detailed component breakdown at the document level.

The two avoided e-waste figures use different conventions:

  • refurbishment_avoided_e_waste_kg is the full device weight retained in use, because refurbishing keeps the whole device out of the waste stream.
  • recycling_avoided_e_waste_kg is the mass actually recovered as secondary material, so it is smaller than the device weight and matches the recovered mass in material_flow.

Fields per device. Every caller receives the same fields: e.voice circularities have no enterprise-only fields. Refurbished devices carry refurbishment_impact_basis, variant and rfi_per_unit_kg_co2_eq; devices with recycled=true carry recycling_avoided_e_waste_kg and recycling_avoided_emissions_kg_co2_eq, and the document carries material_flow. The list endpoint returns each document with its totals and devices exactly as the single document endpoint does, without material_flow.

Refurbishment impact. Each refurbished device is paid by your certified facility RFI, the Rejoose standard RFI, or your refurbishment percentage, and its refurbishment_impact_basis tells you which. The document carries the facility and RFI versions used. The refurbishment fields are the values set when the document was generated: the daily update refreshes a device's weight and footprint, but keeps the same RFI. See Refurbishment impact for the details.

Device weight. Transport is the only part of the certified figure that depends on the device's weight, so each device shows two parts: rfi_per_unit_fixed_kg_co2_eq (labour, parts, storage, and packaging) and rfi_transport_co2_eq_per_tonne (kg CO₂e per tonne of device). rfi_per_unit_kg_co2_eq = rfi_per_unit_fixed_kg_co2_eq + rfi_transport_co2_eq_per_tonne × weight_kg / 1000. weight_kg comes from Rejoose's product data (weight_from_product says whether it is the product's own weight or the category average). A device without a known weight uses the variant's average device weight.

Both datasets are used for customer reporting and internal documentation.

Generate an e.voice circularity

Requires API key
API key ability API_EVOICE_CIRCULARITY

Generates the e.voice circularity and returns its data.

POST api/v3/evoices/circularity/generate

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Content-Type required
Example: application/json

Body Parameters

external_doc_id   string     

A unique identifier linking the e.voice circularity to the associated document, such as a purchase order or credit note. This may also refer to any other unique identifier. Must not exceed 255 characters. Example: 123456789

external_doc_date   string     

The date of the document, such as a purchase order or credit note, following the invoicing date in ISO 8601 format (YYYY-MM-DD). Must be a valid date. Example: 2023-09-25

e_waste_kg   number  optional    

Weight of non-recycled electronics in kilograms, used for calculating the carbon emissions related to e-waste. Must be between 0 and 999999.99. Example: 10

country_code   string     

The country code from which the products are sent. Use an ISO 3166-1 alpha-2 country code or its alpha-3 form (e.g. GB or GBR; canonicalized to alpha-2 on ingest), or an ISO 3166-2 subdivision code where state-level emission factors are available: US states use the 'US-' prefix (e.g. US-CA) and Australian states use the 'AU-' prefix (e.g. AU-VIC, AU-NSW). Bare AU still resolves to the Australian national factor. Example: GB

supplier_contact   string  optional    

Optional. Supplier contact email address, visible to the customer on the e.voice circularity when provided. This can be a person or a general mailbox. Must be between 1 and 80 characters. Example: example@rejoose.com

batch_id   string  optional    

Optional. The batch of products you received as an ITAD, for example one pickup from a customer. Give every e.voice circularity from that batch the same value, and you can filter List e.voice circularities and the circularity report by it. Up to 255 characters. See Reporting IDs. Example: batch-2024-Q1-electronics

client   object     

Client information object. It carries two identifiers that decide your reporting: organization_id, which identifies your customer, and company_id, which identifies the company, branch office, or subsidiary within that customer. All reporting is aggregated on organization_id, so use one unique and static value per customer and send it on every document; a customer sent under several values is reported as several customers. Read Reporting IDs first.

name   string     

The name of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Ltd

organization_id   string     

The identifier of the customer organisation in your system, such as its customer or account number in your ERP. Every report, dashboard, list filter, and e.insights invitation is keyed on it, so send one unique and static value per customer, the same on every e.voice and e.voice circularity. Not the invoice number and not the company id. Must be between 1 and 240 characters. See Reporting IDs. Example: EcoFriendly-4987

company_id   string     

This defines the company, branch office, or subsidiary and, as with organization_id, is used for reporting purposes. This needs to be a unique static id from your ERP identifying this specific entity; it can also be a new unique identifier made for this specific purpose. Must be between 1 and 80 characters. Formerly vat_number, which is still accepted; we recommend company_id. See Reporting IDs. Example: ECOF1234567

address   string  optional    

Optional. The address of the customer as on the invoice. When provided, this line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 255 characters. Example: 100 Enviro Way

address2   string  optional    

The second line of the address of the customer as on the invoice. Must be between 1 and 255 characters. Example: Sustainability Lane 3

zip_code   string  optional    

Optional. The zip code of the customer as on the invoice. When provided, this line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: ECO321

city   string  optional    

Optional. The city of the customer as on the invoice. When provided, this line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: GreenVille

country   string     

The country of the customer as on the invoice. This line will be shown on the e.voice circularity. Can be made anonymous by e.g., inserting a dash instead (-) or similar. Must be between 1 and 80 characters. Example: Denmark

country_code   string     

The country code of the customer as on the invoice. Use an ISO 3166-1 alpha-2 country code or its alpha-3 form (e.g. DK or DNK; canonicalized to alpha-2 on ingest), or an ISO 3166-2 subdivision code. Example: DK

sender   object  optional    

Optional. Use this when your organisation issues documents from more than one office or location, and the document should show the office that sent the invoice. When sent, the sender is shown as the issuing party on the PDF instead of your registered partner details. When not sent, the PDF shows your registered partner details. A sender is identified by its name, company_id, and country: a later request with the same three values reuses the location as first stored, including its address. When sent, name, company_id, country, and country_code are required. Returned as sender, or null when not sent.

name   string     

The name of the office or location that issues the document. Required when sender is sent. Must be between 1 and 80 characters. Example: Eco-Friendly Solutions Nordic

company_id   string     

The company identifier of the office or location, such as its VAT or registration number. Together with name and country, this identifies the sender. Required when sender is sent. Must be between 1 and 80 characters. Formerly vat_number, which is still accepted. Example: DK12345678

address   string  optional    

Optional. The address of the office or location. Shown on the PDF when provided. Must be between 1 and 255 characters. Example: Havnegade 12

address2   string  optional    

Optional. The second line of the address. Shown on the PDF when provided. Must be between 1 and 255 characters. Example: 2nd floor

zip_code   string  optional    

Optional. The zip code of the office or location. Shown on the PDF when provided. Must be between 1 and 80 characters. Example: 1058

city   string  optional    

Optional. The city of the office or location. Shown on the PDF when provided. Must be between 1 and 80 characters. Example: Copenhagen

country   string     

The country of the office or location. Required when sender is sent. Must be between 1 and 80 characters. Example: Denmark

country_code   string     

The country code of the office or location. Required when sender is sent. Use an ISO 3166-1 alpha-2 country code or its alpha-3 form (e.g. DK or DNK; canonicalised to alpha-2 on ingest). Example: DK

devices   object[]     

Array of devices. You can submit multiple devices - the response example shows a typical scenario with both refurbished and recycled devices. A maximum of 500 devices per request applies by default; this limit can be changed — contact Rejoose if you would like it adjusted. Requests exceeding the limit are rejected with a 422 validation error.

external_id   string     

Provide the product's original manufacturer part number (MPN). Example: 20L5S1HE00

quantity   integer     

Number of units. Between 1 and 1000000. Example: 5

category   string     

The category information serves two purposes: together with the external_id and brand, it provides a 100% unique data set for secure product matching. In the absence of LCA data, the system can provide CA data for the brand/category. Must be between 1 and 80 characters. Example: Notebook

brand   string     

The name of the manufacturer of the product. This information, together with the external_id (MPN) and category, provides a unique data set to match carbon data to the specific product. Must be between 1 and 80 characters. Example: Lenovo

model_name   string     

Product model name. Example: ThinkPad T480

excluded   boolean  optional    

Use this if you want to exclude this product's carbon footprint and avoided emissions data from the e.voice circularity. Use cases could include products with no carbon footprint or products where the footprint has already been accounted for elsewhere. This defaults to false. Example: false

recycled   boolean  optional    

Use this to indicate whether the device has been recycled. This can be used for tracking and reporting purposes related to circular economy metrics. This defaults to false. Example: false

variant   string  optional    

The refurbishment process the device went through, for example full (repair) or light (test and wipe). Only used for refurbished devices, but checked on every device: a value the facility does not have is rejected with a 422, also on an excluded or recycled device. Optional: when you leave it out, the facility's default variant is used. Max 64 characters. See Refurbishment impact. Example: full

options   object  optional    

Settings for the request. Unknown keys are rejected.

unit   string  optional    

Specifies the unit system for weight measurements in the response. Use 'metric' for kilograms (kg) or 'imperial' for pounds (lbs). Defaults to metric. Example: metric

facility_external_id   string  optional    

The external_id of your facility that refurbished the devices. Must be your own facility, not the Rejoose standard facility. Optional: when you leave it out, your default facility is used. See Refurbishment impact. Example: CPH-01

Response (201, Refurbished device paid by the Rejoose standard RFI (no own certified RFI covers the facility and date))
{
    "data": {
        "id": 48213,
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "external_doc_date": "2026-01-22",
        "country_code": "DK",
        "batch_id": "batch-2026-Q1-electronics",
        "facility_external_id": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "standard_rfi_external_id": "standard-2026",
        "standard_rfi_version": 1,
        "e_waste_kg_co2_eq": 212.81,
        "refurbishment_impact_kg_co2_eq": 75.088,
        "refurbishment_offset_kg_co2_eq": 872.481,
        "refurbishment_avoided_e_waste_kg": 10,
        "recycling_avoided_emissions_kg_co2_eq": 52.404,
        "recycling_avoided_e_waste_kg": 1.93,
        "material_flow": {
            "total_input_kg": 352.59,
            "total_recovered_kg": 301.43,
            "recovered_percentage": 85.5,
            "components": [
                {
                    "name": "Ferrous Metal",
                    "input_percentage": 0.4,
                    "input_kg": 1.53,
                    "recovered_kg": 1.2,
                    "recovery_rate": 78.4,
                    "secondary_summary": "Steel (85%), Iron (15%)"
                },
                {
                    "name": "Printed Circuit Board",
                    "input_percentage": 0.1,
                    "input_kg": 0.36,
                    "recovered_kg": 0.29,
                    "recovery_rate": 80.6,
                    "secondary_summary": "Copper (45%), Gold (30%), Other (25%)"
                },
                {
                    "name": "Plastic",
                    "input_percentage": 0.1,
                    "input_kg": 0.31,
                    "recovered_kg": 0.22,
                    "recovery_rate": 71,
                    "secondary_summary": "Recycled Plastic (100%)"
                },
                {
                    "name": "Other",
                    "input_percentage": 0.1,
                    "input_kg": 0.39,
                    "recovered_kg": 0.22,
                    "recovery_rate": 56.4,
                    "secondary_summary": "Mixed Materials (100%)"
                },
                {
                    "name": "Batteries (alkaline)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 33.5,
                    "recovery_rate": 67,
                    "secondary_summary": "Zinc (40%), Manganese (35%), Steel (25%)"
                },
                {
                    "name": "Batteries (lead-acid)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 48,
                    "recovery_rate": 96,
                    "secondary_summary": "Lead (70%), Plastic (20%), Sulfuric Acid (10%)"
                },
                {
                    "name": "Laser cartridges",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 42.5,
                    "recovery_rate": 85,
                    "secondary_summary": "Plastic (60%), Toner (25%), Metal (15%)"
                },
                {
                    "name": "Metals (ferrous)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 49,
                    "recovery_rate": 98,
                    "secondary_summary": "Steel (90%), Iron (10%)"
                },
                {
                    "name": "Metals (non-ferrous)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 47.5,
                    "recovery_rate": 95,
                    "secondary_summary": "Aluminium (60%), Copper (40%)"
                },
                {
                    "name": "Cardboard (corrugated)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 46.5,
                    "recovery_rate": 93,
                    "secondary_summary": "Corrugated Fiber (100%)"
                },
                {
                    "name": "Plastics (mixed)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 32.5,
                    "recovery_rate": 65,
                    "secondary_summary": "Mixed Post-Consumer Plastic (100%)"
                }
            ]
        },
        "unit": "metric",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "company_id": "ECOF1234567",
            "vat_number": "ECOF1234567",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark"
        },
        "sender": {
            "name": "Green Supply Co. Copenhagen Branch",
            "company_id": "DK12345678",
            "vat_number": "DK12345678",
            "address": "Havnegade 12",
            "address2": "Building B",
            "zip_code": "1058",
            "city": "Copenhagen",
            "country": "Denmark"
        },
        "devices": [
            {
                "external_id": "20L5S1HE00",
                "amount": 5,
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "weight_kg": 2,
                "weight_from_product": true,
                "excluded": false,
                "recycled": false,
                "variant": "full",
                "data_method": "CA+",
                "epeat_tier": "silver",
                "epeat_climate_plus": true,
                "epeat_status": "active",
                "epeat_certificate_url": "https://www.epeat.net/registry/20L5S1HE00",
                "tco_certified": true,
                "tco_certificate_url": "https://tcocertified.com/product-finder/20L5S1HE00",
                "refurbishment_impact_percentage": 0.05,
                "refurbishment_impact_kg_co2_eq": 75.088,
                "refurbishment_offset_kg_co2_eq": 872.481,
                "refurbishment_impact_basis": "standard_category",
                "rfi_per_unit_kg_co2_eq": 15.017664,
                "rfi_per_unit_fixed_kg_co2_eq": 14.9,
                "rfi_transport_co2_eq_per_tonne": 78.442667,
                "refurbishment_avoided_e_waste_kg": 10,
                "recycling_avoided_e_waste_kg": 0,
                "recycling_avoided_emissions_kg_co2_eq": 0
            },
            {
                "external_id": "RE8989121",
                "amount": 2,
                "brand": "HP",
                "model_name": "EliteBook 840 G5",
                "category": "Notebook",
                "weight_kg": 2.59,
                "weight_from_product": false,
                "excluded": false,
                "recycled": true,
                "variant": null,
                "data_method": "CA",
                "epeat_tier": null,
                "epeat_climate_plus": null,
                "epeat_status": null,
                "epeat_certificate_url": null,
                "tco_certified": null,
                "tco_certificate_url": null,
                "refurbishment_impact_percentage": null,
                "refurbishment_impact_kg_co2_eq": 0,
                "refurbishment_offset_kg_co2_eq": 0,
                "refurbishment_impact_basis": null,
                "rfi_per_unit_kg_co2_eq": null,
                "rfi_per_unit_fixed_kg_co2_eq": null,
                "rfi_transport_co2_eq_per_tonne": null,
                "refurbishment_avoided_e_waste_kg": 0,
                "recycling_avoided_e_waste_kg": 1.93,
                "recycling_avoided_emissions_kg_co2_eq": 52.404
            }
        ],
        "created_at": "2026-01-24T11:33:10.000000Z",
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792",
            "pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf?base64=1"
        }
    },
    "errors": null,
    "status": 201
}

Retrieve an e.voice circularity

Requires API key
API key ability API_EVOICE_CIRCULARITY

Returns one e.voice circularity with its device lines and material_flow.

GET api/v3/evoices/circularity/{external_doc_id}

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

URL Parameters

external_doc_id string required

The external document ID, URL-encoded twice: 2024/001 is sent as 2024%252F001. See IDs in URLs.

Example: ab57e0f1-2396-430c-ba5a-339d77fda792

Query Parameters

unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: imperial
Response (200, Refurbished device paid by the Rejoose standard RFI)
{
    "data": {
        "id": 48213,
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "external_doc_date": "2026-01-22",
        "country_code": "DK",
        "batch_id": "batch-2026-Q1-electronics",
        "facility_external_id": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "standard_rfi_external_id": "standard-2026",
        "standard_rfi_version": 1,
        "e_waste_kg_co2_eq": 212.81,
        "refurbishment_impact_kg_co2_eq": 75.088,
        "refurbishment_offset_kg_co2_eq": 872.481,
        "refurbishment_avoided_e_waste_kg": 10,
        "recycling_avoided_emissions_kg_co2_eq": 52.404,
        "recycling_avoided_e_waste_kg": 1.93,
        "material_flow": {
            "total_input_kg": 352.59,
            "total_recovered_kg": 301.43,
            "recovered_percentage": 85.5,
            "components": [
                {
                    "name": "Ferrous Metal",
                    "input_percentage": 0.4,
                    "input_kg": 1.53,
                    "recovered_kg": 1.2,
                    "recovery_rate": 78.4,
                    "secondary_summary": "Steel (85%), Iron (15%)"
                },
                {
                    "name": "Printed Circuit Board",
                    "input_percentage": 0.1,
                    "input_kg": 0.36,
                    "recovered_kg": 0.29,
                    "recovery_rate": 80.6,
                    "secondary_summary": "Copper (45%), Gold (30%), Other (25%)"
                },
                {
                    "name": "Plastic",
                    "input_percentage": 0.1,
                    "input_kg": 0.31,
                    "recovered_kg": 0.22,
                    "recovery_rate": 71,
                    "secondary_summary": "Recycled Plastic (100%)"
                },
                {
                    "name": "Other",
                    "input_percentage": 0.1,
                    "input_kg": 0.39,
                    "recovered_kg": 0.22,
                    "recovery_rate": 56.4,
                    "secondary_summary": "Mixed Materials (100%)"
                },
                {
                    "name": "Batteries (alkaline)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 33.5,
                    "recovery_rate": 67,
                    "secondary_summary": "Zinc (40%), Manganese (35%), Steel (25%)"
                },
                {
                    "name": "Batteries (lead-acid)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 48,
                    "recovery_rate": 96,
                    "secondary_summary": "Lead (70%), Plastic (20%), Sulfuric Acid (10%)"
                },
                {
                    "name": "Laser cartridges",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 42.5,
                    "recovery_rate": 85,
                    "secondary_summary": "Plastic (60%), Toner (25%), Metal (15%)"
                },
                {
                    "name": "Metals (ferrous)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 49,
                    "recovery_rate": 98,
                    "secondary_summary": "Steel (90%), Iron (10%)"
                },
                {
                    "name": "Metals (non-ferrous)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 47.5,
                    "recovery_rate": 95,
                    "secondary_summary": "Aluminium (60%), Copper (40%)"
                },
                {
                    "name": "Cardboard (corrugated)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 46.5,
                    "recovery_rate": 93,
                    "secondary_summary": "Corrugated Fiber (100%)"
                },
                {
                    "name": "Plastics (mixed)",
                    "input_percentage": 14.2,
                    "input_kg": 50,
                    "recovered_kg": 32.5,
                    "recovery_rate": 65,
                    "secondary_summary": "Mixed Post-Consumer Plastic (100%)"
                }
            ]
        },
        "unit": "metric",
        "client": {
            "name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "company_id": "ECOF1234567",
            "vat_number": "ECOF1234567",
            "address": "100 Enviro Way",
            "address2": "Sustainability Lane 3",
            "zip_code": "ECO321",
            "city": "GreenVille",
            "country": "Denmark"
        },
        "sender": {
            "name": "Green Supply Co. Copenhagen Branch",
            "company_id": "DK12345678",
            "vat_number": "DK12345678",
            "address": "Havnegade 12",
            "address2": "Building B",
            "zip_code": "1058",
            "city": "Copenhagen",
            "country": "Denmark"
        },
        "devices": [
            {
                "external_id": "20L5S1HE00",
                "amount": 5,
                "brand": "Lenovo",
                "model_name": "ThinkPad T480",
                "category": "Notebook",
                "weight_kg": 2,
                "weight_from_product": true,
                "excluded": false,
                "recycled": false,
                "variant": "full",
                "data_method": "CA+",
                "epeat_tier": "silver",
                "epeat_climate_plus": true,
                "epeat_status": "active",
                "epeat_certificate_url": "https://www.epeat.net/registry/20L5S1HE00",
                "tco_certified": true,
                "tco_certificate_url": "https://tcocertified.com/product-finder/20L5S1HE00",
                "refurbishment_impact_percentage": 0.05,
                "refurbishment_impact_kg_co2_eq": 75.088,
                "refurbishment_offset_kg_co2_eq": 872.481,
                "refurbishment_impact_basis": "standard_category",
                "rfi_per_unit_kg_co2_eq": 15.017664,
                "rfi_per_unit_fixed_kg_co2_eq": 14.9,
                "rfi_transport_co2_eq_per_tonne": 78.442667,
                "refurbishment_avoided_e_waste_kg": 10,
                "recycling_avoided_e_waste_kg": 0,
                "recycling_avoided_emissions_kg_co2_eq": 0
            },
            {
                "external_id": "RE8989121",
                "amount": 2,
                "brand": "HP",
                "model_name": "EliteBook 840 G5",
                "category": "Notebook",
                "weight_kg": 2.59,
                "weight_from_product": false,
                "excluded": false,
                "recycled": true,
                "variant": null,
                "data_method": "CA",
                "epeat_tier": null,
                "epeat_climate_plus": null,
                "epeat_status": null,
                "epeat_certificate_url": null,
                "tco_certified": null,
                "tco_certificate_url": null,
                "refurbishment_impact_percentage": null,
                "refurbishment_impact_kg_co2_eq": 0,
                "refurbishment_offset_kg_co2_eq": 0,
                "refurbishment_impact_basis": null,
                "rfi_per_unit_kg_co2_eq": null,
                "rfi_per_unit_fixed_kg_co2_eq": null,
                "rfi_transport_co2_eq_per_tonne": null,
                "refurbishment_avoided_e_waste_kg": 0,
                "recycling_avoided_e_waste_kg": 1.93,
                "recycling_avoided_emissions_kg_co2_eq": 52.404
            }
        ],
        "created_at": "2026-01-24T11:33:10.000000Z",
        "links": {
            "self": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792",
            "pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf",
            "base_64_pdf": "https://app.rejoose.com/api/v3/evoices/circularity/ab57e0f1-2396-430c-ba5a-339d77fda792/pdf?base64=1"
        }
    },
    "errors": null,
    "status": 200
}

Download an e.voice circularity as PDF

Requires API key
API key ability API_EVOICE_CIRCULARITY

Returns the e.voice circularity PDF: the current document, or with changes=true the changes document, which is the same document with an old › new marker on every value an update changed since it was generated (each marker shows the field's most recent change). A document that has never been updated has no changes document yet.

GET api/v3/evoices/circularity/{external_doc_id}/pdf

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Accept required
Example: application/pdf

URL Parameters

external_doc_id string required

The external document ID, URL-encoded twice: 2024/001 is sent as 2024%252F001. See IDs in URLs.

Example: ab57e0f1-2396-430c-ba5a-339d77fda792

Query Parameters

locale string optional

The language of the PDF: en-US (default), en-GB, en-DK (English with Danish number formatting), da-DK, de-DE, es-ES, fr-FR or nb-NO. Any other value is rejected with a 422.

Example: da-DK
unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: imperial
changes boolean optional

true returns the changes document instead of the current one. Defaults to false.

Example: 1
base64 boolean optional

true (or 1) returns the PDF as base64 in a JSON body ({"data": "..."}) instead of a binary stream. Defaults to false.

Response (200)
application/pdf The PDF file
Response (409, The circularity failed and has no PDF)
{
    "data": null,
    "errors": {
        "conflict": [
            "Evoice circularity with external document id ab57e0f1-2396-430c-ba5a-339d77fda792 failed and has no PDF. Generate it again to replace it."
        ]
    },
    "status": 409,
    "meta": {
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "status": "failed",
        "failure_reason": "E.voice generation failed. Please try again later or contact support if the problem continues."
    }
}
Response (409, changes=true, but the circularity has never been updated)
{
    "data": null,
    "errors": {
        "conflict": [
            "Evoice circularity with external document id ab57e0f1-2396-430c-ba5a-339d77fda792 has no change history yet. The changes document exists once an update has changed it."
        ]
    },
    "status": 409,
    "meta": {
        "external_doc_id": "ab57e0f1-2396-430c-ba5a-339d77fda792",
        "status": "finalized",
        "versions_count": 0
    }
}

List e.voice circularities

Requires API key
API key ability API_EVOICE_CIRCULARITY

One page of your e.voice circularities, newest first, each with its device lines but without material_flow.

GET api/v3/evoices/circularity

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

from string optional

The first day of the period (YYYY-MM-DD). Defaults to the first day of your accounting period.

Example: 2025-01-01
to string optional

The last day of the period (YYYY-MM-DD). Must be on or after from. Defaults to the last day of your accounting period.

Example: 2025-12-31
date_type string optional

The date that places a document in the period: external_doc_date (the document date you sent), created_at or last_updated_at. Defaults to external_doc_date.

Example: external_doc_date
organization_id string optional

Only documents of this customer organisation (the client.organization_id you sent).

Example: EcoFriendly-4987
batch_id string optional

Only documents of this batch.

Example: batch-2024-Q1-electronics
company_ids string[] optional

Only these companies (the client.company_id values you sent). At most 100.

Example: ["ECOF1234567"]
search string optional

Only documents whose document ID (external_doc_id) or customer name contains this text.

Example: Eco-Friendly
updated_filter string optional

updated for documents changed after creation only, not_updated for unchanged documents only. Leave it out for all.

Example: updated
metric string optional

The value that metric_min and metric_max apply to, in kg: recycling_avoided_emissions_kg_co2_eq, e_waste_kg_co2_eq, refurbishment_impact_kg_co2_eq, refurbishment_offset_kg_co2_eq, refurbishment_avoided_e_waste_kg or recycling_avoided_e_waste_kg. Defaults to recycling_avoided_emissions_kg_co2_eq when a bound is sent without it.

Example: e_waste_kg_co2_eq
metric_min number optional

Only documents whose metric is at least this value.

Example: 100
metric_max number optional

Only documents whose metric is at most this value. Bounds are in kg, from 0 to 99999999999, and metric_max must be at least metric_min.

Example: 5000
sort_by string optional

external_doc_date (default) or external_doc_id.

Example: external_doc_date
sort_direction string optional

desc (default) or asc.

Example: desc
page integer optional

The page, from 1.

Example: 1
per_page integer optional

Rows per page, 1 to 100. Defaults to 10.

Example: 10
unit string optional

Unit system for weights and footprints: metric (default) or imperial.

Example: metric
Response (200)
{
    "data": {
        "items": [
            {
                "external_doc_id": "123456789",
                "external_doc_date": "2025-09-25",
                "status": "finalized",
                "country_code": "GB",
                "batch_id": "batch-2024-Q1-electronics",
                "e_waste_kg_co2_eq": 812.4,
                "refurbishment_impact_kg_co2_eq": 96.2,
                "refurbishment_offset_kg_co2_eq": 1540.7,
                "refurbishment_avoided_e_waste_kg": 210.5,
                "recycling_avoided_emissions_kg_co2_eq": 331.9,
                "recycling_avoided_e_waste_kg": 88.3,
                "devices_count": 1,
                "versions_count": 0,
                "last_updated_at": null,
                "created_at": "2025-09-25T10:12:33.000000Z",
                "unit": "metric",
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "EcoFriendly-4987",
                    "company_id": "ECOF1234567",
                    "vat_number": "ECOF1234567",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark"
                },
                "devices": [
                    {
                        "external_id": "20L5S1HE00",
                        "amount": 5,
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "weight_kg": 2,
                        "weight_from_product": true,
                        "excluded": false,
                        "recycled": false,
                        "variant": "full",
                        "data_method": "CA+",
                        "epeat_tier": "silver",
                        "epeat_climate_plus": true,
                        "epeat_status": "active",
                        "epeat_certificate_url": "https://www.epeat.net/registry/20L5S1HE00",
                        "tco_certified": true,
                        "tco_certificate_url": "https://tcocertified.com/product-finder/20L5S1HE00",
                        "refurbishment_impact_percentage": 0.05,
                        "refurbishment_impact_kg_co2_eq": 75.088,
                        "refurbishment_offset_kg_co2_eq": 872.481,
                        "refurbishment_impact_basis": "standard_category",
                        "rfi_per_unit_kg_co2_eq": 15.017664,
                        "rfi_per_unit_fixed_kg_co2_eq": 14.9,
                        "rfi_transport_co2_eq_per_tonne": 78.442667,
                        "refurbishment_avoided_e_waste_kg": 10,
                        "recycling_avoided_e_waste_kg": 0,
                        "recycling_avoided_emissions_kg_co2_eq": 0
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/circularity/123456789",
                    "pdf": "https://app.rejoose.com/api/v3/evoices/circularity/123456789/pdf"
                }
            }
        ],
        "filters": {
            "from": "2025-01-01",
            "to": "2025-12-31",
            "date_type": "external_doc_date",
            "organization_id": null,
            "batch_id": null,
            "company_ids": null,
            "search": null,
            "updated_filter": null,
            "metric": null,
            "metric_min": null,
            "metric_max": null
        },
        "unit": "metric",
        "pagination": {
            "current_page": 1,
            "last_page": 2,
            "per_page": 10,
            "total": 14,
            "next_page_url": "https://app.rejoose.com/api/v3/evoices/circularity?page=2",
            "prev_page_url": null
        }
    },
    "errors": null,
    "status": 200
}

List e.voice circularity clients

Requires API key
API key ability API_EVOICE_CIRCULARITY

The clients you have sent circularity documents to, one row per client.

Each client is listed once, told apart by organization_id, the customer id you send with each circularity document. subsidiaries lists the names, company IDs and countries your circularity documents gave that client, one entry per company ID and country; names joins the names.

Search. search finds clients whose organisation id, or a subsidiary's name or company ID, has a word that starts with each word of the text: search=friendly finds "Eco-Friendly Solutions Ltd" and search=DK3333 finds company ID DK33334444, but search=3333 does not.

Paging. 10 clients per page by default, 100 at most. pagination.total is the number of clients found. Rows are sorted by organization_id.

Tip. Use the organization_id of a row as the organization_id filter of List e.voice circularities to get that client's circularity documents.

GET api/v3/evoices/circularity/clients

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

search string optional

Find clients whose organisation id, subsidiary name or company ID has a word starting with each word of this text. Up to 255 characters.

Example: eco
page integer optional

The page, from 1.

Example: 1
per_page integer optional

Clients per page, 1 to 100. Defaults to 10.

Example: 10
Response (200)
{
    "data": {
        "items": [
            {
                "organization_id": "EcoFriendly-4987",
                "names": "Eco-Friendly Solutions Ltd",
                "subsidiaries": [
                    {
                        "name": "Eco-Friendly Solutions Ltd",
                        "company_id": "ECOF1234567",
                        "vat_number": "ECOF1234567",
                        "country_code": "DK"
                    }
                ]
            },
            {
                "organization_id": "NordicOffice-2210",
                "names": "Nordic Office AB, Nordic Office Supplies A/S",
                "subsidiaries": [
                    {
                        "name": "Nordic Office AB",
                        "company_id": "SE556677889901",
                        "vat_number": "SE556677889901",
                        "country_code": "SE"
                    },
                    {
                        "name": "Nordic Office Supplies A/S",
                        "company_id": "DK22104411",
                        "vat_number": "DK22104411",
                        "country_code": "DK"
                    }
                ]
            }
        ],
        "pagination": {
            "current_page": 1,
            "last_page": 4,
            "per_page": 10,
            "total": 37,
            "next_page_url": "https://app.rejoose.com/api/v3/evoices/circularity/clients?page=2",
            "prev_page_url": null
        }
    },
    "errors": null,
    "status": 200
}

Reports

Generate aggregate PDF reports of your e.voice and e.voice circularity data over a period, and fetch reports that were queued.

For supplier partners only. The report endpoints are available to supplier partners, the organisations that issue e.voices and e.voice circularities. A request from any other partner type is refused with a 403. The RCIBR report needs an API key with the e.voice circularity ability, the CSR report one with the e.voice ability, and the report request endpoints accept either.

How a report is delivered:

  • By default the request is synchronous: the response is the PDF file (200).
  • A large period can take longer than the request time limit (about 30 seconds). Then the API queues the report and answers 202 with a report_request. Its fallback_reason tells you why.
  • Send deferred=true to run the report as a background job and always get 202 at once. This is the same deferred flag as in e.voice generation, but here false can still answer 202 when the time limit is reached.
  • After a 202, poll links.status (also in the Location header; wait the Retry-After seconds between polls) until status is completed, then call links.download for a download link. The link is valid for 5 minutes. A queued report is kept for 7 days.
  • Sending the same request again while it is queued or processing returns the same report request; it does not queue a second report. You can have at most 10 reports queued or processing at a time.

The 200 response is always the raw PDF (Content-Type: application/pdf), whatever the Accept header; send base64=true for a JSON body. Treat an unknown status or fallback_reason value as "not finished".

Only supplier partners can use this endpoint. The API report does not contain the "Company-Level Carbon Data" section (the table per company id); the report you generate in e.hub keeps it. The 25 requests per minute and the 10 outstanding reports are shared with the CSR endpoint. An unchanged period is served from a cache, so a repeated request is fast; the X-Report-Cache response header is hit or miss.

Generate RCIBR report

Requires API key
API key ability API_EVOICE_CIRCULARITY

Generates the RCIBR (IT Carbon Impact Benefits Report) of your circularity data as a PDF.

POST api/v3/reports/supplier-rcibr

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Content-Type required
Example: application/json

Body Parameters

organization_name   string     

The customer name printed on the report. Must not exceed 255 characters. Example: Eco-Friendly Solutions Ltd

from   string     

The first day of the period (YYYY-MM-DD). Example: 2025-01-01

to   string     

The last day of the period (YYYY-MM-DD). Must be on or after from. Example: 2025-12-31

organization_id   string  optional    

Only include e.voice circularities of this customer organisation (the client.organization_id you sent). Leave it out for all customers. Must not exceed 240 characters. Example: EcoFriendly-4987

batch_id   string  optional    

Only include e.voice circularities of this batch. Must not exceed 255 characters. Example: batch-2024-Q1-electronics

date_type   string  optional    

The date that places a document in the period: external_doc_date (the document date you sent), created_at or last_updated_at. Defaults to external_doc_date. Example: external_doc_date

company_ids   string[]  optional    

Only include these companies (the client.company_id values you sent). At most 100.

search   string  optional    

Only include documents whose document ID (external_doc_id) or customer name contains this text. Must not exceed 255 characters. Example: Eco-Friendly

updated_filter   string  optional    

updated for documents changed after creation only, not_updated for unchanged documents only. Leave it out for all. Example: updated

metric   string  optional    

The value that metric_min and metric_max apply to, in kg: recycling_avoided_emissions_kg_co2_eq, e_waste_kg_co2_eq, refurbishment_impact_kg_co2_eq, refurbishment_offset_kg_co2_eq, refurbishment_avoided_e_waste_kg or recycling_avoided_e_waste_kg. Example: e_waste_kg_co2_eq

metric_min   number  optional    

Only include documents whose metric is at least this value. Example: 100

metric_max   number  optional    

Only include documents whose metric is at most this value. Example: 5000

locale   string  optional    

The report language. One of en-US, en-GB, en-DK, da-DK, de-DE, es-ES, fr-FR, nb-NO. Defaults to en-US. Example: en-US

unit   string  optional    

metric or imperial. Defaults to metric. Example: metric

deferred   boolean  optional    

true always queues the report as a background job and returns 202. false (default) returns the PDF when it is ready in time. Example: false

base64   boolean  optional    

Synchronous only (not allowed with deferred=true). Return the PDF base64-encoded in data.pdf_base64 of a JSON body instead of the raw file. Example: false

Response (200, The PDF file (Content-Type: application/pdf))
%PDF-1.7 (binary PDF data)
Response (202, Queued (deferred=true, or the time limit was reached))
{
    "data": {
        "report_request": {
            "id": "9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47",
            "type": "supplier_rcibr",
            "status": "queued",
            "filters": {
                "from": "2025-01-01",
                "to": "2025-12-31",
                "organization_name": "Eco-Friendly Solutions Ltd",
                "organization_id": "EcoFriendly-4987",
                "batch_id": null,
                "date_type": "external_doc_date",
                "company_ids": null,
                "search": null,
                "updated_filter": null
            },
            "locale": "en-US",
            "unit": "metric",
            "fallback_reason": "sync_deadline",
            "error": null,
            "requested_at": "2026-09-23T10:15:02+00:00",
            "started_at": null,
            "completed_at": null,
            "expires_at": "2026-09-30T10:15:02+00:00",
            "links": {
                "status": "https://app.rejoose.com/api/v3/reports/requests/9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47",
                "download": "https://app.rejoose.com/api/v3/reports/requests/9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47/download"
            }
        }
    },
    "errors": null,
    "status": 202
}
Response (422, No documents in the period)
{
    "data": null,
    "errors": {
        "unprocessable": [
            "No e.voices found for the organization_id/group for the selected period."
        ]
    },
    "status": 422
}
Response (429, Too many reports in progress)
{
    "data": null,
    "errors": {
        "too_many_requests": [
            "You already have 10 reports in progress. Wait until one is completed, then try again."
        ]
    },
    "status": 429
}

Generate CSR report

Requires API key
API key ability API_EVOICE

Generates the CSR (IT Corporate Sustainability Report) of your e.voice data as a PDF.

POST api/v3/reports/supplier-csr

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Content-Type required
Example: application/json

Body Parameters

organization_name   string     

The customer name printed on the report. Must not exceed 255 characters. Example: Eco-Friendly Solutions Ltd

from   string     

The first day of the period (YYYY-MM-DD). Example: 2025-01-01

to   string     

The last day of the period (YYYY-MM-DD). Must be on or after from. Example: 2025-12-31

organization_id   string  optional    

Only include e.voices of this customer organisation (the client.organization_id you sent). Leave it out for all customers. Must not exceed 240 characters. Example: EcoFriendly-4987

group_slug   string  optional    

Only include e.voices of the customer organisations in this group (the slug from the groups endpoint). Must be one of your groups. Example: nordic-offices

date_type   string  optional    

The date that places an e.voice in the period: external_invoice_date (the invoice date you sent), created_at or last_updated_at. Defaults to external_invoice_date. Example: external_invoice_date

company_ids   string[]  optional    

Only include these companies (the client.company_id values you sent). At most 100.

search   string  optional    

Only include e.voices whose invoice ID (external_invoice_id) or customer name contains this text. Must not exceed 255 characters. Example: INV-2025-001

status   string  optional    

The e.voice status to include: finalized (default), draft, pending, updating, failed, deleted, or updated for e.voices that have a revision, whatever their status. Example: finalized

evoice_type   string  optional    

evoice or credit_note. Leave it out for both. Example: evoice

updated_filter   string  optional    

updated for e.voices changed after creation only, not_updated for unchanged e.voices only. Leave it out for all. Example: updated

metric   string  optional    

The total that metric_min and metric_max apply to, in kg CO2e: total_kg_co2_eq, scope_3_kg_co2_eq or use_kg_co2_eq. Example: total_kg_co2_eq

metric_min   number  optional    

Only include e.voices whose metric is at least this value. Example: 100

metric_max   number  optional    

Only include e.voices whose metric is at most this value. Example: 5000

locale   string  optional    

The report language. One of en-US, en-GB, en-DK, da-DK, de-DE, es-ES, fr-FR, nb-NO. Defaults to en-US. Example: en-US

unit   string  optional    

metric or imperial. Defaults to metric. Example: metric

deferred   boolean  optional    

true always queues the report as a background job and returns 202. false (default) returns the PDF when it is ready in time. Example: false

base64   boolean  optional    

Synchronous only (not allowed with deferred=true). Return the PDF base64-encoded in data.pdf_base64 of a JSON body instead of the raw file. Example: false

Response (200, The PDF file (Content-Type: application/pdf))
%PDF-1.7 (binary PDF data)
Response (202, Queued (deferred=true, or the time limit was reached))
{
    "data": {
        "report_request": {
            "id": "7c1a9e52-0d3b-4f6e-8a21-5b9d4e7f0c13",
            "type": "supplier_csr",
            "status": "queued",
            "filters": {
                "from": "2025-01-01",
                "to": "2025-12-31",
                "organization_name": "Eco-Friendly Solutions Ltd",
                "organization_id": "EcoFriendly-4987",
                "group_slug": null,
                "date_type": "external_invoice_date",
                "company_ids": null,
                "search": null,
                "status": "finalized",
                "evoice_type": null,
                "updated_filter": null
            },
            "locale": "en-US",
            "unit": "metric",
            "fallback_reason": "sync_deadline",
            "error": null,
            "requested_at": "2026-10-29T10:15:02+00:00",
            "started_at": null,
            "completed_at": null,
            "expires_at": "2026-11-05T10:15:02+00:00",
            "links": {
                "status": "https://app.rejoose.com/api/v3/reports/requests/7c1a9e52-0d3b-4f6e-8a21-5b9d4e7f0c13",
                "download": "https://app.rejoose.com/api/v3/reports/requests/7c1a9e52-0d3b-4f6e-8a21-5b9d4e7f0c13/download"
            }
        }
    },
    "errors": null,
    "status": 202
}
Response (422, No e.voices in the period)
{
    "data": null,
    "errors": {
        "unprocessable": [
            "No e.voices found for the organization_id/group for the selected period."
        ]
    },
    "status": 422
}
Response (429, Too many reports in progress)
{
    "data": null,
    "errors": {
        "too_many_requests": [
            "You already have 10 reports in progress. Wait until one is completed, then try again."
        ]
    },
    "status": 429
}

Retrieve a report request

Requires API key
API key ability API_EVOICE or API_EVOICE_CIRCULARITY

Returns a queued report request and its status: queued, processing, completed or failed. A failed request has an error text; request the report again. A request older than 7 days is gone (404).

GET api/v3/reports/requests/{reportRequestId}

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

URL Parameters

reportRequestId string required

The id of the report request from the 202 response.

Example: 9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47
Response (200)
{
    "data": {
        "id": "9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47",
        "type": "supplier_rcibr",
        "status": "completed",
        "filters": {
            "from": "2025-01-01",
            "to": "2025-12-31",
            "organization_name": "Eco-Friendly Solutions Ltd",
            "organization_id": "EcoFriendly-4987",
            "batch_id": null,
            "date_type": "external_doc_date",
            "company_ids": null,
            "search": null,
            "updated_filter": null
        },
        "locale": "en-US",
        "unit": "metric",
        "fallback_reason": "sync_deadline",
        "error": null,
        "requested_at": "2026-09-23T10:15:02+00:00",
        "started_at": "2026-09-23T10:15:03+00:00",
        "completed_at": "2026-09-23T10:15:41+00:00",
        "expires_at": "2026-09-30T10:15:02+00:00",
        "links": {
            "status": "https://app.rejoose.com/api/v3/reports/requests/9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47",
            "download": "https://app.rejoose.com/api/v3/reports/requests/9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47/download"
        }
    },
    "errors": null,
    "status": 200
}

Get a report download link

Requires API key
API key ability API_EVOICE or API_EVOICE_CIRCULARITY

Returns a download link for a completed report. The link is valid for 5 minutes; call this endpoint again for a new one. The report is kept for 7 days after the request.

GET api/v3/reports/requests/{reportRequestId}/download

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

URL Parameters

reportRequestId string required

The id of the report request from the 202 response.

Example: 9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47
Response (200)
{
    "data": {
        "url": "https://cdn.rejoose.io/api/reports/a1b2c3/9d2f6c1e-4b7a-4c8e-9f3d-2a6b8c0e1f47.pdf?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Expires=300&X-Amz-Signature=...",
        "file_name": "supplier_rcibr_2025-01-01-2025-12-31.pdf",
        "expires_at": "2026-09-23T10:21:12+00:00"
    },
    "errors": null,
    "status": 200
}
Response (409, Not completed yet)
{
    "data": null,
    "errors": {
        "conflict": [
            "The report is not ready yet. Poll the status link until the status is completed."
        ]
    },
    "status": 409
}

e.product

The e.product API provides carbon footprint data for individual products, making it ideal for use in e-commerce, quotations, and other during-sales scenarios where a general carbon assessment is needed. For more detailed, transaction-specific reporting at the customer level, you should be using the e.voice API, which complements e.product by focusing on post-sales impact and needed documentation.

How Product Identification Works

In this solution, one product is defined as a country-specific dataset based on a combination of:

  • Manufacturer Part Number (MPN): The unique manufacturer part number (SKU/MPN) provided by the vendor or distributor, or an internal part number.
  • Brand: The product manufacturer's name. Used together with the MPN and category to ensure a unique data match.
  • Category: Used alongside the external ID and brand to ensure accurate product matching. Also enables the system to provide carbon data for the category when specific LCA data is unavailable.

This ensures that the footprint reflects region-specific factors such as electricity mix and product lifecycle variations.

API Response

When querying the e.product endpoint, the API returns the following carbon footprint data:

  • Total carbon footprint (LCA) – The full lifecycle emissions of a product, e.g., 33.3 kg CO₂e.
  • Refurbishment impact (LCA) – The emissions from refurbishing the product instead of manufacturing a new one, e.g., 3.5 kg CO₂e
  • Avoided emissions by choosing refurbished – The emissions savings when selecting a refurbished product over a new one, e.g., 28.0 kg CO₂e.
  • Data match – will be true if the response includes LCA data - matching either a product or category
  • Product match – will be true if the manufacturer part number and brand match a product
  • Refurbishment impact basis – for a refurbished product, refurbishment_impact_basis tells you whether your certified facility RFI, the Rejoose standard RFI, or your refurbishment percentage was used, and rfi_external_id, rfi_version, and variant name the figure. The answer uses the RFI that applies today and is not stored. See Refurbishment impact.

Reading the response

  • New product – send neither refurbished nor recycled. This is the default path, and the only one where tec_kwh is returned; it is null for refurbished and recycled products.
  • Refurbished product – under cut-off allocation the production burden stays with the product's first life, so manufacturing_kg_co2_eq and transportation_kg_co2_eq are 0 and total_kg_co2_eq = refurbishment_impact_kg_co2_eq + use_kg_co2_eq + end_of_life_kg_co2_eq.
  • Recycled product – requires e.product+; without it the request is refused with a 422 on recycled and nothing is billed. recycling_avoided_e_waste_kg is the mass actually recovered as secondary material, so it equals material_flow.total_recovered_kg and is smaller than the device weight. This is the opposite convention to refurbishment avoided e-waste (refurbishment_avoided_e_waste_kg, reported by the e.voice circularity API), which is the full device weight retained in use.
  • refurbished and recycled cannot be combined on one product: on e.product+ the request is accepted, but the recycled flag suppresses the carbon intensity, lifetime and life cycle stage values, so query the product as either refurbished or recycled, never both.

Please look through the API docs for more details or contact support@rejoose.com for assistance.

Usage limit

Your subscription covers a number of unique products per subscription period. A product counts once per manufacturer part number, brand and country (refurbished and recycled products once regardless of country), and only when data is returned. Retrieving a product you already retrieved in the period is free and stays possible after the limit is reached; only products new to the period are then refused with a 403 that names them.


e.product+

e.product+ is an extended version of e.product that returns full life cycle assessment (LCA) data for a product, rather than the total carbon footprint alone. A standard e.product response provides the total carbon footprint, refurbishment impact, and avoided emissions; e.product+ adds the breakdown behind the total.

Additional fields:

  • manufacturing_kg_co2_eq
  • transportation_kg_co2_eq
  • use_kg_co2_eq
  • end_of_life_kg_co2_eq
  • tec_kwh

Recycled lookups (recycled=1) are available on e.product+ only, and the response includes:

  • recycling_avoided_e_waste_kg
  • recycling_avoided_emissions_kg_co2_eq
  • material_flow

e.product+ requires a separate subscription; without it the additional fields are left out of the response entirely (they are not returned as null) and recycled lookups are refused with a 422. To enable access, contact support@rejoose.com.

Look up a product

Requires API key
API key ability API_PRODUCT

The GET endpoint returns the carbon footprint data of a single product.

GET api/v3/products

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

manufacturer_part_number string required

The unique manufacturer part number (SKU/MPN) provided by the vendor or distributor, or an internal part number.

Example: 21MMSEJC00
brand string required

The product manufacturer's name. Used together with the MPN and category to ensure a unique data match.

Example: Lenovo
category string required

Used alongside the external ID and brand to ensure accurate product matching. Also enables the system to provide carbon data for the category when specific LCA data is unavailable.

Example: Notebook
country_code string required

The country where the product is typically used. Use an ISO 3166-1 alpha-2 country code, or an ISO 3166-2 subdivision code where state-level emission factors are available: US states use the 'US-' prefix (e.g. US-CA) and Australian states use the 'AU-' prefix (e.g. AU-VIC, AU-NSW). Bare AU still resolves to the Australian national factor. Determines the carbon intensity used in calculations.

Example: GB
refurbished integer optional

optional Indicates whether the product is refurbished (pre-owned). A value of 1 denotes a refurbished product. Cannot be combined with recycled.

Example: 1
recycled integer optional

optional Indicates whether the product is recycled. A value of 1 denotes a recycled product. Requires e.product+; without it the request is refused with a 422. Cannot be combined with refurbished, so the example request below sends only refurbished. Leave both out for a new product.

facility_external_id string optional

optional The external_id of your facility that refurbished the product. Must be your own facility, not the Rejoose standard facility. Only used when refurbished is 1. When you leave it out, your default facility is used. See Refurbishment impact.

variant string optional

optional The refurbishment process the product went through, for example full (repair) or light (test and wipe). Only used when refurbished is 1. When you leave it out, the facility's default variant is used. A value the facility does not have is rejected with a 422. Max 64 characters. See Refurbishment impact.

unit string optional

optional Unit preference for the response. Defaults to 'metric', which returns the kg and gram fields only. 'imperial' keeps those fields and adds a converted lb counterpart next to each of them (for example total_lb_co2_eq next to total_kg_co2_eq), so only an imperial response carries both units. Accepted values: 'metric', 'imperial'.

Example: imperial
Response (200, Refurbished product)
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": true,
        "recycled": false,
        "data_match": true,
        "product_match": true,
        "data_method": "MS",
        "total_kg_co2_eq": 17.582,
        "carbon_intensity_gram": 130.96,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": 8.618,
        "refurbishment_offset_kg_co2_eq": 146.74,
        "refurbishment_impact_basis": "standard_category",
        "rfi_external_id": "standard-2026",
        "rfi_version": 1,
        "variant": "full",
        "rfi_per_unit_fixed_kg_co2_eq": 8.5,
        "rfi_transport_co2_eq_per_tonne": 78.442667,
        "rfi_weight_basis": "device"
    },
    "errors": null,
    "status": 200
}
Response (200, New product (neither refurbished nor recycled))
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": false,
        "recycled": false,
        "data_match": true,
        "product_match": true,
        "data_method": "MS",
        "total_kg_co2_eq": 175.984,
        "carbon_intensity_gram": 130.96,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null,
        "refurbishment_impact_basis": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "variant": null,
        "rfi_per_unit_fixed_kg_co2_eq": null,
        "rfi_transport_co2_eq_per_tonne": null,
        "rfi_weight_basis": null
    },
    "errors": null,
    "status": 200
}
Response (200, Refurbished product, e.product+ (requires 'e.product-plus' for the detailed LCA breakdown))
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": true,
        "recycled": false,
        "data_match": true,
        "product_match": true,
        "data_method": "MS",
        "total_kg_co2_eq": 17.582,
        "carbon_intensity_gram": 130.96,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": 8.618,
        "refurbishment_offset_kg_co2_eq": 146.74,
        "refurbishment_impact_basis": "standard_category",
        "rfi_external_id": "standard-2026",
        "rfi_version": 1,
        "variant": "full",
        "rfi_per_unit_fixed_kg_co2_eq": 8.5,
        "rfi_transport_co2_eq_per_tonne": 78.442667,
        "rfi_weight_basis": "device",
        "manufacturing_kg_co2_eq": 0,
        "transportation_kg_co2_eq": 0,
        "use_kg_co2_eq": 7.638,
        "end_of_life_kg_co2_eq": 1.326,
        "tec_kwh": null,
        "recycling_avoided_e_waste_kg": null,
        "recycling_avoided_emissions_kg_co2_eq": null,
        "material_flow": null,
        "epeat_tier": "gold",
        "epeat_climate_plus": true,
        "epeat_status": "active",
        "epeat_certificate_url": "https://epeat.net/product-details/EPEAT-21MMSEJC00",
        "tco_certified": true,
        "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=TCO-21MMSEJC00"
    },
    "errors": null,
    "status": 200
}
Response (200, Recycled product, e.product+ (adds recycling_avoided_e_waste_kg, recycling_avoided_emissions_kg_co2_eq and material_flow))
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": false,
        "recycled": true,
        "data_match": true,
        "product_match": true,
        "data_method": "MS",
        "total_kg_co2_eq": null,
        "carbon_intensity_gram": null,
        "lifetime_month": null,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null,
        "refurbishment_impact_basis": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "variant": null,
        "rfi_per_unit_fixed_kg_co2_eq": null,
        "rfi_transport_co2_eq_per_tonne": null,
        "rfi_weight_basis": null,
        "manufacturing_kg_co2_eq": null,
        "transportation_kg_co2_eq": null,
        "use_kg_co2_eq": null,
        "end_of_life_kg_co2_eq": null,
        "tec_kwh": null,
        "recycling_avoided_e_waste_kg": 0.547,
        "recycling_avoided_emissions_kg_co2_eq": 1.612,
        "material_flow": {
            "total_input_kg": 1.38,
            "total_recovered_kg": 0.547,
            "recovered_percentage": 39.6,
            "primary_components": "Plastic (27%), Battery (18%), Flat-Panel Display Module (16%), Printed Circuit Board (14%), Aluminum (12%), Ferrous Metal (7%), Other Metals (4%), Copper (2%)",
            "secondary_components": "Aluminum sheet (28%), Steel sheet (24%), Copper wire (21%), Lithium cobalt oxide (15%), HDPE (6%), Nickel (3%), PET (2%), Precious metals (Au/Ag/Pd) (0.049%)"
        },
        "epeat_tier": null,
        "epeat_climate_plus": null,
        "epeat_status": null,
        "epeat_certificate_url": null,
        "tco_certified": null,
        "tco_certificate_url": null
    },
    "errors": null,
    "status": 200
}
Response (200, New product, e.product+ (the only case that returns tec_kwh))
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": false,
        "recycled": false,
        "data_match": true,
        "product_match": true,
        "data_method": "MS",
        "total_kg_co2_eq": 175.984,
        "carbon_intensity_gram": 130.96,
        "lifetime_month": 48,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null,
        "refurbishment_impact_basis": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "variant": null,
        "rfi_per_unit_fixed_kg_co2_eq": null,
        "rfi_transport_co2_eq_per_tonne": null,
        "rfi_weight_basis": null,
        "manufacturing_kg_co2_eq": 156.28,
        "transportation_kg_co2_eq": 10.74,
        "use_kg_co2_eq": 7.638,
        "end_of_life_kg_co2_eq": 1.326,
        "tec_kwh": 14.58,
        "recycling_avoided_e_waste_kg": null,
        "recycling_avoided_emissions_kg_co2_eq": null,
        "material_flow": null,
        "epeat_tier": null,
        "epeat_climate_plus": null,
        "epeat_status": null,
        "epeat_certificate_url": null,
        "tco_certified": true,
        "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=TCO-21MMSEJC00"
    },
    "errors": null,
    "status": 200
}
Response (403, No e.product subscription)
{
    "data": null,
    "errors": {
        "forbidden": [
            "E/product is not enabled for your organization. Contact us on \"sales@rejoose.com\" or \"+45 71 74 70 30\" to enable it."
        ]
    },
    "status": 403
}
Response (403, Usage limit reached and the product is new to the subscription period)
{
    "data": null,
    "errors": {
        "forbidden": [
            "Your max limit on E/product is reached. Contact us on \"sales@rejoose.com\" or \"+45 71 74 70 30\" to change your limit. Products already retrieved in this subscription period remain available. Not yet retrieved: 21MMSEJC00 (Lenovo, refurbished)."
        ]
    },
    "status": 403
}
Response (404, No product or category data was found: data_match is false, the carbon data is null and errors.not_found explains the miss)
{
    "data": {
        "manufacturer_part_number": "21MMSEJC00",
        "brand": "Lenovo",
        "category": "Notebook",
        "country_code": "GB",
        "refurbished": false,
        "recycled": false,
        "data_match": false,
        "product_match": false,
        "data_method": null,
        "total_kg_co2_eq": null,
        "carbon_intensity_gram": null,
        "lifetime_month": null,
        "refurbishment_impact_kg_co2_eq": null,
        "refurbishment_offset_kg_co2_eq": null,
        "refurbishment_impact_basis": null,
        "rfi_external_id": null,
        "rfi_version": null,
        "variant": null,
        "rfi_per_unit_fixed_kg_co2_eq": null,
        "rfi_transport_co2_eq_per_tonne": null,
        "rfi_weight_basis": null
    },
    "errors": {
        "not_found": [
            "Product (21MMSEJC00 + Lenovo) and category (Notebook) not found"
        ]
    },
    "status": 404
}
Response (422, Recycled product without e.product+)
{
    "data": null,
    "errors": {
        "recycled": [
            "Recycled lookups require an e.product+ subscription. To enable access, contact support@rejoose.com."
        ]
    },
    "status": 422
}

Look up products in bulk

Requires API key
API key ability API_PRODUCT

Returns the carbon footprint data of 1 to 100 products in one request. Each entry is identified like a single lookup (manufacturer part number, brand, category and country) and carries its own refurbished or recycled flag, facility and variant, so one batch can mix new, refurbished and recycled products from different facilities. The response holds one entry per product, in request order; an entry without product or category data comes back with data_match false and null carbon data while the batch itself still answers 200. For larger catalogues, send several batches.

What a product is, how to read an entry, the usage limit and e.product+ are described at the top of this section.

POST api/v3/products

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}
Content-Type required
Example: application/json

Body Parameters

products   object[]     

The array of products. This array must not exceed 100 items. Each entry is documented as either refurbished, recycled, or new — a new product simply omits both flags, as in the third entry below.

manufacturer_part_number   string     

The unique manufacturer part number (SKU/MPN) provided by the vendor or distributor, or an internal part number. Example: 21MMSEJC00

brand   string     

The product manufacturer's name. Used together with the MPN and category to ensure a unique data match. Example: Lenovo

category   string     

Used alongside the external ID and brand to ensure accurate product matching. Also enables the system to provide carbon data for the category when specific LCA data is unavailable. Example: Notebook

country_code   string     

The country where the product is typically used. Use an ISO 3166-1 alpha-2 country code, or an ISO 3166-2 subdivision code where state-level emission factors are available: US states use the 'US-' prefix (e.g. US-CA) and Australian states use the 'AU-' prefix (e.g. AU-VIC, AU-NSW). Bare AU still resolves to the Australian national factor. Determines the carbon intensity used in calculations. Example: GB

refurbished   boolean  optional    

optional Indicates whether the product is refurbished (pre-owned). A value of 1 denotes a refurbished product. Cannot be combined with recycled. Example: true

recycled   boolean  optional    

optional Indicates whether the product is recycled. When set, the response includes recycling_avoided_e_waste_kg, recycling_avoided_emissions_kg_co2_eq, and material_flow. Requires e.product+; without it the request is refused with a 422 naming the entry. Cannot be combined with refurbished. Omit both flags for a new product. Example: false

facility_external_id   string  optional    

optional The external_id of your facility that refurbished this product. Must be your own facility, not the Rejoose standard facility. Only used when refurbished is true. When you leave it out, your default facility is used. See Refurbishment impact.

variant   string  optional    

optional The refurbishment process this product went through, for example full (repair) or light (test and wipe). Only used when refurbished is true. When you leave it out, the facility's default variant is used. A value the facility does not have is rejected with a 422. Max 64 characters. See Refurbishment impact.

options   object  optional    

optional Additional options for the request.

unit   string  optional    

optional Unit preference for the response. Defaults to 'metric', which returns the kg and gram fields only. 'imperial' keeps those fields and adds a converted lb counterpart next to each of them (for example total_lb_co2_eq next to total_kg_co2_eq), so only an imperial response carries both units. Accepted values: 'metric', 'imperial'. Example: imperial

Response (200, Refurbished, recycled and new product in one batch, e.product+ (recycled requires 'e.product-plus'))
{
    "data": [
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": true,
            "recycled": false,
            "data_match": true,
            "product_match": true,
            "data_method": "MS",
            "total_kg_co2_eq": 17.582,
            "carbon_intensity_gram": 130.96,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": 8.618,
            "refurbishment_offset_kg_co2_eq": 146.74,
            "refurbishment_impact_basis": "standard_category",
            "rfi_external_id": "standard-2026",
            "rfi_version": 1,
            "variant": "full",
            "rfi_per_unit_fixed_kg_co2_eq": 8.5,
            "rfi_transport_co2_eq_per_tonne": 78.442667,
            "rfi_weight_basis": "device",
            "manufacturing_kg_co2_eq": 0,
            "transportation_kg_co2_eq": 0,
            "use_kg_co2_eq": 7.638,
            "end_of_life_kg_co2_eq": 1.326,
            "tec_kwh": null,
            "recycling_avoided_e_waste_kg": null,
            "recycling_avoided_emissions_kg_co2_eq": null,
            "material_flow": null,
            "epeat_tier": "gold",
            "epeat_climate_plus": true,
            "epeat_status": "active",
            "epeat_certificate_url": "https://epeat.net/product-details/EPEAT-21MMSEJC00",
            "tco_certified": true,
            "tco_certificate_url": "https://tcocertified.com/product-finder/?cert=TCO-21MMSEJC00"
        },
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": false,
            "recycled": true,
            "data_match": true,
            "product_match": true,
            "data_method": "MS",
            "total_kg_co2_eq": null,
            "carbon_intensity_gram": null,
            "lifetime_month": null,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null,
            "refurbishment_impact_basis": null,
            "rfi_external_id": null,
            "rfi_version": null,
            "variant": null,
            "rfi_per_unit_fixed_kg_co2_eq": null,
            "rfi_transport_co2_eq_per_tonne": null,
            "rfi_weight_basis": null,
            "manufacturing_kg_co2_eq": null,
            "transportation_kg_co2_eq": null,
            "use_kg_co2_eq": null,
            "end_of_life_kg_co2_eq": null,
            "tec_kwh": null,
            "recycling_avoided_e_waste_kg": 0.547,
            "recycling_avoided_emissions_kg_co2_eq": 1.612,
            "material_flow": {
                "total_input_kg": 1.38,
                "total_recovered_kg": 0.547,
                "recovered_percentage": 39.6,
                "primary_components": "Plastic (27%), Battery (18%), Flat-Panel Display Module (16%), Printed Circuit Board (14%), Aluminum (12%), Ferrous Metal (7%), Other Metals (4%), Copper (2%)",
                "secondary_components": "Aluminum sheet (28%), Steel sheet (24%), Copper wire (21%), Lithium cobalt oxide (15%), HDPE (6%), Nickel (3%), PET (2%), Precious metals (Au/Ag/Pd) (0.049%)"
            },
            "epeat_tier": null,
            "epeat_climate_plus": null,
            "epeat_status": null,
            "epeat_certificate_url": null,
            "tco_certified": null,
            "tco_certificate_url": null
        },
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": false,
            "recycled": false,
            "data_match": true,
            "product_match": true,
            "data_method": "MS",
            "total_kg_co2_eq": 175.984,
            "carbon_intensity_gram": 130.96,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null,
            "refurbishment_impact_basis": null,
            "rfi_external_id": null,
            "rfi_version": null,
            "variant": null,
            "rfi_per_unit_fixed_kg_co2_eq": null,
            "rfi_transport_co2_eq_per_tonne": null,
            "rfi_weight_basis": null,
            "manufacturing_kg_co2_eq": 156.28,
            "transportation_kg_co2_eq": 10.74,
            "use_kg_co2_eq": 7.638,
            "end_of_life_kg_co2_eq": 1.326,
            "tec_kwh": 14.58,
            "recycling_avoided_e_waste_kg": null,
            "recycling_avoided_emissions_kg_co2_eq": null,
            "material_flow": null,
            "epeat_tier": null,
            "epeat_climate_plus": null,
            "epeat_status": null,
            "epeat_certificate_url": null,
            "tco_certified": null,
            "tco_certificate_url": null
        }
    ],
    "errors": null,
    "status": 200
}
Response (200, Refurbished and new product without e.product+)
{
    "data": [
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": true,
            "recycled": false,
            "data_match": true,
            "product_match": true,
            "data_method": "MS",
            "total_kg_co2_eq": 17.582,
            "carbon_intensity_gram": 130.96,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": 8.618,
            "refurbishment_offset_kg_co2_eq": 146.74,
            "refurbishment_impact_basis": "standard_category",
            "rfi_external_id": "standard-2026",
            "rfi_version": 1,
            "variant": "full",
            "rfi_per_unit_fixed_kg_co2_eq": 8.5,
            "rfi_transport_co2_eq_per_tonne": 78.442667,
            "rfi_weight_basis": "device"
        },
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": false,
            "recycled": false,
            "data_match": true,
            "product_match": true,
            "data_method": "MS",
            "total_kg_co2_eq": 175.984,
            "carbon_intensity_gram": 130.96,
            "lifetime_month": 48,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null,
            "refurbishment_impact_basis": null,
            "rfi_external_id": null,
            "rfi_version": null,
            "variant": null,
            "rfi_per_unit_fixed_kg_co2_eq": null,
            "rfi_transport_co2_eq_per_tonne": null,
            "rfi_weight_basis": null
        }
    ],
    "errors": null,
    "status": 200
}
Response (200, No product or category data was found: the batch still returns 200 with data_match false and null carbon data for that entry)
{
    "data": [
        {
            "manufacturer_part_number": "21MMSEJC00",
            "brand": "Lenovo",
            "category": "Notebook",
            "country_code": "GB",
            "refurbished": false,
            "recycled": false,
            "data_match": false,
            "product_match": false,
            "data_method": null,
            "total_kg_co2_eq": null,
            "carbon_intensity_gram": null,
            "lifetime_month": null,
            "refurbishment_impact_kg_co2_eq": null,
            "refurbishment_offset_kg_co2_eq": null,
            "refurbishment_impact_basis": null,
            "rfi_external_id": null,
            "rfi_version": null,
            "variant": null,
            "rfi_per_unit_fixed_kg_co2_eq": null,
            "rfi_transport_co2_eq_per_tonne": null,
            "rfi_weight_basis": null
        }
    ],
    "errors": null,
    "status": 200
}
Response (403, No e.product subscription)
{
    "data": null,
    "errors": {
        "forbidden": [
            "E/product is not enabled for your organization. Contact us on \"sales@rejoose.com\" or \"+45 71 74 70 30\" to enable it."
        ]
    },
    "status": 403
}
Response (403, Usage limit reached and the batch holds products new to the subscription period)
{
    "data": null,
    "errors": {
        "forbidden": [
            "Your max limit on E/product is reached. Contact us on \"sales@rejoose.com\" or \"+45 71 74 70 30\" to change your limit. Products already retrieved in this subscription period remain available. Not yet retrieved: 21MMSEJC00 (Lenovo, refurbished), 21MMSEJC00 (Lenovo, recycled), 21MMSEJC00 (Lenovo, GB)."
        ]
    },
    "status": 403
}
Response (422, The example batch without e.product+ (the recycled entry is refused))
{
    "data": null,
    "errors": {
        "products.1.recycled": [
            "Recycled lookups require an e.product+ subscription. To enable access, contact support@rejoose.com."
        ]
    },
    "status": 422
}

List changed products

Requires API key
API key ability API_PRODUCT

Retrieve changed products as a CSV file. This endpoint provides a CSV file listing the changes for a specified date or week. The file contains columns for manufacturer_part_number, brand, and category. Use this file to check for relevant products and brands, then use the e.product API to obtain detailed information.

Daily File: If a date is specified, a daily changes file for that day is returned, specified date cannot be in the future.

  • Example: For date = 2024-11-06, the file will list all products that changed on November 6, 2024.

Weekly Summary File: Aggregates product changes from Monday to Sunday for a specified week.

Without a date, a summary file for the specified or most recent week is retrieved. The weekly file aggregates product changes from Monday to Sunday for the specified week.

Weekly File Details:

  • Aggregates data from all daily files generated for each day of the specified week.
  • Most recent week means the last full week. If you request a weekly file in any given week without a date, you will receive data from previous week (Monday to Sunday).
  • Example: A weekly file for week 45 of 2024 contains all products that changed from Monday, 2024-11-04, to Sunday, 2024-11-10.
  • Removes duplicate entries to ensure a clean dataset.
  • Combines individual product changes into a single file.

Weekly File Composition:

The weekly file includes:

  • All changes recorded in the daily files from Monday to Sunday of the week.
  • A deduplicated list of products with details such as manufacturer_part_number, brand, and category.

Recommendations:

  • Use the weekly file for a comprehensive overview of all product changes for the week. We suggest that you get the weekly file every Monday after 12:00 UTC.
  • Refer to the daily file for specific changes on a particular day

    Response Details:

  • Returns a 302 Redirect to the CDN URL if the file is accessible there.
  • An invalid date or week_number is answered with a 422 whose body is a single error string, not the one described under Validation failed (422).
GET api/v3/products/changes

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

date string optional

Optional. The date of the changes (in format YYYY-MM-DD).

Example: 2024-11-01
week_number integer optional

Optional. The ISO week number of the changes, between 1 and 53. A week that has not happened yet this year returns last year's week.

Example: 45
Response (302)
manufacturer_part_number,brand,category
UT04CBE,Lenovo,Notebook
RE242EP,HP,Notebook
PSMA2E-00U01DGC,Toshiba,Notebook
RH324ET#ABY-D30,HP,Notebook
A3HF-5A027P,ASUS,Notebook

Response (404, No file for that date or week)
{
    "data": null,
    "errors": {
        "not_found": [
            "File not found."
        ]
    },
    "status": 404
}

Categories

The Categories endpoint lists every category Rejoose recognises, together with the other names each one is known by. Use it to map your own product groups to Rejoose categories before you send devices to e.voice, e.voice circularity, or e.product, and to keep that mapping current as the catalogue grows.

Also available in e.hub

The same list is available in e.hub under Developer → Available categories, for users with the admin or developer role. There you can search it by name or tag without using the API.

List categories

Requires API key
API key ability API_EVOICE or API_EVOICE_CIRCULARITY or API_PRODUCT

One page of the categories, ordered by id, optionally narrowed with search.

Use search to find a category by any of its names: search=laptop returns Notebook, because "Laptops" is one of its tags. pagination.total counts the matches.

The list comes from a weekly snapshot of the category catalogue, taken every Monday. snapshot.date names the snapshot the page was read from. A new snapshot can appear between two of your requests, so compare it when you walk several pages.

GET api/v3/categories

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

search string optional

Keep only the categories whose name or any tag contains this text, ignoring case. Up to 255 characters.

Example: laptop
page integer optional

The page, from 1.

Example: 1
per_page integer optional

Categories per page, 1 to 100. Defaults to 10.

Example: 10
Response (200)
{
    "data": {
        "items": [
            {
                "id": 41,
                "name": "Monitor",
                "main_category_id": null,
                "tags": [
                    "Monitors",
                    "Computer Monitors",
                    "display"
                ],
                "default_lifetime_months": 72,
                "default_weight_kg": 5.6
            },
            {
                "id": 42,
                "name": "Notebook",
                "main_category_id": null,
                "tags": [
                    "Notebooks",
                    "Laptops",
                    "laptop"
                ],
                "default_lifetime_months": 48,
                "default_weight_kg": 1.8
            }
        ],
        "snapshot": {
            "date": "2026-10-26"
        },
        "pagination": {
            "current_page": 1,
            "last_page": 29,
            "per_page": 10,
            "total": 284,
            "next_page_url": "https://app.rejoose.com/api/v3/categories?page=2",
            "prev_page_url": null
        }
    },
    "errors": null,
    "status": 200
}

Groups

Enterprise Grouping in e.hub

The e.hub Enterprise Functionality is an advanced feature exclusively available to Enterprise Subscription customers. It is designed for companies operating with multiple ERP systems that do not share common company or organisation identifiers. This is particularly useful for businesses using different ERP systems across regions, such as SAP in the EU and Business Central in the US, where customer naming conventions and identifiers are not aligned.

Seamless Data Consolidation Across Multiple ERP Systems

With this feature, you can link and unify organisation data from multiple disconnected ERP systems into a single Group Structure, ensuring a consistent, company-wide carbon reporting framework.

Three-Tiered Reporting Structure

The grouping model enables full organisational alignment across various business units. How the three levels relate to the ids you send is explained under Reporting IDs:

  • Group: The top-level entity, representing the entire enterprise. (unique to Enterprise Grouping)
  • Organisation: The customer as sent in client.organization_id, typically one per ERP or platform, each containing multiple companies. (standard e.voice function)
  • Companies: Individual companies, branch offices, or subsidiaries as sent in client.company_id. (standard e.voice function)

Each Group can contain multiple Organisations, and each Organisation can include hundreds of subsidiaries, ensuring scalability for even the largest enterprises.

Data Extraction & Integration

A dedicated data extraction endpoint allows you to:

  • Retrieve grouped and structured data for data warehouse integration.
  • Extract e.voice records and filter reports by Group, Organisation, or Company.
  • Seamlessly integrate consolidated data into your internal analytics or reporting systems.

List a group's e.voices

Requires API key
API key ability API_EVOICE and an e.hub Enterprise subscription

Retrieve a paginated list of e.voices for a specific group, filtered by date and pagination options.

GET api/v3/group/{slug}

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

URL Parameters

slug string required

The group slug used to filter the e.voices.

Example: eco-friendly-company

Query Parameters

from string optional

date The start date for filtering e.voices.

Example: 2024-01-01
to string optional

date The end date for filtering e.voices. Default: today.

Example: 2024-12-31
per_page integer optional

The number of items per page (1-100). Default: 10.

Example: 20
pagination string optional

The pagination type: "cursor" for cursor-based pagination or null for smart pagination. Default: smart.

Example: cursor
cursor string optional

The cursor for cursor-based pagination (cursor pagination only).

Example: eyJpZCI6MTIzLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9
Response (200)
{
    "data": {
        "items": [
            {
                "external_invoice_id": "a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9",
                "external_invoice_date": "2024-07-24T07:39:56.000000Z",
                "country_code": "DK",
                "carbon_intensity_gram": 123,
                "total_kg_co2_eq": 1301.51,
                "manufacturing_kg_co2_eq": 892.34,
                "transportation_kg_co2_eq": 156.78,
                "eol_kg_co2_eq": 252.39,
                "status": "finalized",
                "created_at": "2024-07-24T07:39:56.000000Z",
                "updated_at": "2024-07-24T07:39:59.000000Z",
                "group": {
                    "name": "Eco Friendly Company",
                    "slug": "eco-friendly-company"
                },
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "ecofriendly-4987",
                    "company_id": "ECOF1234567",
                    "vat_number": "ECOF1234567",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark"
                },
                "devices": [
                    {
                        "external_id": "RE8989121",
                        "original_manufacturer_part_number": "62B6MAT3EU",
                        "quantity": 10,
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "lifetime_months": 72,
                        "scope_2_kg_co2_eq": 278.41,
                        "scope_3_kg_co2_eq": 249.27,
                        "total_kg_co2_eq": 527.68,
                        "manufacturing_kg_co2_eq": 198.45,
                        "transportation_kg_co2_eq": 23.14,
                        "eol_kg_co2_eq": 27.68,
                        "refurbished": true,
                        "avoided_emissions_kg_co2_eq": 256.68
                    },
                    {
                        "external_id": "SM-S918BZKDEEB",
                        "original_manufacturer_part_number": null,
                        "quantity": 10,
                        "brand": "Samsung",
                        "model_name": "Galaxy S23 Ultra",
                        "category": "Smartphone",
                        "lifetime_months": 30,
                        "scope_2_kg_co2_eq": 31.18,
                        "scope_3_kg_co2_eq": 742.65,
                        "total_kg_co2_eq": 773.83,
                        "manufacturing_kg_co2_eq": 693.89,
                        "transportation_kg_co2_eq": 133.64,
                        "eol_kg_co2_eq": 224.71,
                        "refurbished": false,
                        "avoided_emissions_kg_co2_eq": 0
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9"
                }
            }
        ],
        "current_page": 2,
        "last_page": 4522,
        "total": 4522,
        "per_page": 1,
        "next_page": "https://app.rejoose.com/api/v3/group/eco-friendly-company?page=3",
        "previous_page": "https://app.rejoose.com/api/v3/group/eco-friendly-company?page=1"
    },
    "errors": null
}

List e.voices by group

Requires API key
API key ability API_EVOICE and an e.hub Enterprise subscription

Retrieve a paginated list of e.voices for all groups, filtered by date and pagination options.

GET api/v3/groups

Headers

Authorization required
Example: Bearer {YOUR_API_KEY}

Query Parameters

from string optional

date The start date for filtering e.voices.

Example: 2024-01-01
to string optional

date The end date for filtering e.voices. Default: today.

Example: 2024-12-31
per_page integer optional

The number of items per page (1-100). Default: 10.

Example: 20
pagination string optional

The pagination type: "cursor" for cursor-based pagination or null for smart pagination. Default: smart.

Example: cursor
cursor string optional

The cursor for cursor-based pagination (cursor pagination only).

Example: eyJpZCI6MTIzLCJfcG9pbnRzVG9OZXh0SXRlbXMiOnRydWV9
Response (200)
{
    "data": {
        "items": [
            {
                "external_invoice_id": "a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9",
                "external_invoice_date": "2024-07-24T07:39:56.000000Z",
                "country_code": "DK",
                "carbon_intensity_gram": 123,
                "total_kg_co2_eq": 1301.51,
                "manufacturing_kg_co2_eq": 892.34,
                "transportation_kg_co2_eq": 156.78,
                "eol_kg_co2_eq": 252.39,
                "status": "finalized",
                "created_at": "2024-07-24T07:39:56.000000Z",
                "updated_at": "2024-07-24T07:39:59.000000Z",
                "group": {
                    "name": "Eco Friendly Company",
                    "slug": "eco-friendly-company"
                },
                "client": {
                    "name": "Eco-Friendly Solutions Ltd",
                    "organization_id": "ecofriendly-4987",
                    "company_id": "ECOF1234567",
                    "vat_number": "ECOF1234567",
                    "address": "100 Enviro Way",
                    "address2": "Sustainability Lane 3",
                    "zip_code": "ECO321",
                    "city": "GreenVille",
                    "country": "Denmark"
                },
                "devices": [
                    {
                        "external_id": "RE8989121",
                        "original_manufacturer_part_number": "62B6MAT3EU",
                        "quantity": 10,
                        "brand": "Lenovo",
                        "model_name": "ThinkPad T480",
                        "category": "Notebook",
                        "lifetime_months": 72,
                        "scope_2_kg_co2_eq": 278.41,
                        "scope_3_kg_co2_eq": 249.27,
                        "total_kg_co2_eq": 527.68,
                        "manufacturing_kg_co2_eq": 198.45,
                        "transportation_kg_co2_eq": 23.14,
                        "eol_kg_co2_eq": 27.68,
                        "refurbished": true,
                        "avoided_emissions_kg_co2_eq": 256.68
                    },
                    {
                        "external_id": "SM-S918BZKDEEB",
                        "original_manufacturer_part_number": null,
                        "quantity": 10,
                        "brand": "Samsung",
                        "model_name": "Galaxy S23 Ultra",
                        "category": "Smartphone",
                        "lifetime_months": 30,
                        "scope_2_kg_co2_eq": 31.18,
                        "scope_3_kg_co2_eq": 742.65,
                        "total_kg_co2_eq": 773.83,
                        "manufacturing_kg_co2_eq": 693.89,
                        "transportation_kg_co2_eq": 133.64,
                        "eol_kg_co2_eq": 224.71,
                        "refurbished": false,
                        "avoided_emissions_kg_co2_eq": 0
                    }
                ],
                "links": {
                    "self": "https://app.rejoose.com/api/v3/evoices/a6e0f0bb-0285-4a2d-b6d8-93c63543d5a9"
                }
            }
        ],
        "current_page": 2,
        "last_page": 4522,
        "total": 4522,
        "per_page": 1,
        "next_page": "https://app.rejoose.com/api/v3/groups?page=3",
        "previous_page": "https://app.rejoose.com/api/v3/groups?page=1"
    },
    "errors": null
}