AL+

Language: RO (română) EN (English)

Email us: paul@alplustech.com

Familiar billing columns still need a provider adapter

Cloudflare's partial FOCUS mapping shows why shared billing names need an adapter that preserves charge periods, metering units and unavailable fields.

Citiți articolul în română

Familiar column names make a billing feed easier to recognise. They do not establish a common cost contract. A cross-provider report still needs an adapter that preserves what each row measures, the period it covers and what the feed cannot supply. Otherwise, a tidy combined table can hide incompatible meanings behind matching labels and produce a comparison that its inputs do not support.

Cloudflare's 3 August 2026 Billable Usage API announcement makes the boundary explicit. It describes a partial mapping to FOCUS and expressly declines full conformance because required columns are missing. Looking back in November, that is a useful integration case. The dated announcement is not a substitute for verification of today's API schema or account-specific availability.

Treat each mapping as a claim

The announcement distinguishes directly matching fields from approximations and convenience fields. For example, ServiceFamilyName is described as close to a FOCUS service category, while CumulatedContractedCost is a convenience total. Neither should silently inherit the meaning of a different standard field. An adapter should retain the original distinction so the report can explain where a value came from.

This is more precise than declaring the whole feed compatible or incompatible. Some mappings can be useful exactly as supplied. Others require interpretation, and some information remains absent. The unit of review is the field and its intended use. An adapter can accept a partial common shape while declining to claim a complete standard representation.

Missing information should stay visibly missing. Supplying zero for an unavailable amount would claim knowledge the source does not provide. Guessing an identifier would suggest an attribution relationship that has not been established. A report can still be useful with gaps if readers know which comparisons remain supported and which require additional evidence before they can be made.

Preserve the row's time boundary

Charge periods determine which amounts belong together. A report that discards those boundaries cannot reliably distinguish an amount for one interval from an amount accumulated across several intervals. The announcement includes ChargePeriodStart and ChargePeriodEnd. Preserving both is a prerequisite for interpreting the row's stated coverage, even when the final display groups data into a larger reporting period.

A running total needs particular care. Adding successive cumulative amounts as if they were independent charges counts earlier coverage again. An adapter should identify which values represent the current row's period and which summarize a wider interval. That distinction belongs in the transformation itself, rather than an unwritten convention known only to the first person who built the dashboard.

The time at which data is retrieved is another fact. It should not silently replace the time the charge describes. A later retrieval can concern an earlier service period. If a reporting system keeps both concepts, a reviewer can discuss the observation and the charge without collapsing their chronology. This argument is about preserving meaning, rather than promising real-time spending control.

A unit is part of the amount

An amount of usage is incomplete without its metering unit. Requests and processing time describe different dimensions, even when both concern one service. Converting them to a single generic usage number destroys information the report needs. The adapter should preserve the unit alongside the quantity and document any deliberate conversion instead of letting a column name imply comparability.

The 6 July Workers Cache announcement offers concrete background: a cache hit can avoid CPU execution of the handler whose responses are cached while the request remains billable. Reduced execution therefore does not mean that every billing dimension disappears. This is a distinction in the vendor's stated model, not a measured saving, a current price quotation or an account-specific billing result.

It also limits attribution. Aggregate usage and cost do not automatically identify the cost of each application request. A report may allocate totals using an explicit policy, but that policy is an additional interpretation. It should be labelled as such. Otherwise, a derived allocation can be mistaken for a directly observed relationship between one request and one charge.

Partial alignment can still be valuable

The strongest counterargument is that a partial common shape can remove considerable integration work. Familiar field names can let a team reuse ingestion concepts and concentrate on the remaining differences. Full conformance is not a prerequisite for every useful comparison. It is a separate claim that should only be made when the required evidence supports it.

The right response is therefore an explicit adapter rather than rejection of partial alignment. Preserve exact mappings where justified, name approximations and retain gaps. A combined report can then answer a bounded question without pretending to answer every question covered by the standard. That is often more useful than a complete-looking export whose assumptions have disappeared during normalization.

Keep the adapter reviewable

For custom software development, a billing integration should explain its mapping and allocation rules alongside the report it produces. A maintainer should be able to trace a displayed amount to the source period, unit and transformation. This is an engineering requirement for interpretability, not financial advice or a promise of lower spending from adopting a particular tool.

The August announcement supports a historical analysis of partial alignment. It does not establish present Enterprise coverage, full FOCUS conformance or a one-to-one cost for each request. Keep those limits intact when designing the report. Shared names are a useful start; preserving the provider's actual measurement contract is what makes the combined result defensible.