> ## Documentation Index
> Fetch the complete documentation index at: https://docs.interchange.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update Storefront billing policy

> Choose consolidated or direct media billing for the authenticated buyer account and one selected Storefront while its policy is unlocked. Fails closed after the first eligible activation dispatch locks the policy. Requires ADMIN role on the current account.



## OpenAPI

````yaml /v2/buyer-api-v2.yaml put /storefronts/{storefrontId}/billing-policy
openapi: 3.0.0
info:
  title: Scope3 Buyer API
  version: 2.0.0
  description: |-
    REST API for advertisers to manage advertisers, campaigns, and reporting.

    ## Authentication

    All endpoints require a Bearer token in the Authorization header:
    ```
    Authorization: Bearer your-api-key
    ```

    ## Base URL

    `https://api.interchange.io/api/v2/buyer`

    ## For AI Agents

    AI agents can use the MCP endpoint at `/mcp/v2/buyer` with three tools:
    - `initialize`: Start an MCP session
    - `api_call`: Make REST API calls
    - `ask_about_capability`: Learn about API features
servers:
  - url: https://api.interchange.io/api/v2/buyer
    description: Production server
security: []
tags:
  - name: Signup
    description: Request reviewed access to Interchange
  - name: Account
    description: Account management, service tokens, and preferences
  - name: Asks
    description: >-
      What you are waiting on Scope3 for — support, product, and supply asks in
      one list
  - name: Advertisers
    description: Manage advertisers
  - name: Product Discovery
    description: Discover and select products
  - name: Campaigns
    description: Manage advertising campaigns
  - name: Creatives
    description: Build, manage, and sync campaign creatives via AdCP Creative Protocol
  - name: Reporting
    description: Access performance metrics
  - name: Event Sources
    description: >-
      Manage event source configurations and log conversion/marketing events for
      attribution
  - name: Property Lists
    description: Validate property lists against AAO registry
  - name: Sales Agents
    description: View and connect sales agents
  - name: Measurement
    description: Measurement sources, records, context, and freshness
  - name: Syndication
    description: Syndicate resources to ADCP agents
  - name: Tasks
    description: Track async operation status
  - name: Buyer Billing
    description: >-
      Consolidated invoicing for buyers — invoices and pending invoice items
      issued by Scope3 across the buyer customer.
  - name: MCP
    description: Model Context Protocol endpoints for AI agents
paths:
  /storefronts/{storefrontId}/billing-policy:
    put:
      tags:
        - Storefronts
      summary: Update Storefront billing policy
      description: >-
        Choose consolidated or direct media billing for the authenticated buyer
        account and one selected Storefront while its policy is unlocked. Fails
        closed after the first eligible activation dispatch locks the policy.
        Requires ADMIN role on the current account.
      operationId: updateBuyerStorefrontBillingPolicy
      parameters:
        - in: path
          name: storefrontId
          schema:
            description: Storefront ID
            type: integer
            maximum: 9007199254740991
            minimum: 1
          required: true
          description: Storefront ID
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorefrontBillingPolicyUpdateBody'
      responses:
        '200':
          description: Update Storefront billing policy
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorefrontBillingPolicyUpdateResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: Admin role required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: >-
            The Storefront is not selected, or its billing policy is already
            locked.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    StorefrontBillingPolicyUpdateBody:
      description: Unlocked account-level billing preference for one selected Storefront.
      type: object
      properties:
        requestedParty:
          type: string
          enum:
            - agent
            - operator
      required:
        - requestedParty
      additionalProperties: false
    StorefrontBillingPolicyUpdateResponse:
      type: object
      properties:
        requestedParty:
          type: string
          enum:
            - agent
            - operator
      required:
        - requestedParty
      additionalProperties: false
    ErrorResponse:
      description: Standard error response
      type: object
      properties:
        data:
          type: string
          nullable: true
          enum:
            - null
        error:
          $ref: '#/components/schemas/ApiError'
      required:
        - data
        - error
      additionalProperties: false
    ApiError:
      description: Structured error object
      type: object
      properties:
        code:
          description: Machine-readable error code
          type: string
        message:
          description: Human-readable error message
          type: string
        field:
          description: Field path associated with the error
          type: string
        details:
          description: Additional error context
          type: object
          additionalProperties: {}
      required:
        - code
        - message
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: API key or access token

````