InsertionOrder Data Object - Customer Billing
An insertion order is a contract that establishes the maximum amount you will spend on your account over a specified period of time. If you have monthly invoice billing set up for your account, you need to have an active insertion order for your ads to be eligible for delivery. You still control your spend using your campaign budget, and you will only be charged for what you accrue. For example, if you had a month-long insertion order for $5,000 and accrued only $4,500 in charges over the billing period, then we will only deduct $4,500 from your insertion order budget.
Warning
The insertion order budget only applies to ad spend, which is an important distinction if your business is in a country/region where online services are taxed. If you have a strict budget limit, you may need to account for taxes in your insertion order budget. To learn more about tax requirements in your business location, see the Tax or VAT information help article.
Most elements of this object can only be set before the insertion order becomes approved i.e., if the Status is set to PendingUserReview. In that case you can either make new changes or approve or decline the insertion order via elements of this object. Once the insertion order Status is Active, Exhausted, Expired, or NotStarted, then you can either make new changes or approve or decline the current pending changes via the PendingChanges element. If the insertion order Status is Canceled or Declined then you cannot update the insertion order.
Note
The SearchInsertionOrders operation will return up to 24 insertion orders per recurring series.
You can retrieve but with very few exceptions cannot add or update an insertion order series via the Bing Ads API. Use the IsInSeries element to determine whether the insertion order is in a recurring series.
- If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error.
- If you update the Status of an insertion order that is part of a recurring series, the status update will be applied to all insertion orders in the series.
To manage recurring insertion orders in the Microsoft Advertising web application, see the How do I create and edit an insertion order? help article.
<xs:complexType name="InsertionOrder" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:sequence>
<xs:element minOccurs="0" name="AccountId" type="xs:long" />
<xs:element minOccurs="0" name="BookingCountryCode" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Comment" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="EndDate" nillable="true" type="xs:dateTime" />
<xs:element minOccurs="0" name="Id" nillable="true" type="xs:long" />
<xs:element minOccurs="0" name="LastModifiedByUserId" nillable="true" type="xs:long" />
<xs:element minOccurs="0" name="LastModifiedTime" nillable="true" type="xs:dateTime" />
<xs:element minOccurs="0" name="NotificationThreshold" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="ReferenceId" nillable="true" type="xs:long" />
<xs:element minOccurs="0" name="SpendCapAmount" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="StartDate" nillable="true" type="xs:dateTime" />
<xs:element minOccurs="0" name="Name" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="Status" nillable="true" type="tns:InsertionOrderStatus" />
<xs:element minOccurs="0" name="PurchaseOrder" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="PendingChanges" nillable="true" type="tns:InsertionOrderPendingChanges" />
<xs:element minOccurs="0" name="AccountNumber" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="BudgetRemaining" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="BudgetSpent" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="BudgetRemainingPercent" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="BudgetSpentPercent" nillable="true" type="xs:double" />
<xs:element minOccurs="0" name="SeriesName" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="IsInSeries" nillable="true" type="xs:boolean" />
<xs:element minOccurs="0" name="SeriesFrequencyType" nillable="true" type="xs:string" />
<xs:element minOccurs="0" name="IsUnlimited" nillable="true" type="xs:boolean">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" name="IsEndless" nillable="true" type="xs:boolean">
<xs:annotation>
<xs:appinfo>
<DefaultValue EmitDefaultValue="false" xmlns="http://schemas.microsoft.com/2003/10/Serialization/" />
</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
Elements
The InsertionOrder object has the following elements: AccountId, AccountNumber, BookingCountryCode, BudgetRemaining, BudgetRemainingPercent, BudgetSpent, BudgetSpentPercent, Comment, EndDate, Id, IsEndless, IsInSeries, IsUnlimited, LastModifiedByUserId, LastModifiedTime, Name, NotificationThreshold, PendingChanges, PurchaseOrder, ReferenceId, SeriesFrequencyType, SeriesName, SpendCapAmount, StartDate, Status.
Element | Description | Data Type |
---|---|---|
AccountId | The identifier of the account to which the insertion order applies. You cannot update the account identifier after you create the insertion order. Add: Required Update: Read-only |
long |
AccountNumber | The system-generated account number that is used to identify the account in the Microsoft Advertising web application. The account number has the form xxxxxxxx, where xxxxxxxx is a series of any eight alphanumeric characters. Add: Read-only Update: Read-only |
string |
BookingCountryCode | Reserved for internal use. Add: Required for some accounts; Optional for some accounts. Update: Read-only |
string |
BudgetRemaining | The running balance of the insertion order. The running balance value is initially the same as the SpendCapAmount, and then decreases each time an ad in the account is served. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only |
double |
BudgetRemainingPercent | The percent of budget remaining for the insertion order. This value is calculated as BudgetRemaining / SpendCapAmount. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only |
double |
BudgetSpent | The remaining balance of the insertion order. The remaining balance is initially 0 (zero), and then increases towards the SpendCapAmount each time an ad in the account is served. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only |
double |
BudgetSpentPercent | The percent of budget spent for the insertion order. This value is calculated as BudgetSpent / SpendCapAmount. This element is empty if the insertion order has unlimited budget. Add: Read-only Update: Read-only |
double |
Comment | A description of the insertion order. The description is limited to 100 characters. Add: Optional Update: Optional |
string |
EndDate | The date that the insertion order expires. The end date must be later than the start date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Note: If the insertion order has no end date, EndDate is empty. Adding or updating unlimited insertion orders isn't supported. EndDate operates in read-only mode. Add: Required Update: Optional. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error. |
dateTime |
Id | A system-generated identifier that identifies the insertion order. Add: Read-only Update: Read-only and Required |
long |
IsEndless | Determines whether the insertion order has no end date. If the value is True, the insertion order will have no end date and the EndDate of this insertion order will be ignored. Add: Optional Update: Optional |
boolean |
IsInSeries | Determines whether the insertion order is in a recurring series. If the value is True, the insertion order is part of a recurring series. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error. If you update the Status of an insertion order that is part of a recurring series, the status update will be applied to all insertion orders in the series. Add: Read-only Update: Read-only |
boolean |
IsUnlimited | Determines whether the insertion order has unlimited budget. If the value is True, the insertion order will have unlimited budget and the SpendCapAmount of this insertion order will be ignored. Add: Optional Update: Optional |
boolean |
LastModifiedByUserId | An identifier of the last user to update the insertion order. Add: Read-only Update: Read-only |
long |
LastModifiedTime | The date and time that the insertion order was last updated. The date is stored in Coordinated Universal Time (UTC). For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Read-only Update: Read-only |
dateTime |
Name | The friendly name that can be used to reference this insertion order. The name can contain a maximum of 100 characters. The name does not need to be unique compared to other insertion orders for the customer. Add: Optional Update: Optional |
string |
NotificationThreshold | A percentage of the budget that has been spent. Specify the percentage as a value from 0 to 100. Notification is sent when the threshold is reached. For example, if you set the threshold to 70, the Billing service sends notification when you have spent 70 percent of the budget. If you do not want to receive notification, set to NULL. Reserved for internal use. Add: Optional Update: Optional |
double |
PendingChanges | Can be used to manage changes for an approved insertion order with status set to either Active, Exhausted, Expired, or NotStarted. Add: Read-only Update: Optional |
InsertionOrderPendingChanges |
PurchaseOrder | A purchase order value that can be used to reference this insertion order in monthly invoices. This value will be printed as the purchase order in the monthly invoices. The purchase order can contain a maximum of 50 characters. Add: Optional Update: Optional |
string |
ReferenceId | Reserved for internal use only. Add: Optional Update: Optional |
long |
SeriesFrequencyType | Determines how an order recurs in the series. The possible values are Monthly, BiMonthly, Quarterly, and Yearly. Add: Read-only Update: Read-only |
string |
SeriesName | The name of the recurring insertion order series. The name can contain a maximum of 100 characters. Even if the insertion order is later removed from the recurring series, this element will continue to reflect the name of the series it was created in. Add: Read-only Update: Read-only |
string |
SpendCapAmount | The budget for this insertion order. The budget is a hard limit. When the account reaches this limit and there is not another insertion order available, the account's lifecycle status value is set to Pause. This element is empty if the insertion order has unlimited budget. The budget is the maximum amount of money you want to spend for an insertion order. For insertion orders with unlimited budget, your budget is bounded by your credit limit. In that case each campaign's daily budget determines the maximum spend. Note: Adding or updating unlimited insertion orders isn't supported. SpendCapAmount operates in read-only mode. Add: Required Update: Optional |
double |
StartDate | The date that the insertion order can begin accruing charges. The start date must be later than the current date. The date is stored in Coordinated Universal Time (UTC). Only the month, day, and year of the specified string are used. If you specify the hour, minutes, and seconds of a date they will be ignored. For information about the format of the date and time, see the dateTime entry in Primitive XML Data Types. Add: Required Update: Optional. You can only update the start date via this element if the Status is PendingUserReview. If the start date has already passed, then you cannot change it. If you attempt to update the StartDate or EndDate of an insertion order that is part of a recurring series the API will return an error. |
dateTime |
Status | The status of the insertion order. Add: Read-only. Insertion orders that you create are immediately set to Active, NotStarted, or Declined. Update: Required to approve or decline an insertion order that is not yet approved, or cancel an insertion order that has already be approved. You can only approve or decline via this element if the current status is set to PendingUserReview. You can only cancel via this element if the current status is set to Active, Exhausted, or NotStarted. Once the insertion order status is Active, Exhausted, Expired, or NotStarted, then you can either make new changes or approve or decline the current pending changes via the PendingChanges element. When you call UpdateInsertionOrder you can either set this Status element or modify other elements of this object, but you cannot change the status in parallel with other property updates. If you update the Status of an insertion order that is part of a recurring series, the status update will be applied to all insertion orders in the series. |
InsertionOrderStatus |
Requirements
Service: CustomerBillingService.svc v13
Namespace: https://bingads.microsoft.com/Customer/v13/Entities
Used By
AddInsertionOrder
SearchInsertionOrders
UpdateInsertionOrder