Before you start
- Supported activations: The API supports Multi-Seller campaigns only.
- Availability: Automated seller-level invoice deductions start with the December 2026 invoicing period.
- Report coverage: The report covers seller overdelivery only. A capped spend limit on your campaigns can create a separate invoice deduction, which is not included in this report.
- API version: The endpoint is available from version
2027-01, first released as a Release Candidate. Use2027-01as{version}. A Release Candidate can still change before the version becomes stable. - Endpoint type: The endpoint is synchronous and returns the report in the same request.
- Row limit: A report can contain up to 600,000 rows.
- Date range: A request can cover up to 31 days.
- Data history: Data starts on October 1, 2026. Earlier days are not available.
- Data availability: The report only includes consolidated days, whose amounts are final. A day is usually available about four hours after midnight in the advertiser’s timezone.
- Currency and timezone: All amounts are in the advertiser’s currency, and all days follow the advertiser’s timezone. Every response states both. The Standard Reporting API counts days in UTC unless you set its timezone parameter—
timezonein v2 ortimeZoneIdin the legacy endpoints—so set it to the advertiser’s timezone when you compare the two reports. - Required scope:
MarketingSolutions_Analytics_Read
When to use this API
Use this API when you run Multi-Seller campaigns and need to reconcile seller delivery and overdelivery for billing, especially when sellers use capped total budgets. Use the report to:- Reconcile the overdelivery deducted from your monthly Criteo invoice with the sellers it comes from.
- Support seller billing reconciliation when allocating Criteo costs across sellers.
- See which sellers, ad sets, and budgets overdeliver, day by day.
Endpoint
The base URL is:
Request model
The endpoint uses theSellerDeliveryReportSearch request body.
Request fields
Filter rules
- Leaving a filter out and sending an empty list mean the same thing: no filter.
- Values within one filter are combined with OR. Different filters are combined with AND.
- Filters do not add columns. Filtering on one ad set with
dimensions: ["sellerId", "day"]returns each seller’s daily totals for that ad set, without anadSetIdcolumn. ["3", "4"]inbudgetIdsreturns only these two budgets and excludes spend without a budget.["NULL"]returns only spend without a budget.["3", "NULL"]returns budget 3 plus spend without a budget.- Rows with no spend are never returned, so a day on which a seller did not spend has no row.
onlyOverdeliveringis applied after grouping, to the rows you requested, and works even whenoverDeliveryis not among the requested metrics.
Dimensions
You can combine
sellerId with any of adSetId, budgetId, and day. day is the only time dimension available.
Metrics
How overdelivery is calculated
Overdelivery has two sources:- Spend above a capped budget: When a seller uses up its capped budget, Criteo stops bidding for that seller, but the stop takes a short time to reach every part of the delivery system. Spend during that time is overdelivery.
- Spend without a budget: Occasionally, spend is recorded that cannot be attached to any budget, such as late spend that arrives after a budget has ended. All of it is overdelivery. The report shows it with
budgetIdset to"NULL".
Which budgets count
Only a capped total budget creates overdelivery. An uncapped total budget has no ceiling, so spend against it is never overdelivery. Daily budgets and campaign spend smoothing only pace delivery. Spending above them does not create overdelivery on its own. When a daily budget sits on top of a capped total budget, overdelivery is measured against the total budget only.How a capped budget is used up
Overdelivery is calculated for each budget and each day. Each day starts from what is left of the budget after the net delivery of the previous days:Budget changes
- The day’s final amount applies: Overdelivery for a day is calculated after the day ends, against the budget amount at the end of that day. If a seller spends 550 against a budget of 500 and you raise the budget to 700 before the day ends, that day has no overdelivery.
- Past days do not change: Raising a budget does not turn earlier overdelivery into billable spend. Once a day is consolidated, its amounts are final.
- Lowering a budget cannot create overdelivery by itself: A capped budget cannot be set below what it has already spent.
Budgets shared by several ad sets
A seller budget can be shared by several ad sets. The budget is checked once against their combined spend, and any overdelivery is split between the ad sets in proportion to their gross delivery. For example, a seller has one capped budget of 200 shared by two ad sets:
Ad set A generated 60% of the gross delivery, so it carries 60% of the overdelivery.
Effect on your invoice
Your monthly invoice is reduced by the totaloverDelivery of all your sellers over the invoicing period, including spend without a budget.
When a capped spend limit is also set on your campaigns, the total netDelivery is not the full invoice calculation. The separate deduction for spend above that limit is not part of this report.
Data availability
Overdelivery is calculated once a day, after the day has ended. A day is usually available about four hours after midnight in the advertiser’s timezone. For example, data for December 1 is available early on December 2. A day whose overdelivery has been calculated is consolidated. Its amounts are final, will not change, and are the amounts used for your invoice. Every response returnsmeta.lastConsolidatedDay, the latest consolidated day. Check that field rather than relying on a fixed time.
The report only includes consolidated days. The current day’s spend is not included until that day is consolidated. To follow spend during the day, use the Real-Time Monitoring API.
Generate a report synchronously
Use the endpoint to generate and download a report in a single request. A report is limited to 600,000 rows.Example request
This request returns every seller that overdelivered in December 2026, with one row per seller for the whole month.JSON response structure
The response uses ameta.columns array and a data array. Each row in data follows the same order as the columns.
overDelivery across all rows—69.60 EUR in this example—is the seller overdelivery deducted from the December invoice.
Seller 345678 had spend that was entirely overdelivery, so none of it is billed. With onlyOverdelivering set to true, the response stays smaller because most sellers do not overdeliver, and the total remains unchanged.
Response fields
Columns
Columns appear in this order:- The requested dimensions other than
day, in the order you sent them. periodStartDay.- The requested metrics, in the order you sent them.
meta.columns instead of hard-coding them.
Example: daily detail for one seller
This request returns seller123456 spend for December 1 and 2, split by ad set, budget, and day.
Request
Response
Recommended integration
- Reconciliation: Set
onlyOverdeliveringtotruewhen you reconcile overdelivery with your invoice. Rows without overdelivery do not affect the deduction, so leaving them out keeps the response small without changing the total. - Daily: Once
meta.lastConsolidatedDayhas moved to yesterday, request yesterday with thedaydimension to update each seller’s spend and overdelivery. - Monthly: After the last day of the month is consolidated, request the full month by seller without a
daydimension, as shown in the example request, to reconcile with your invoice. - Large marketplaces: Request the full month in one report rather than one day at a time. The 600,000-row limit is sized to fit a full month split by seller, ad set, and budget, especially with
onlyOverdelivering. Many smaller requests are more likely to be throttled with429. - Retries: On
429or500, retry with exponential backoff as described in API Error Codes. The endpoint only reads data, so retrying is safe.
Errors and HTTP status codes
HTTP status codes, the error object, and retry rules shared by all Criteo APIs are described in API Error Codes. Authentication errors (401), throttling (429), and server errors (500) follow that shared behavior. The codes below are specific to this endpoint.
Domain errors
Related documentation
- Standard Reporting API v2—for performance metrics by campaign, ad set, and seller.
- Real-Time Monitoring API—for following spend during the day.
- Managing Budgets—for capped, uncapped, and daily budgets in Multi-Seller campaigns.
- Latency in MPO—for reporting data latency and processing delays.
- Rate Limits—for rate limits and retry guidance.
- Authentication—for generating and using API access tokens.