Browse the help center

Pricing reference

Every control of the Pricing card, the six pricing models side by side, the other pricing surfaces (Revenue share, Bid floor, CPM threshold, network defaults, general action pricing), the CSV upload format and the permissions the REST API checks — the companion to the Configure pricing guide.

Reference network manager advertiser Account → Advertisers → campaign → Pricing

The companion to Configure pricing. The guide has the steps, the caveats and the fix-it checklist; this page holds every control, the six models, the other pricing cards and the CSV format.

The six pricing models

Charged on is the event that books money; Per event is what the ad server records for one such event, from a configured price.

ModelOffered onCharged onPer event
CPMcampaign, banner, placement, siteevery impressionprice ÷ 1000
CPCcampaign, banner, placement, siteevery clickprice
CPAcampaign, banner, placement, siteevery conversionthe resolved action price, undivided
vCPMcampaign, banner, placement, siteevery viewable impressionprice ÷ 1000
Cost per dayplacement, site onlynothing at serve time0 — see below
Cost per monthplacement, site onlynothing at serve time0 — see below

vCPM pays on viewable impressions and on nothing else. An impression, a click and a conversion are all worth 0 to the side on vCPM, and each viewable impression books price ÷ 1000. The two sides are independent: a vCPM publisher can run a CPM advertiser, who is still charged per impression, and the other way round. A vCPM price set on a site covers its placements without a price of their own, and one on a campaign covers its banners, but a level below an entity priced on other terms never adds a second payment: the CPM placement of a vCPM site is paid per impression only. vCPM depends on the viewable impression being measured — see What vCPM does not cover.

The flat-fee models are not an ad-serving price at all. Ad serving books 0 gross and 0 net for a Cost-per-day or Cost-per-month placement. A scheduled job then rewrites the day’s publisher net in analytics: it divides the flat fee by the impressions the placement (or site) actually took in the period to get a synthetic CPM, then spreads that back over each row. The advertiser side is never touched, so a flat fee produces publisher payout only — there is no advertiser-facing flat fee anywhere in the product. A site’s flat fee overrides every price under it; details under Pricing precedence — corner cases.

The Pricing card’s controls

In on-screen order: the top row, then the add bar.

ControlAppears whenWhat it does
Card switchalwaysCreates or deletes the entity’s pricing record, with its country and action prices. Off means “this entity sets no price”; switching off asks for confirmation.
Use general pricingtype is CPALets the network-wide action prices fill in where this entity has none. It does not replace the entity’s own prices — see Pricing precedence.
Minimum margin / Margin value / Saveplacement or site, type CPM or vCPM, Manage Minimum Margin enabledThe smallest gap the network requires between the advertiser price and the publisher payout. Margin value appears once the type is not None; Save commits both. See Set a minimum margin.
Upload CSVtype is CPM, CPC, CPA or vCPMBulk import. Adds and updates only the countries the file mentions; every other existing row is left untouched. Format below.
Pricing typeeditableThe model. Options are filtered by your per-model permissions. Changing it deletes all existing prices.
Actionstype is CPAWhich conversion action the row prices. All means every action that has no price of its own. The grid column is headed Action.
Countrytype is CPM, CPC, CPA or vCPMWhich country the row prices. Global writes the fallback price; a region or custom country group writes one row per member country.
PricealwaysAccepts 0 to 1000000; stored to six decimal places.
AddeditableInserts the row, or overwrites the matching one.
Deleterows selectedRemoves the selected rows; the Global row is cleared rather than deleted.
eCPM optimization estimatescampaign only, type CPC or CPA, network optimization is eCPM with Burn-up, and Manage “eCPM Optimization” at enabled or read-only levelSeeds the optimizer before it has data: Estimated CTR and Min clicks on a CPC campaign, Estimated I2C and Min conversions on a CPA one, plus Start-Up period (h), Burn-Up period (h), Subperiod (h) and Subperiod weights. See Optimization.

The Global row has three states: Not set (countries without their own row fall through to the next rule), an explicit 0 (a real price that stops the fall-through — nothing paid, nothing charged, no lower rule consulted), and a value. Clearing the Price cell returns the row to Not set.

The other pricing surfaces

CardWhereWhat it does
Revenue sharesite, placementPays the publisher a percentage of the advertiser’s gross for the same event instead of a fixed price. Each binding names an advertiser and a campaign, either of which may be Any, and a Revenue share (%).
Bid floorsite, placement, bannerA per-country minimum CPM an OpenRTB DSP bid must clear; direct campaigns are not filtered by it. Use as publisher pricing makes the floor double as the payout. Needs Bid Floor Management, which only your network administrator can grant — see Set a bid floor.
Minimum marginsite, placementLives on the Pricing card itself. The ad-server counterpart of a bid floor for direct demand.
CPM ThresholdsiteA per-country revenue floor for the publisher, applied in reporting and payouts. It does not stop direct campaigns serving. See Site CPM threshold.
Network defaultsAdmin → Ad serving → Inventory & campaigns settingsA default fixed price (with its own country rows) and default revenue-share bindings, stamped onto every new site at creation. Changing them does not touch sites that already exist.
General action pricingthe conversion action’s own edit pageA network-wide CPA price per action, with its own country rows. This is what Use general pricing draws on.

On a site or placement the two payout cards always read in the same order — Revenue share first, Pricing second. With both switched on, a warning above the pair states which wins.

The revenue-share pickers name only advertisers you manage. The advertiser and campaign pickers offer every advertiser of the network, but one that is not shared with you (or that Mask campaigns hides from you) is listed by id — ADVERTISER_12, CAMPAIGN_34 — and a private advertiser you do not manage is not offered at all. The same masking applies to the names in the card’s grid.

Revenue share has no real on/off. The Revenue share switch only opens the editor; the feature counts as enabled the moment the first binding row exists — any row, including one bound to a single advertiser or campaign, not only the blanket Any / Any row. Switching it on saves nothing by itself, so add at least one binding before you leave: a switch turned on with no binding reads off again the next time the page loads. Switching it off deletes every binding, which is not reversible by switching it back on — so, on a site and on a placement alike, it asks Turn this off? first.

Regions and country groups

The Country dropdown offers world regions (Western Europe, LATAM, Asia, …) and any custom country groups alongside Global and the individual countries, because it shares its list with targeting. Picking one in the Add bar writes a row for each member country at the price you typed, overwriting any that already exists; the region itself is never stored. A CSV upload and the REST API do not expand them: a country there must be an individual country, as an ISO code or an English name, and anything else is reported as not recognised. List the member countries individually in those.

CSV format

Two columns for CPM, CPC and vCPM, headers spelled exactly Country and Price. For CPA the first header must be exactly _ and each further column is named after a conversion action (its name, or All); a * country sets the Global price. The delimiter may be comma, tab or semicolon and is detected automatically; the file must be UTF-8; a leading $ in a price is ignored. In a tab- or semicolon-delimited file a comma in the price is read as a decimal separator (1,50 → 1.50) as long as the value has no literal dot already — a comma-delimited file never gets this treatment, since there a comma can only be a quoted thousands separator. Countries are accepted as an ISO alpha-2 code or a full English name and are normalised to upper case (gb/GB is stored as UK, matching the Country picker).

Upload adds and updates only the countries the file mentions — rows already on the grid that the file does not mention are left exactly as they were, on every entity, the same as adding a country from the toolbar. Unrecognised countries and unparseable prices are reported one per line, each tagged with its line number, and the rest of the file still applies — a partial import is the normal outcome, not an aborted one. A price outside 0–1,000,000 is reported the same way as an error, and a country listed twice in one file keeps its first value, with the later lines reported as errors. The flat-fee models have no country table and no upload.

Permissions over the API

A price cannot be added before the switch is on: an entity whose Pricing card has never been switched on has no pricing record, and the REST call is refused with a 400 — No pricing is set yet: set it first with POST …/pricing.do — with nothing written. On a banner the console has a second precondition: the creative’s file must be present in storage, and a banner whose uploaded file has gone missing refuses prices with no message at all.

Changing the pricing type deletes the global price and every country and action row, in the console (after confirmation) and over the REST API alike: sending a different pricingType to a campaign’s or a site’s …/pricing.do deletes their country and action prices (placements under the site keep theirs). Over the API, choosing a pricing type also needs that type’s permission (for example CPA_PRICING_TYPE), exactly as the console’s type picker does — including the first time a campaign’s or banner’s pricing record is created, whether by …/pricing.do (CPM unless pricingType is sent) or by …/actionPricing.do (CPA). Without it the call is a 403 naming the permission and nothing is saved. In the console, adding a vCPM price to a campaign or banner (the global price or a country price, including on an entity already on vCPM) needs vCPM Pricing Type the same way: without it the add is a 403 naming VCPM_PRICING_TYPE. So do editing a price inline and uploading a CSV on a campaign or banner that is on vCPM: the edit is refused the same way, and the upload adds nothing and lists the missing permission as its error. On a campaign, if the network runs eCPM optimization and the campaign has collected optimization data, a second prompt offers to reset that data too. Adding or deleting a price can raise the same prompt.

The calls themselves are on Pricing over the REST API and MCP.

Related pages

Please disable Adblock
Are you using adblock? Disable it and reload the page to proceed to the destination page.

A registration has already been submitted from this page. Please try again in 10 minutes.