Scope3 Buyer Billing API

Consolidated invoicing for buyers — invoices and pending invoice items issued by Scope3 across the buyer customer.

Operations 15

GET /billing/info Get billing information #
PUT /billing/info Update billing information (admin) #
GET /billing/account Get billing account #
GET /billing/iu-rate-card Get the organization IU Rate Card offer and acceptance state #
GET /billing/iu-rate-card/v2 Get the versioned organization IU commercial document #
GET /billing/iu-rate-card/document.pdf Download the current Commercial Offer proposal #
POST /billing/iu-rate-card/accept Accept an exact organization IU Rate Card offer #
POST /billing/payment-methods/setup Start adding a card (admin) #
GET /billing/payment-methods List payment methods #
DELETE /billing/payment-methods/{id} Remove a payment method (admin) #
POST /billing/payment-methods/pay-now Manually retry the outstanding failed charge (admin) #
GET /billing/invoice-activity Get invoice activity #
GET /billing/fee-invoices List fee invoices #
GET /billing/fee-invoices/{invoiceNumber} Get fee invoice #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scope3-buyer-billing-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scope3-buyer-billing-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Scope3 Buyer Billing API
  version: 2.0.0
  description: 'Operations tagged Buyer Billing across 2 of this provider''s published API definitions: scope3-buyer-openapi-original.yml, scope3-storefront-openapi-original.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.interchange.io/api/v2/buyer
  description: Production server
- url: https://api.interchange.io/api/v2/storefront
  description: Production server
tags:
- name: Buyer Billing
  description: Consolidated invoicing for buyers — invoices and pending invoice items issued by Scope3 across the buyer customer.
paths:
  /billing/info:
    get:
      operationId: getBillingInfo
      summary: Get billing information
      description: 'Get the billing information Scope3 issues invoices to for the authenticated customer: billing contact, email recipients, address, and tax ID.'
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Get billing information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingInfoResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    put:
      operationId: updateBillingInfo
      summary: Update billing information (admin)
      description: Update the billing information Scope3 issues invoices to. At minimum, a payer name and billing address are needed to issue an invoice. Admin-only.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                contactName:
                  description: Billing contact / payer name
                  type:
                  - string
                  - 'null'
                  minLength: 1
                  maxLength: 255
                email:
                  description: Email addresses invoices are sent to
                  maxItems: 10
                  type:
                  - array
                  - 'null'
                  items:
                    type: string
                    format: email
                    pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                ccEmails:
                  description: Email addresses CC’d on invoices
                  maxItems: 10
                  type:
                  - array
                  - 'null'
                  items:
                    type: string
                    format: email
                    pattern: ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
                phone:
                  description: Billing phone number
                  type:
                  - string
                  - 'null'
                  maxLength: 64
                address:
                  description: Billing street address, line 1
                  type:
                  - string
                  - 'null'
                  maxLength: 255
                address2:
                  description: Billing street address, line 2
                  type:
                  - string
                  - 'null'
                  maxLength: 255
                city:
                  description: Billing city
                  type:
                  - string
                  - 'null'
                  maxLength: 128
                region:
                  description: Billing state/province/region
                  type:
                  - string
                  - 'null'
                  maxLength: 128
                postalCode:
                  description: Billing postal/ZIP code
                  type:
                  - string
                  - 'null'
                  maxLength: 32
                countryAlpha2:
                  description: Billing country (ISO 3166-1 alpha-2)
                  example: US
                  type:
                  - string
                  - 'null'
                  pattern: ^[A-Z]{2}$
                taxId:
                  description: Tax/VAT identifier shown on invoices
                  type:
                  - string
                  - 'null'
                  maxLength: 64
      responses:
        '200':
          description: Update billing information (admin)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UpdateBillingInfoResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
    servers:
    - url: https://api.interchange.io/api/v2/buyer
      description: Production server
  /billing/account:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: getBillingAccount
      summary: Get billing account
      description: 'One consolidated view of the organization''s commercial account: plan and terms, effective pricing, intelligence usage, credit/prepay balance, agreements, child accounts, and the single next action (if any) needed to become or remain paid. Org-admin only; child-account requests resolve to the parent organization.'
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Get billing account
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetBillingAccountResponse'
        '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: ACCESS_DENIED (caller is not an org admin / eligible service token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/iu-rate-card:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: getIuRateCardOffer
      summary: Get the organization IU Rate Card offer and acceptance state
      description: Returns organization-wide IU offer and acceptance state, including any published plan and activity terms, applicable corporate discount, rollover policy, exact list/net prices, current immutable acceptance record, and history shared by buyer and storefront workloads. A new offer is returned only when an effective Rate Card is published and the billing organization is enrolled in the pilot; acceptance history remains readable outside the pilot.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Get the organization IU Rate Card offer and acceptance state
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetIuRateCardOfferResponse'
        '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: ACCESS_DENIED (caller is not a direct organization admin).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: CONFLICT (commercial configuration is ambiguous).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/iu-rate-card/v2:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: getIuRateCardOfferV2
      summary: Get the versioned organization IU commercial document
      description: Returns the expanded enterprise IU offer and acceptance document, including immutable proposal, payment-option, entitlement, support, and complete activity-schedule snapshots. This explicit version boundary keeps the original strict V2 response stable for deployed clients.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Get the versioned organization IU commercial document
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetIuRateCardOfferV2Response'
        '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: ACCESS_DENIED (caller is not a direct organization admin).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: CONFLICT (commercial configuration is ambiguous).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/iu-rate-card/document.pdf:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: downloadIuRateCardCommercialOfferDocument
      summary: Download the current Commercial Offer proposal
      description: Downloads the customer-facing PDF generated from the same immutable proposal snapshot shown in Plan & Billing. The route resolves only the authenticated organization's pending, upcoming, or current Commercial Offer. Exactly one of bindingId or offerVersion is required.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: bindingId
        schema:
          description: Accepted plan record to render. Exactly one of bindingId or offerVersion is required.
          type: string
          pattern: ^\d+$
      - in: query
        name: offerVersion
        schema:
          description: Pending offer version to render. Exactly one of bindingId or offerVersion is required.
          type: string
          pattern: ^v1:[0-9a-f]{64}$
      responses:
        '200':
          description: Download the current Commercial Offer proposal
          content:
            application/pdf:
              schema:
                $ref: '#/components/schemas/CommercialOfferDocumentPdf'
        '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: ACCESS_DENIED (caller is not a direct organization admin).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: No customer-facing Commercial Offer is available.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/iu-rate-card/accept:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    post:
      operationId: acceptIuRateCardOffer
      summary: Accept an exact organization IU Rate Card offer
      description: Creates the one initial immutable IU-plan acceptance record for a direct human organization admin. The server re-resolves the Rate Card, activity terms, plan, governing agreement, and corporate discount; a changed displayed offer must be reviewed again.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                offerVersion:
                  type: string
                  pattern: ^v1:[0-9a-f]{64}$
                planId:
                  type: string
                  pattern: ^\d+$
                paymentOptionKey:
                  type: string
                  minLength: 1
                  maxLength: 120
                  pattern: ^[a-z0-9][a-z0-9._-]*$
                idempotencyKey:
                  type: string
                  minLength: 8
                  maxLength: 128
                  pattern: ^[A-Za-z0-9._:-]+$
              required:
              - offerVersion
              - planId
              - idempotencyKey
              additionalProperties: false
      responses:
        '200':
          description: Accept an exact organization IU Rate Card offer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AcceptIuRateCardOfferResponse'
        '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: ACCESS_DENIED (a direct human organization admin is required).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '409':
          description: CONFLICT (the offer changed, the key was reused, or an accepted plan already exists).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/payment-methods/setup:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    post:
      operationId: setupPaymentMethod
      summary: Start adding a card (admin)
      description: Create a card-capture session for the organization and return the client secret the embedded card form needs, plus the publishable key to mount it. The saved method appears (via webhook-verified confirmation) in the payment-methods list and on the billing-account document; it is never inferred from the client-side confirmation alone. Org-admin humans only — service tokens are denied. 403 FEATURE_NOT_ENABLED until the buyer-card-collection flag is on for the organization.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Start adding a card (admin)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SetupPaymentMethodResponse'
        '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: FEATURE_NOT_ENABLED (flag off) or ACCESS_DENIED (not an org admin, or a service token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/payment-methods:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: listPaymentMethods
      summary: List payment methods
      description: The organization's active payment methods — display-safe metadata only (kind, brand, last4, expiry, status); never a card number or processor token. At most one active method today.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: List payment methods
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaymentMethodListResponse'
        '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: ACCESS_DENIED (caller is not an org admin / eligible service token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/payment-methods/{id}:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    delete:
      operationId: removePaymentMethod
      summary: Remove a payment method (admin)
      description: Remove a saved payment method. Denied with VALIDATION_ERROR when the method is load-bearing (it is the organization's only way to pay) — add a replacement card first, or set up invoicing. Org-admin humans only — service tokens are denied.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      parameters:
      - in: path
        name: id
        schema:
          description: Surrogate id of the payment-method row to remove.
          type: string
          pattern: ^\d+$
        required: true
        description: Surrogate id of the payment-method row to remove.
      responses:
        '200':
          description: Remove a payment method (admin)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemovePaymentMethodResponse'
        '400':
          description: VALIDATION_ERROR (the method is load-bearing — replace it instead of removing).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '403':
          description: ACCESS_DENIED (not an org admin, or a service token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /capture-links/{token}:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: exchangeCaptureLink
      summary: Open a payment capture link
      description: Exchange a capture-link token issued by the add_payment_authority task. No API key or session applies — the single-use token (valid 30 minutes, one verified card capture) is the authorization; the hosted capture page calls this on the cardholder's behalf. Marks the link opened and returns the org display name plus the embedded card form's client secret and publishable key while the link is still capturable; once verified or expired it returns the status alone. Pass `view=status` for a cheap status-only poll that opens nothing. Unknown or malformed tokens return a bare 404/400 with no organization information. Requests are IP rate-limited.
      tags:
      - Buyer Billing
      security: []
      parameters:
      - in: query
        name: view
        schema:
          description: 'Pass `status` for the cheap status-only poll: returns status and expiry without opening the link or minting card-form credentials.'
          type: string
          enum:
          - status
        description: 'Pass `status` for the cheap status-only poll: returns status and expiry without opening the link or minting card-form credentials.'
      - in: path
        name: token
        schema:
          description: The single-use capture-link token from the URL issued by add_payment_authority. The token is the authorization — no session or API key applies.
          type: string
          pattern: ^[A-Za-z0-9_-]{40,64}$
        required: true
        description: The single-use capture-link token from the URL issued by add_payment_authority. The token is the authorization — no session or API key applies.
      responses:
        '200':
          description: Open a payment capture link
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaptureLinkExchangeResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: NOT_FOUND (unknown token — deliberately indistinguishable from any other failure; no organization information is returned).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: RATE_LIMITED (per-IP enumeration cap).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/payment-methods/pay-now:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    post:
      operationId: payNow
      summary: Manually retry the outstanding failed charge (admin)
      description: Immediately re-attempts the organization's outstanding failed charge on the currently-saved card. Returns `processing` — the actual recovery (hold cleared, `nextAction` back to `NONE`) is confirmed asynchronously via a signature-verified Stripe webhook; poll GET /billing/account rather than inferring success from this response. Org-admin humans only — service tokens are denied (card actuation is a human/PCI boundary).
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Manually retry the outstanding failed charge (admin)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PayNowResponse'
        '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: ACCESS_DENIED (not an org admin, or a service token).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: NOT_FOUND (no outstanding failed charge to retry).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/invoice-activity:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: getInvoiceActivity
      summary: Get invoice activity
      description: 'Invoice activity for the caller''s org (status, kind, currency, amount, due/paid date). Rows project from the org''s issued IU fee invoices (kind: fees) — empty until the org''s first charged billing cycle closes. Dark-metered (cost_bearer=platform) usage is never billable and never appears.'
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: targetCustomerId
        schema:
          description: Direct child customer to read or update from an authorized parent billing organization
          type: string
          pattern: ^[1-9][0-9]*$
        description: Direct child customer to read or update from an authorized parent billing organization
      responses:
        '200':
          description: Get invoice activity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceActivityResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/fee-invoices:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: listFeeInvoices
      summary: List fee invoices
      description: The org's IU fee invoices, newest first — one per charged billing cycle, with gapless sequential numbering. Empty until the org's first charged cycle closes.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: targetCustomerId
        schema:
          description: Direct child customer to read or update from an authorized parent billing organization
          type: string
          pattern: ^[1-9][0-9]*$
        description: Direct child customer to read or update from an authorized parent billing organization
      responses:
        '200':
          description: List fee invoices
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeeInvoiceListResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /billing/fee-invoices/{invoiceNumber}:
    servers:
    - url: https://api.interchange.io/api/v2
      description: Production server
    get:
      operationId: getFeeInvoice
      summary: Get fee invoice
      description: One fee invoice with its line items (plan commitment, overage with IU quantity and rate, payments applied). Scoped to the caller’s org — another org’s invoice number is a 404.
      tags:
      - Buyer Billing
      security:
      - bearerAuth: []
      parameters:
      - in: query
        name: targetCustomerId
        schema:
          description: Direct child customer to read or update from an authorized parent billing organization
          type: string
          pattern: ^[1-9][0-9]*$
        description: Direct child customer to read or update from an authorized parent billing organization
      - in: path
        name: invoiceNumber
        schema:
          description: The invoice number to fetch
          type: integer
          maximum: 9007199254740991
          minimum: 1
        required: true
        description: The invoice number to fetch
      responses:
        '200':
          description: Get fee invoice
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeeInvoice'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    PaymentMethodListResponse:
      type: object
      properties:
        items:
          description: The org’s active (non-detached) payment methods. v1 holds at most one — the array shape is forward-compatible with a future multi-method account.
          type: array
          items:
            $ref: '#/components/schemas/PaymentMethodResponse'
      required:
      - items
      additionalProperties: false
    UpdateBillingInfoResponse:
      type: object
      properties:
        billingInfo:
          $ref: '#/components/schemas/BuyerBillingInfo'
      required:
      - billingInfo
      additionalProperties: false
    SetupPaymentMethodResponse:
      description: 'Everything the client needs to mount an embedded card-capture form. The resulting payment method is NOT returned here — it appears once the card rail webhook confirms it (spec §6: never inferred from a client callback).'
      type: object
      properties:
        clientSecret:
          description: The capture-session client secret. The UI passes this to the embedded card form

# --- truncated at 32 KB (762 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/scope3/refs/heads/main/openapi/scope3-buyer-billing-api-openapi.yml