Account Fees

This page explains in more detail how to leverage the Account Fees feature through the API

Introduction

The Account Fees API allows Private Market retailers to manage fee settings for their accounts through the external API. This includes retrieving fees for one or more accounts and updating those fees where permitted.


Endpoints

VerbEndpointDescription
POST/preview/retail-media/accounts/fees/searchThis endpoint allows users to retrieve fee settings for one or more accounts they have access to.
POST/preview/retail-media/accounts/fees/updateThis endpoint allows Private Market retailers to update fees for child seller or demand accounts.


Search Account Fees

https://api.criteo.com/preview/retail-media/accounts/fees/search

This endpoint allows users to retrieve fee settings for one or more accounts they have access to.

You can find more details in the API reference for this endpoint here.

📘

This endpoint does not require Account Manage scope nor consent to the parent supply account.


Attributes

Attribute

Data Type

Description

Writeable

Nullable

accountIds

list

Account ID
Accepted values: string of int64
Up to 25 account IDscan be queried at once.

Y

N


Optional Query Parameters

Query Parameters

Data Type

Description

offsite

integer

Pagination parameter, see API Response

limit

integer

Pagination parameter, see API Response

fields

list

Comma-separated list of optional attributes to include in the response.
Used to optimize response time and payload length.


Request Body

{
  "data": {
    "attributes": {
      "accountIds": [
        "667131474078658560",
        "680116036401160192"
      ]
    },
    "type": "AccountFeesSearchRequest"
  }
}

Please note that:

  • accountIds is optional.
  • accountIds: [""] → returns an empty response.
  • accountIds: [] → returns all accounts the user has consent to.
  • Up to 25 account IDs can be queried at once in the request.
  • Must be sent as an array — not as a comma-separated string.

Example Response

{
    "metadata": {
        "count": 2,
        "offset": 0,
        "limit": 50
    },
    "data": [
        {
            "type": "PrivateMarketAccountFees",
            "attributes": {
                "accountId": "667131474078658560",
                "fees": {
                    "demandManaged": {
                        "rate": 0.40
                    },
                    "managedService": {
                        "rate": 0.20,
                        "onsiteSponsoredProductsEnabled": false,
                        "onsiteDisplayEnabled": false
                    }
                }
            }
        },
        {
            "type": "PrivateMarketAccountFees",
            "attributes": {
                "accountId": "680116036401160192",
                "fees": {
                    "demandManaged": {
                        "rate": 0.10
                    },
                    "managedService": {
                        "rate": 0.15,
                        "onsiteSponsoredProductsEnabled": true,
                        "onsiteDisplayEnabled": false
                    }
                }
            }
        }
    ],
    "warnings": [],
    "errors": []
}

Update Account Fees (retailers only)

https://api.criteo.com/preview/retail-media/accounts/fees/update

This endpoint allows Private Market retailers to update fees for child seller or demand accounts. You can find more details about this endpoint in our API reference here.

To use this endpoint, users must meet the following requirements:

  • OAuth Scope: Account Manage
  • Consent:
    • To the parent supply account
    • To the child accounts for which fees are being managed

Attributes

Attribute

Data Type

Description

Writable

Nullable

accountIds

list

Account ID
Accepted values: string of int64

Y

N

fees

enum

Defines the set of fees you can set on the Account. Possible values:

  • demandManaged: DSP fee on private market demand account
  • managedService: Managed Service fee on private market demand account

N

N

rate

decimal

Value to apply as the demandManaged and/or managedService fee.
Accepted range: 0.00 to 1.00
Max precision: 2 decimal places

Y

N

managedService

enum

The managed service fee that is applied to the account.
Options:

  • onsiteDisplayEnabled
  • onsiteSponsoredProductsEnabled

N

N

onsiteDisplayEnabled

boolean

Indicates if Managed Service fee is enabled for Onsite Display.

Y

N

onsiteSponsoredProductsEnabled

boolean

Indicates if Managed Service fee is enabled for Sponsored Products.

Y

N


Feature flag

This functionality is available only to retailers who have the Private Market Fees setting enabled in their UI. If you do not see this feature in your account, please contact your support team or account representative.

To have access to this functionality, retailers must:

  • Have access to the fee configuration UI,
  • Enable either or both fee types:
  • Managed Service Fee
  • Demand Managed Fee

Request Body

{
  "data": {
    "attributes": {
      "accountIds": [
        "618738804747743232"
      ],
      "fees": {
        "demandManaged": {
          "rate": "0"
        },
        "managedService": {
          "onsiteDisplayEnabled": "true",
          "onsiteSponsoredProductsEnabled": "true",
          "rate": "0.01"
        }
      }
    },
    "type": "AccountFeesUpdateRequest"
  }
}

Validation Rules

  • accountIds is required — omitting it returns a 400 error.
  • demandManaged.rate must be a decimal between 0 and 1.
  • managedService.onsiteDisplayEnabled and onsiteSponsoredProductsEnabled must be boolean (true or false).

Example Response

{
  "data": {
    "type": "AccountFeesUpdateResult",
    "attributes": {
      "successfullyUpdatedAccountIds": [
        "618738804747743232"
      ],
      "failedUpdateAccountIds": []
    }
  },
  "warnings": [],
  "errors": []
}

Responses

Response

Title

🟢

200

Success

🔴

400

Bad Request: Model Validation Error. Check that the acceptable values for the attributes are correct.

🔴

403

API user does not have the authorization to make requests to the account ID. For an authorization request, follow

the authorization request steps

.


Error responses examples

Invalid permission

{
    "warnings": [],
    "errors": [
        {
            "type": "authorization",
            "title": "Authorization error",
            "detail": "Resource access forbidden: does not have permissions"
        }
    ]
}

Rate value is missing

{
    "warnings": [],
    "errors": [
        {
            "traceId": "bb1c3376097f47934484ea67bf8e2755",
            "type": "validation",
            "code": "model-validation-error",
            "title": "Model validation error",
            "detail": "Error converting value {null} to type 'System.Decimal'. Path 'data.attributes.fees.demandManaged.rate', line 9, position 20."
        },
        {
            "traceId": "bb1c3376097f47934484ea67bf8e2755",
            "type": "validation",
            "code": "model-validation-error",
            "title": "Model validation error",
            "detail": "Required property 'rate' expects a value but got null. Path 'data.attributes.fees.demandManaged', line 10, position 9."
        }
    ]
}