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.

Category 3 is computed rather than entered: for every line that records a fuel quantity, the same quantity that produced the Scope 1 figure is multiplied by that fuel’s published well-to-tank factor, and the result is reported in Scope 3 from 16 August 2026. One purchase of fuel therefore produces two figures — the combustion in Scope 1 and its upstream in Scope 3 — and neither replaces the other. Two things are deliberately outside it, counted and stated on the report rather than absorbed into the total: purchased electricity and district heating, whose upstream depends on what the local grid or network burns and for which no licensed figure is held; and fuel bought on a line that states no quantity, which leaves nothing to multiply. A period sealed before this date reports the category as not assessed at close, not as zero.

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 (published multipliers)

Used only when methods 01 and 02 are not available for a line. kgCO2e = spend × published multiplier, with the multiplier drawn from the UK Government's spend-based emissions multipliers by industry (Defra, SIC 2023) and matched to the vendor's industry. These are UK economy-wide intensities quoted per pound: a line billed in another currency is converted at the rate for its own invoice date, and the line states on its face that a factor published for one economy has been applied to spend in another. A spend multiplier is also published in the prices of its own reference year, so spend from a different year is restated into that year before the multiplier is applied. The adjustment is the ratio of two published index values from the UK GDP deflator series (HM Treasury, Quarterly National Accounts, calendar year), which is the method HM Treasury documents for that series; the coefficient appears on the line beside the rate. Two limits are stated rather than smoothed over: the series is whole-economy, not per industry, so it corrects for general price movement and not for what happened to prices in one sector; and the current year has no published outturn index, so its value is chained from the percentage change the same table publishes and the line says the adjustment rests on a forecast. Where no published index covers the pair of years, the line is not estimated at all — the calculation abstains and the line is reported as not measured rather than as zero. 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.

Role before factor. Before any emission factor is considered, every extracted line is assigned a role: an activity, a price component, a tax or levy, a contractual instrument, a correction, a structural line, or unresolved. Only lines that record an activity — a delivery, a journey, a consumption, or the reversal of one — reach factor selection. Freight surcharges (BAF, CAF, LSS, demurrage), tolls, standing and grid charges, carbon prices passed through on a fuel (BEHG, ETS), payment and booking fees, discounts, and taxes and levies (VAT, insurance premium tax, city tax, air-passenger duty, LSVA) carry an activity_role of surcharge / tax / fee / adjustment 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 line these defer to, and billing the same tonne of CO2e twice because the supplier split one rate across three invoice rows would inflate the total. A cancelled renewable certificate is zero on the market-based method by construction and still carries a location-based comparator wherever the line states a quantity, computed at the grid factor of the country the document identifies and named on the line itself; where the document identifies none, the Swiss grid factor is used and the line says so. A credit note keeps the category it reverses and carries negative emissions rather than being dropped. A subtotal is not written to the ledger at all. A line that cannot be placed is recorded as unresolved with no emission figure — not as a zero, because “we measured nothing” and “we measured zero” are different claims. The rules that assign these roles are deterministic: a line matches or it does not, and the ledger records the rationale and the parent line the decision defers to. Where no rule matches, the classifier may propose a role, and a proposed zero is never treated as the same thing — it is written at reduced confidence and marked for review, so a zero nobody wrote a rule for cannot pass unnoticed.

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 moves only when a reviewer changes that line's classification, which the audit trail records. Where no version was published for that date, the nearest published one is applied and the line says so.

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
2025
Swiss Federal Office for the Environment, CO2-Emissionsfaktoren, Faktenblatt Januar 2025. First preference for Swiss electricity and domestic fuel combustion when the workspace’s country is CH. It does not cover district heating: no Swiss publisher offers a national district-heat figure cobank may lawfully re-use, so a Swiss district-heating line is left uncalculated and routed to review rather than given a number from an unattributable source. BAFU confirmed re-use in a commercial Swiss SaaS application in writing on 4 May 2026; the reply is held on file. bafu.admin.ch
UBA
16/2026
German Federal Environment Agency (Umweltbundesamt), CLIMATE CHANGE 16/2026, “Entwicklung der spezifischen Treibhausgas-Emissionen des deutschen Strommix in den Jahren 1990–2025”, March 2026. Source of the German grid electricity factor: 352 g CO2e/kWh for 2025, the direct greenhouse-gas figure excluding upstream fuel supply, which the GHG Protocol places in Scope 3 rather than Scope 2. This is a consumption-mix basis, which differs from the generation basis of the EEA country values below. Numbers are re-used under §12a EGovG with the Umweltbundesamt named and the conversion to kg/kWh marked; the report’s text and figures are not reproduced. umweltbundesamt.de
UBA EF-Liste
2.1
German Federal Environment Agency (Umweltbundesamt), Liste mit Emissionsfaktoren für die Treibhausgasbilanzierung von Organisationen, version 2.1 (March 2026), reference year 2024. Source of the German district-heating factor (fossil network mix, 0.265983 kg CO2e/kWh, Scope 2, upstream excluded as GHG Protocol category 3) and of the two German rail factors (long-distance electric traction 0.025661 kg CO2e/pkm, regional service 0.043537 kg CO2e/pkm, both from TREMOD 6.71B). Released by the Umweltbundesamt under CC0 1.0. Values are rounded to six decimal places so the ledger records exactly the coefficient it names, and each row states that rounding; nothing else is changed. A heat network is local, and a German operator has been obliged since the start of 2024 to publish its own factor — where an invoice states one, it replaces this national average on the line. umweltbundesamt.de
EEA
2024
European Environment Agency, “Greenhouse gas emission intensity of electricity generation in Europe”, country-level table, edition published 10 July 2026, reference year 2024 — which the EEA itself labels an early estimate. Source of the grid factor for 26 EU member states, and of the EU-27 average applied as a disclosed fallback where cobank holds no factor for the consumption country. Generation basis: CO2e from public electricity production over gross electricity production. Re-used under the EEA re-use policy (CC BY), the EEA acknowledged and the values undistorted; converted from g/kWh to kg/kWh. The 2022 vintage remains in the library with its validity window closed at 31 December 2023, so an invoice from 2022 or 2023 is still costed on the figure published for its own year. eea.europa.eu
GLEC
2025
Smart Freight Centre GLEC Framework, the logistics emission methodology beneath ISO 14083. Used for road, rail, air and sea freight chains, alongside IMO 2025 default factors for deep-sea shipping and IPCC AR6 GWP-100 values for non-CO2 gases. smartfreightcentre.org

Selection hierarchy. For every line, cobank applies the curated calculation library (over 100 factors across 13 or more source labels) in a fixed order. For grid electricity the factor is the one published for the country of consumption: BAFU for Switzerland, the Umweltbundesamt for Germany, the European Environment Agency for the other EU member states, and the EU-27 average as a disclosed fallback where no national factor is held. Otherwise: DEFRA 2024 (for freight, fuel combustion and business travel) → GLEC 2025 / IMO 2025 (for logistics chains) → the Defra UK spend-based multipliers (SIC, 2023) as the last resort. A separate semantic pool of about 1’400 DEFRA 2024 factors (pgvector-indexed) produces alternative suggestions on the Provenance Card at a 0.50 cosine-similarity threshold, re-cut in August 2026 against the live index because the previous 0.30 admitted suggestions that were plainly wrong with a required subcategory match: it never drives a calculated number. A line with no curated match is routed to the review queue, not silently approximated.

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, and where no published version covers that date the nearest published vintage is applied and the line records that it was. Restatements are documented per-period on request, via a period-snapshot hash that records the exact factor set in use at close.

Attribution. DEFRA / DESNZ conversion factors, the Defra spend-based emissions multipliers by SIC industry (2023) and the GDP deflator series used to restate spend into a multiplier's reference year (HM Treasury, GDP deflators at market prices, and money GDP, June 2026, Quarterly National Accounts) contain public sector information licensed under the Open Government Licence v3.0. German grid values: Quelle Umweltbundesamt, CLIMATE CHANGE 16/2026, converted from g/kWh to kg/kWh. German district-heating and rail values: Quelle Umweltbundesamt, Liste mit Emissionsfaktoren für die Treibhausgasbilanzierung von Organisationen v2.1 (Bezugsjahr 2024), released under CC0 1.0, rounded to six decimal places so the ledger records exactly the coefficient it names and otherwise undistorted. cobank holds no Swiss district-heating factor at all: the three candidate sources checked in August 2026 are either not a national figure, not on a GHG Protocol basis, or carry no re-use terms, so a Swiss district-heating line is left uncalculated rather than costed on a factor nobody published. European country grid values: © European Environment Agency, re-used under the EEA re-use policy (CC BY), converted from g/kWh to kg/kWh. Swiss values: Bundesamt für Umwelt BAFU, re-used with BAFU’s written confirmation of 4 May 2026. European residual mixes: AIB, European Residual Mixes 2025, v1.0, re-used with AIB's written permission of 13 August 2026, converted from g/kWh to kg/kWh and otherwise undistorted. Where no supplier-specific factor and no cancelled instrument exists, the market-based figure is the consumption country's published residual mix, and the location-based comparator keeps the grid factor beside it. AIB publishes no residual mix for Switzerland, Austria or the Netherlands; supply in those countries keeps the consumption-country grid average on both methods, which the GHG Protocol Scope 2 Guidance permits where a residual mix is unavailable, and the line states which of the two it used. When the market-based figure is the lower one. A residual mix is normally higher than its country's grid average, because the renewable output sold with guarantees of origin has been taken out of it. For two countries cobank serves it is lower, and the reason differs. In France most low-carbon generation is nuclear, which does not carry guarantees of origin the way renewables do; strip out the renewable output that has been sold and the residual pool is nuclear-heavy, so the residual mix (17.11 g) sits below the grid average (36 g). That is the residual mix working as intended. In Cyprus (503.63 g against 561 g) cobank has no explanation it can stand behind: the two publishers measure different things — the EEA a generation basis, the AIB a residual supply mix after attributes are cancelled — and cobank reports both figures, names the publisher of each, and does not reconcile them. Four further countries showed the same inversion against the 2022 grid vintage and no longer do against the 2024 one; those were a publication lag, and refreshing the grids removed them. GWP basis. Sources do not share one. The UK spend multipliers are struck on IPCC AR5 global-warming potentials; the curated non-CO2 rows (refrigerants, fugitive gases) are AR6. cobank states the basis per source family from what each row records and never restates a published value to match a label — a factor is reported as its publisher struck it, and the mixed basis is disclosed here rather than smoothed away. Where a single figure spans both, the difference is smaller than the spend method's own uncertainty and is not material to it.

Confidence & data quality.

Every line item carries two confidences, because two different things can go wrong. Reading confidence asks whether the document was transcribed correctly; classification confidence asks whether the role and the factor are the right ones. A single number hid which was weak — a perfectly-read line with a guessed factor and a barely-legible scan with an obvious factor both showed 70 %. Both are stored, and the displayed score is the lower of the two, labelled with which half it came from, because a chain is as strong as its weaker link and the reviewer needs to know which link to fix. Classification confidence falls for a spend-based factor over a physical one, for a grid factor resolved from a workspace default rather than an entity register, for a factor published for one economy applied to spend in another, and for anything a deterministic rule did not settle. 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. A line the engine refuses to calculate — because the factor is quoted per tonne-kilometre and the document states no distance, say — carries no emission figure at all rather than a zero, and its reason names the field that is missing.

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.

How cobank is operated.

A statement is only as strong as the process behind it. cobank runs one loop per reporting period.

01

Collect

Invoices arrive by drag-and-drop, CSV/XLSX, or ERP sync. Every line is extracted, classified and calculated against a pinned factor version. Nothing vanishes: documents dated outside the open period are held visibly, not silently dropped.

02

Review

A queue ranked by impact (materiality × uncertainty). Corrections in the queue carry a written rationale, and after close the server refuses any edit that does not; the source document renders beside every decision; every change to a line's emissions, category, review state or spend lands in a hash-chained edit log that nobody — including cobank — can rewrite.

03

Close

A period closes against readiness checks — unmapped lines, unreviewed items above materiality, joint-venture method mismatches. Closing over one of them takes a written reason, recorded on the period and in the workspace activity under the name of whoever gave it. Closing freezes every line into a canonical snapshot hashed with SHA-256. Re-running that hash over the canonical snapshot in the evidence export reproduces it, which is how an auditor proves the report was not altered after close.

04

Report

Sealed periods render from their snapshot and carry a basis stamp with the snapshot hash; open periods render live and are watermarked as drafts. Scope 2 is reported market-based and location-based side by side, with the difference reconciled.

05

Assure

An auditor joins a read-only engagement scoped to sealed periods: risk-weighted sampling informed by ISA 530, assertion-level workpapers, a misstatement schedule projected against materiality (defaults informed by ISA 320 — overall materiality 5%, tolerable misstatement 2.5%, clearly-trivial 0.25% of the period total, each overridable), preparer/reviewer separation with self-review blocked, and a self-contained evidence export with per-file SHA-256 hashes. After close, changes travel only through a reasoned amendment trail.

Where the rule lives. The amendment trail is enforced by the database, not only by the application. A sealed line refuses a write that does not arrive through the amendment path, and so does the invoice behind it — its date, its supplier and whether it has been archived are part of the sealed evidence. The application asks for a reason; the database is what makes the asking unavoidable.

Verifiability controls.

Zeros are never ambiguous: every line resolves to one of five states (measured · instrument-backed zero · rule-based zero · not measured · zero, unexplained), and the data-quality summary reconciles to the line count. Coverage is reported on two labelled bases, by line count and by spend.

Where a line's calculation basis is stored, the report build re-performs the arithmetic and surfaces any difference as an exception; where it is not, the line is disclosed as not re-performable from stored fields — routed to source documents rather than silently passed. Invoice totals are reconciled against the sum of extracted lines. Duplicate candidates are flagged for judgment, never silently merged.

What the seal covers, stated precisely: a sealed period's lines cannot change, and neither can the documents behind them. A document dated into a closed quarter that arrives after the close is held unstamped and reported as an addition — it is not folded silently into a sealed total, and it does not move one.

cobank's own figures are not independently audited. Each statement declares its assurance status from the engagement record: none, requested, in progress, or signed off with date.

Last reviewed: 7 August 2026.

Status of independent assurance.

cobank produces reports under the GHG Protocol Corporate Standard. ISO 14083 applies to the freight tonne-kilometre method only, not to the report as a whole. 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.

See also: What VSME actually requires of a Swiss SME, the primary-source walk-through for a Swiss CFO whose EU customer just asked for VSME-aligned data.

Revision log.

v1.2 · 11 August 2026
Role-first classification: every line is assigned a role before a factor is considered, and only activity lines reach factor selection. Country grid electricity added for Germany (Umweltbundesamt) and 26 EU member states (European Environment Agency); the selection hierarchy and attribution restated accordingly. Credit notes now carry negative emissions instead of being dropped; cancelled certificates declared beside the supply they cover are folded into it rather than counted twice, and keep a location-based comparator at the grid the line was classified on; unresolvable lines are recorded with no emission figure rather than zero.
v1.1 · 24 April 2026
Factor sources restated against the production library; selection hierarchy documented. Ecoinvent moved to enterprise-only customer-procured add-on; EPA removed from the 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.