You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[Change] § 5.6.1 — State what commitment.amount includes (rate basis, third-party fees, tax) #115
Change a normative requirement (MUST / SHOULD / MAY)
Which section?
5.6 — Commercial terms
Current text
|`amount`| REQUIRED | The figure committed ||`currency`| REQUIRED when `basis = spend`| ISO-4217 |
Proposed text
§ 5.6.1, after the table:
When `basis` is `spend`, `amount` is the media cost the buyer pays the seller,
priced at `pricing[].agreed_rate`. It excludes amounts the buyer pays to parties
other than the seller (agency commission, DSP or technology fees, data and
verification costs). If the seller itself bills a cost for this line item
(e.g. data or production), that cost appears as its own `pricing[]` entry and is
included in `amount`. `amount` excludes taxes unless `billing.tax_inclusive` is
true.
§ 5.10, `billing`: add OPTIONAL `tax_inclusive` (boolean, default false).
Why
A buyer agent commits against a client budget that is usually stated gross (including agency commission and fees) or net (working media). If amount doesn't say which, the same $100,000 commitment can be read as two different media spends, and reconciliation against the seller's invoice (§ 5.10) can't succeed. This needs only a definition, not new pricing machinery. It fits with #94 (what several pricing[] entries mean) and #30 (how agreed_rate is derived).
Knock-on effects
derived_units is unaffected; it is already computed from agreed_rate.
Would this break an implementation already built to this draft?
No — additive or editorial.
Filed after the 2026-10-22 close of the comment period, so we understand this is post-comment and for the next draft. Submitted by Hypermindz (buy-side agentic media planning platform).
Proposed wording and reproducible fixtures: PR #117.
There is an interaction with #94 to settle before this wording lands.
That proposal makes pricing[] entries alternatives, so a seller fee in a
second entry would be another choice rather than an additive charge.
Including a fixed fee in amount also changes the unit calculation. With
USD 50,000 committed at USD 25 CPM and a USD 2,500 production fee inside that
amount, media spend is USD 47,500 and derived_units is 1,900,000 impressions.
Computing units from all USD 50,000 implies 2,000,000 impressions and a
USD 52,500 seller total after the fee.
Select one pricing alternative. Do not sum alternative rows.
Keep applicable one-time seller charges outside the unit rate. Selected delta_flat options cover the initial cases; a general mandatory-fee
structure needs its own decision.
For fee-inclusive spend, use (amount - flat_charges) / agreed_rate * rate_per.
For a units commitment, use amount / rate_per * agreed_rate + flat_charges
for the seller total, and apply budget bounds to that total.
I have prepared focused wording and supporting calculation vectors. They keep
floor composition and automatic acceptance with the separate #30 discussion;
passing the arithmetic does not establish acceptance. Tax-inclusive amounts
need a defined tax amount or calculation before the same derivation can apply.
Member of the IAB Tech Lab Agentic Taskforce, commenting in a personal capacity.
Thanks, @dineshbhat. Postindustria (IAB Tech Lab member) supports defining commitment.amount (§ 5.6.1). Two parts conflict with other open change requests:
Fees as pricing[] entries. The text says a seller cost "appears as its own pricing[] entry and is included in amount". Our cost-method change request (#94) makes entries alternatives: "The buyer commits under exactly one". As @aleksUIX notes, a fee there is another choice, not a charge. Selected delta_flat options (§ 3.1 Selectable structure) carry optional seller charges, as PR #117 proposes. A mandatory charge, such as production, still needs a home.
Gross or net.amount is "priced at pricing[].agreed_rate" and excludes "agency commission". That holds only if agreed_rate is net of commission. BCN's ordered adjustments change request (#103) makes it the rate before commission: in the print example (#102), agreed_rate is 20,900 and seller_rate is 17,765, after 15% agency commission. They can't both hold. Our revision on #94 avoids the choice: amount uses the same terms as agreed_rate, whichever basis the working group picks.
Open questions:
How should a mandatory seller charge, such as production or data, be represented: as a § 3.1 option the buyer must select (§ 3.1 has max_select but no minimum today), as a fee object on the line item, or inside the unit rate? The fee-basis PR (#117) leaves this open.
Should pricing[].agreed_rate be gross of agency commission, as the ordered adjustments change request (#103) proposes, so that a commission-exclusive amount is priced at the rate after commission, or net of it, as this issue reads it? Open question 3 in our reply on #30 adds a third option: a rate_basis declared per pricing[] entry.
Analyzed and generated with the help of Claude, fully reviewed by me.
Activity
aleksUIX commentedon Oct 24, 2026
Proposed wording and reproducible fixtures: PR #117.
There is an interaction with #94 to settle before this wording lands.
That proposal makes
pricing[]entries alternatives, so a seller fee in asecond entry would be another choice rather than an additive charge.
Including a fixed fee in
amountalso changes the unit calculation. WithUSD 50,000 committed at USD 25 CPM and a USD 2,500 production fee inside that
amount, media spend is USD 47,500 and
derived_unitsis 1,900,000 impressions.Computing units from all USD 50,000 implies 2,000,000 impressions and a
USD 52,500 seller total after the fee.
I suggest resolving the fee basis alongside #94:
delta_flatoptions cover the initial cases; a general mandatory-feestructure needs its own decision.
(amount - flat_charges) / agreed_rate * rate_per.amount / rate_per * agreed_rate + flat_chargesfor the seller total, and apply budget bounds to that total.
I have prepared focused wording and supporting calculation vectors. They keep
floor composition and automatic acceptance with the separate #30 discussion;
passing the arithmetic does not establish acceptance. Tax-inclusive amounts
need a defined tax amount or calculation before the same derivation can apply.
Member of the IAB Tech Lab Agentic Taskforce, commenting in a personal capacity.
KonstantinMirin commentedon Oct 25, 2026
Thanks, @dineshbhat. Postindustria (IAB Tech Lab member) supports defining
commitment.amount(§ 5.6.1). Two parts conflict with other open change requests:pricing[]entries. The text says a seller cost "appears as its ownpricing[]entry and is included inamount". Our cost-method change request (#94) makes entries alternatives: "The buyer commits under exactly one". As @aleksUIX notes, a fee there is another choice, not a charge. Selecteddelta_flatoptions (§ 3.1 Selectable structure) carry optional seller charges, as PR #117 proposes. A mandatory charge, such as production, still needs a home.amountis "priced atpricing[].agreed_rate" and excludes "agency commission". That holds only ifagreed_rateis net of commission. BCN's ordered adjustments change request (#103) makes it the rate before commission: in the print example (#102),agreed_rateis 20,900 andseller_rateis 17,765, after 15% agency commission. They can't both hold. Our revision on #94 avoids the choice:amountuses the same terms asagreed_rate, whichever basis the working group picks.Open questions:
max_selectbut no minimum today), as a fee object on the line item, or inside the unit rate? The fee-basis PR (#117) leaves this open.pricing[].agreed_ratebe gross of agency commission, as the ordered adjustments change request (#103) proposes, so that a commission-exclusiveamountis priced at the rate after commission, or net of it, as this issue reads it? Open question 3 in our reply on #30 adds a third option: arate_basisdeclared perpricing[]entry.Analyzed and generated with the help of Claude, fully reviewed by me.