Methodology.

How cobank calculates, classifies, and documents every line of CO2e. This page is the public record of the choices we make before any invoice is read: which standards we follow, which factor libraries we use, how we decide when data is strong enough to report and when it is not. It is written long rather than short, because the cost of a hidden assumption is higher here than the cost of a long paragraph.

Scope & boundary.

cobank reports company-level emissions under the GHG Protocol Corporate Standard. The organisational boundary is set by operational control: an entity appears in the ledger if the reporting company has the authority to direct its operating policies, regardless of equity share. This is stated once per workspace and held constant across periods unless the company formally restructures.

Within that boundary, cobank calculates Scope 1 (direct combustion and fugitive emissions), Scope 2 (purchased electricity, steam, heat and cooling — reported both location-based and market-based where residual-mix factors are available), and the material portion of Scope 3 under the GHG Protocol Scope 3 Standard: Category 1 (purchased goods and services), Category 3 (fuel- and energy-related activities), Category 4 (upstream transport), Category 6 (business travel), and the material sub-portions of Categories 2, 5 and 7.

What cobank does not report on by default: Scope 3 Categories 8 through 15 (use-phase, end-of-life, franchises, investments, downstream transport and leased assets) are out of scope unless the workspace explicitly configures them, because the data quality of category-wide spend-based estimates at that end of the value chain is materially lower than anything else in the ledger. Non-energy Scope 1 sources for which no published factor is available are flagged rather than estimated. Silence on a category is preferable to a number the auditor cannot defend.

Calculation methods.

Every kgCO2e figure in cobank is produced by one of three methods, always tried in this order and recorded on the line.

01

Physical activity

Preferred where the invoice reports a physical quantity. kgCO2e = activity × factor — e.g. kWh of electricity times a grid factor, litres of diesel times a fuel factor, kilograms of a specific material times a product factor. A Swiss manufacturer's electricity bill of 142'580 kWh against the current BAFU Swiss grid factor is a physical calculation; the result is reproducible to the kilowatt-hour.

02

Distance × weight (freight)

For transportation, where the invoice exposes both distance and weight. kgCO2e = tonne-km × mode factor, following ISO 14083:2023 for the definition of the transport operation, the hub allocation and the modality hierarchy. Surcharges on a freight invoice — BAF, CAF, LSS, demurrage, wharfage — are treated under the surcharge-zero rule below, not as additional freight.

03

Spend-based (EEIO)

Used only when methods 01 and 02 are not available for a line. kgCO2e = CHF × EEIO factor, with the factor drawn from a curated environmentally-extended input-output library matched to the vendor's industry. Every spend-based line is flagged in the ledger with a lower confidence score and a visible "spend method" tag, so the reviewer knows at a glance which numbers rest on thinner data.

Surcharge-zero rule. On transport and energy invoices, freight surcharges (BAF, CAF, LSS, fuel surcharges, demurrage), taxes (VAT, MwSt, TVA), administrative fees, service charges, and retrospective adjustments are assigned activity_role of surcharge / tax / fee / adjustment in the ledger and emit zero kgCO2e. This is a direct application of GHG Protocol guidance on avoiding double-counting: the physical activity that generated the emission is already captured on the parent primary line, and billing the same tonne of CO2e twice because the carrier split the freight rate across three invoice rows would inflate the total. The classifier is deterministic, not probabilistic: a line matches the rule or it does not, and the ledger records the rationale and the parent line it defers to.

Factor sources.

cobank uses a curated library of published emission factors. Every factor carries a source, a version, a region of applicability and a validity window. When a line item is calculated, the factor version in force on the invoice date is pinned to the line via factor_version_id and held there permanently.

DEFRA
2025
UK Department for Energy Security & Net Zero conversion factors. Published under the UK Open Government Licence v3.0 and commercially redistributable. First preference for freight modalities, fuel combustion, and cross-border transport. gov.uk/government-conversion-factors
BAFU
pending
Swiss Federal Office for the Environment, CO2-Emissionsfaktoren, Faktenblatt Januar 2025. First preference for Swiss electricity, district heat, and domestic fuel combustion when the workspace's country is CH. Version pinned pending commercial-licence clarification with BAFU (email sent 2026-04-24). bafu.admin.ch
IEA
2024 edition
International Energy Agency national grid emission intensities. Used for Scope 2 location-based electricity factors outside Switzerland and the UK. iea.org/data-and-statistics

Selection hierarchy. For every line, cobank applies the factor library in a fixed order: BAFU (if workspace country = CH) → DEFRA (for freight and fuel combustion) → IEA (for Scope 2 grid factors elsewhere) → semantic fallback from the internal 1'397-factor library, with a 0.78 cosine-similarity threshold and a required subcategory match. No semantic match below 0.78 is ever applied automatically; the line is routed to the review queue instead.

Optional add-ons. Ecoinvent is available as a customer-procured add-on on enterprise plans when a customer's audit firm or internal methodology specifically requires it; cobank does not redistribute ecoinvent by default because it is not required for credible Swiss or EU voluntary reporting. A customer-supplied factor library (override mode) is also available on enterprise plans; see enterprise plan.

Version log. Factor versions are pinned per line at insertion time via factor_version_id. When a source publishes a new version, prior reported periods are not automatically restated; historical numbers remain bound to the factors that were in force on the invoice date. Restatements are documented per-period on request, via a period-snapshot hash that records the exact factor set in use at close.

Confidence & data quality.

Every line item carries a confidence score between 0.00 and 1.00 that summarises how much the calculation can be trusted. Three inputs feed the score: the quality of the underlying factor source (physical-method factors from BAFU or DEFRA score higher than spend-based EEIO fallbacks), the certainty of the classification (a strong vendor match and an unambiguous description score higher than a generic line on an unfamiliar supplier), and a missing-data penalty for each field that had to be inferred rather than read from the invoice. The score is a review signal, not a correction factor — a low score does not reduce the reported kgCO2e, it determines where the line goes in the workflow.

High
≥ 0.80
Reportable as-is. Flows into closed-period totals without manual review.
Medium
0.50 – 0.80
Flagged for reviewer attention. Included in totals but surfaced in the attention list.
Low
< 0.50
Held back. needs_review = true. Excluded from exports until a reviewer resolves it.

Confidence is visible on every line of the ledger and on every row of the Provenance Card. When a reviewer overrides a classification, the override is recorded alongside the original suggestion, the factor library rows it was drawn from, and the identity of the reviewer; the confidence score is recomputed rather than overwritten.

Immutability & audit trail.

Every write to a line item — creation, edit, override, review, close — passes through a hash chain. Each row records a row_hash over its own fields and a prev_hash pointing at the previous state. UPDATE and DELETE are blocked by row-level-security policy on any line whose reporting period has been closed, so a closed period cannot be silently rewritten. Amendments open a new version with a visible restatement trail rather than quietly mutating history. Every factor version is pinned at write time, so historical calculations remain reproducible even after the factor library advances.

This means every number in a cobank report can be reconstructed from its inputs: the invoice it came from, the line it was extracted into, the factor that was applied, and the identity of whoever signed off on the final classification. Reproducibility is not a marketing claim here — it is the shape of the database.

Status of independent assurance.

cobank produces reports using methodology aligned with GHG Protocol and ISO 14083. Reports are not independently audited. Independent assurance is available on request through partner audit firms.

For the avoidance of doubt: the reports that leave a cobank workspace are internal management figures until an accredited assurance provider has tested them. Where a customer wants limited or reasonable assurance under ISSA 5000, the workbench supports engagement-scoped read access, risk-based sampling, per-assertion workpapers and a signed evidence package that the firm can rely on. The assurance opinion remains the firm's; cobank provides the working paper underneath.

Revision log.

v1.1 · 24 April 2026
Factor sources restated against production library. Default hierarchy: BAFU (CH) → DEFRA 2025 (UK OGL v3.0) → IEA grid factors → semantic fallback. Ecoinvent moved to enterprise-only customer-procured add-on; EPA removed from default library. BAFU version pinned pending commercial-licence clarification (email sent 2026-04-24).
v1.0 · 20 April 2026
Initial publication. GHG Protocol organisational boundary set to operational control. Confidence thresholds 0.80 / 0.50. Surcharge-zero rule added to the deterministic classifier.