{"_id":"584ad7a40b85f22700444de8","parentDoc":null,"category":{"_id":"577f8476a77c700e006a6c52","project":"574ff4bd3fa1870e00889ba6","version":"574ff4bd3fa1870e00889ba9","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2016-07-08T10:46:14.043Z","from_sync":false,"order":14,"slug":"open-rtb-23-native-extention-version-11","title":"Open RTB 2.3"},"user":"574ff3adaef76a0e00840968","__v":0,"project":"574ff4bd3fa1870e00889ba6","version":{"_id":"574ff4bd3fa1870e00889ba9","project":"574ff4bd3fa1870e00889ba6","__v":21,"createdAt":"2016-06-02T08:56:29.492Z","releaseDate":"2016-06-02T08:56:29.492Z","categories":["574ff4bd3fa1870e00889baa","577278ecdceb570e003a9001","577279865617b117009e643f","577279985617b117009e6440","577279bc8c48e00e00503504","5774fe18605b770e0037be8a","577ce3ad87acf617003c4187","577f8476a77c700e006a6c52","57b486ae0d2b640e00e9d3f5","57b722133d3e620e004ec74b","57bd95f00fe3a00e003e2cc5","57c8349359cd4b0e00b888ef","57c8349b5754fa1700b12242","57cedb0bad483e0e00890239","57cedbe807d7ea0e00e438cc","57d82967156ef72b007ffcd8","58ee353ad1ee2f0f0034a13d","596623221738df00298622a5","59a51730192dba000fc9ca38","59a8129f1e7b26000fa0fb1a","5a0322bf044b6f001c236e36"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"3.0.0","version":"3.0"},"updates":[],"next":{"pages":[],"description":""},"createdAt":"2016-12-09T16:11:16.037Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":true,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":6,"body":"Pubnative publisher base is distributed into 2 types based on the API version used -\n\n- API V2\n- API V3\n\nIt is important to understand the difference between the two API versions and its impact on billing.\n\n# Scenario1 - API v2 publishers\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/a6e56be-Apiv2.png\",\n        \"Apiv2.png\",\n        804,\n        234,\n        \"#cce0ef\"\n      ]\n    }\n  ]\n}\n[/block]\n1. Publishers using API v2 trigger PN impression tracking URL client side on the event of impression confirmation.\n2. Once PN Ad server receives the PN impression tracking URL, PN triggers `nurl` server side.\n3. We expect the DSP to respond with 2xx response. (Ideally, at this step, DSP counts an imp on their side)\n4. Once PN Ad server receives a 2xx response, PN counts an impression.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"Note : In case DSP responds with status code other than 2xx, PN will consider it as a failure and retry to get the expected response. During this phase, PN does not count an impression. This is a major cause of impression discrepancy.\",\n  \"title\": \"Guidelines for DSPs (Scenario 1)\"\n}\n[/block]\n # Scenario2 - API v3 publishers\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/1e1310f-APiv3.png\",\n        \"APiv3.png\",\n        804,\n        240,\n        \"#cde0ef\"\n      ]\n    }\n  ]\n}\n[/block]\n1.\t Publishers using API v3 on client side trigger -\n   1.1\tPN impression tracking url on the event of impression confirmation.\n   1.2\t`nurl` on the event of impression confirmation.\n   1.3  \t`imptracker` on the event of impression confirmation.\n2.\tOnce PN receives the PN impression tracking URL, PN counts it as a confirmed    impression.\n3. \tOnce DSP receives the `nurl` OR  `imptrackers`  (triggered client side)  DSP counts it as a confirmed impression.\n[block:callout]\n{\n  \"type\": \"warning\",\n  \"body\": \"- Always respond to an incoming `nurl` with a 2xx status code.\\n- Post the above step, DSP should count an impression on their end.\\n- DSPs using `imptrackers` for impression counting have to still respond to `nurl` with a 2xx status code to avoid impression discrepancies.\",\n  \"title\": \"Guidelines for DSPs (Scenario 2)\"\n}\n[/block]","excerpt":"","slug":"billing-information","type":"basic","title":"- Billing Information"}

- Billing Information


Pubnative publisher base is distributed into 2 types based on the API version used - - API V2 - API V3 It is important to understand the difference between the two API versions and its impact on billing. # Scenario1 - API v2 publishers [block:image] { "images": [ { "image": [ "https://files.readme.io/a6e56be-Apiv2.png", "Apiv2.png", 804, 234, "#cce0ef" ] } ] } [/block] 1. Publishers using API v2 trigger PN impression tracking URL client side on the event of impression confirmation. 2. Once PN Ad server receives the PN impression tracking URL, PN triggers `nurl` server side. 3. We expect the DSP to respond with 2xx response. (Ideally, at this step, DSP counts an imp on their side) 4. Once PN Ad server receives a 2xx response, PN counts an impression. [block:callout] { "type": "warning", "body": "Note : In case DSP responds with status code other than 2xx, PN will consider it as a failure and retry to get the expected response. During this phase, PN does not count an impression. This is a major cause of impression discrepancy.", "title": "Guidelines for DSPs (Scenario 1)" } [/block] # Scenario2 - API v3 publishers [block:image] { "images": [ { "image": [ "https://files.readme.io/1e1310f-APiv3.png", "APiv3.png", 804, 240, "#cde0ef" ] } ] } [/block] 1. Publishers using API v3 on client side trigger - 1.1 PN impression tracking url on the event of impression confirmation. 1.2 `nurl` on the event of impression confirmation. 1.3 `imptracker` on the event of impression confirmation. 2. Once PN receives the PN impression tracking URL, PN counts it as a confirmed impression. 3. Once DSP receives the `nurl` OR `imptrackers` (triggered client side) DSP counts it as a confirmed impression. [block:callout] { "type": "warning", "body": "- Always respond to an incoming `nurl` with a 2xx status code.\n- Post the above step, DSP should count an impression on their end.\n- DSPs using `imptrackers` for impression counting have to still respond to `nurl` with a 2xx status code to avoid impression discrepancies.", "title": "Guidelines for DSPs (Scenario 2)" } [/block]