Field required by the declared exchange profile
An exchange profile was declared, and a field that exchange documents as required is missing or empty.
What it means
The payload was validated against an exchange profile (today, google-ab for Google Authorized Buyers). That profile documents extra required fields the OpenRTB specification leaves optional. Google's bid request requires Imp.ext.billing_id, the eligible billing IDs a winning bid may attribute the impression to.
Why it matters
A payload that is valid OpenRTB can still be undeliverable on a specific exchange. Without the profile, billing_id is just another extension and at: 3 is an illegal auction type. Declaring the profile is how the extra protocol is asked for rather than guessed.
How to fix it
Populate the field the profile names, or drop --profile / profile: google-ab if you meant the specification only. Floors, blocklists, and other business policy are not encoded here.
Example that trips it
{ "id": "req-1", "imp": [{ "id": "1", "banner": { "w": 300, "h": 250 } }] }Validated with --profile google-ab. The same payload is valid against the specification, which does not require Imp.ext.billing_id.
Check your payload
Paste a bid request or response into the tester to see whether this code fires against it, or gate on the id in CI with the CLI: the id is stable, wording is not.
Back to the full diagnostic code reference.