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

> ## Agent Instructions
> For new direct REST integrations, use the v2026-04 surfaces. The @fluid-app FairShare SDK continues to use its own published public-v2025-06 contract.
> Authenticate with the header Authorization: Bearer <token>; public storefront read endpoints require no auth.
> To sign a new merchant up for Fluid programmatically, call POST https://api.fluid.app/api/company with no credentials, as described in /api/agent-signup. Do not automate the signup form or book a demo. The merchant must open the emailed sign-in link and create an API token before authenticated calls are possible.
> After signup, to launch a merchant's store (back-office sync, payments onboarding, store setup, a theme copied from their current site, and a preview link before billing), follow /api/agent-launch.
> Lists use cursor pagination via the page[cursor] and page[limit] query params; follow meta.pagination.next_cursor until it is null.
> When the same operation exists on more than one surface, use the newest: dated API versions are newer than unversioned ones, and later dates win (v2026-04 > v2025-06 > unversioned v0/v1.1). Fall back to a legacy or unversioned operation only when no newer versioned equivalent exists — the company-v0 notes below list the known superseded operations. The same applies to /api/company/v1 and /api/v1/... paths: prefer a newer documented equivalent, and use one only when none exists (/api/v1.1/... is distinct and documented in company-v0). Use page/per_page offset pagination only where a spec documents it — in practice the unversioned company-v0 admin surface; every versioned surface uses cursor pagination.
> Fluid has three navigation APIs; don't mix them up. Storefront website menus (navigation bars, footers) are /api/menus and nested menu_items, in api-reference/content-v0.yaml (API Reference: Website > Navigation menus), with a how-to in themes/navigation-menus; their list uses flat page/per_page pagination. The Fluid mobile app's navigation is /api/v2/mobile_navigations, in api-reference/mobile-v2.yaml (API Reference: Mobile app > Navigation); its list also uses page/per_page. Portal navigations belong to a portal definition (Fluid OS), in api-reference/fluid-os-v0.yaml (API Reference: Portal > Portal navigation), and each has a platform of web or mobile.
> The OpenAPI specs under api-reference/ are the authoritative contracts; prefer them over prose when in doubt. api-reference/storefront-v2026-04.yaml covers the v2026-04 storefront surface (/api/v202604/... paths); api-reference/checkout-v2026-04.yaml covers the v2026-04 checkout surface (/api/checkout/v2026-04/... paths — carts, cart auth, discounts, items, subscriptions, orders, enrollments, and store config); api-reference/public-v2025-06.yaml covers the Public SDK surface used by the @fluid-app FairShare SDK, including its parallel cart lifecycle, browser integrations, versioned payment callbacks, unversioned public utilities, and the cart price-override operation; api-reference/payment-v2026-04.yaml covers the v2026-04 payment gateway admin surface (/api/payment/v2026-04/... paths, bearer-authenticated — gateway CRUD, gateway purchase/authorize/$0-verify, transaction list/show and capture/void/credit, and merchant payment configuration); api-reference/payments-v2026-04.yaml covers the v2026-04 cart payment surface (/api/payments/v2026-04/carts/{cart_token}/... paths, authenticated by the cart token in the path with no bearer — payment-method selection, VGS card tokenization, 3D Secure verification, and PayPal/Braintree/Klarna/Apple Pay flows); api-reference/commerce-v2026-04.yaml covers the v2026-04 commerce order-editing surface (/api/v202604/orders/{order_id}/edits paths, bearer-authenticated — post-checkout order edits that atomically insert items and add adjustments/discounts, with an optional dry-run preview); api-reference/webhooks-v0.yaml covers the unversioned webhooks surface (/api/... paths — webhook registration, delivery payloads, callback registrations, company events, and webhook/callback schemas); api-reference/company-v0.yaml covers the legacy unversioned company admin surface (/api/... paths, bearer-authenticated — company settings and management, customers, users, roles, subscription plans, subscription bundles, subscriptions, media, pages, catch-ups, inventory levels, domains, agreements, and admin order actions). company-v0 caveats: it is the legacy v0 admin contract and its lists use flat page/per_page offset pagination, which is expected there despite the general cursor-pagination rule; where an operation exists in both company-v0 and a versioned spec, prefer the versioned spec — the subscriptions lifecycle (list/create/show/update, cancel, pause, reactivate, resume, retry, skip, failed-cycle-waiver, discounts) and subscription bundles are superseded by checkout-v2026-04, and company pages/media CRUD plus the public pages, categories, products, and media list endpoints are superseded by storefront-v2026-04. Subscription plan management (/api/subscription_plans, resource-wrapped {"subscription_plan": {...}} bodies) exists only in company-v0. api-reference/members-v2025-06.yaml covers the v2025-06 unified Member identity surface (/api/v2025-06/members/... paths, bearer-authenticated — member list/create/show/update, lookup by email/username/external_id/legacy_customer_id, member-type assignment, and the sponsor genealogy read). Prefer it over the customers and reps surfaces when the member type matters: /customers does not serialize member_type. api-reference/analytics-v2026-04.yaml covers the v2026-04 Home dashboard analytics surface (/api/v202604/analytics/dashboard/... paths, bearer-authenticated — read-only endpoints for the Home > Overview, Home > Live, and Home > Field tabs, each accepting an optional country ISO alpha-2 query param that scopes aggregations to a single country).
> api-reference/analytics-v0.yaml covers the unversioned analytics surface that backs the fluid-admin Traffic tab (/api/analytics/... and /api/analytics/traffic/... paths, bearer-authenticated — the legacy shares/views/visitors summary plus traffic overview, ranked campaigns, sources, geographies, flows, and per-rep breakdown, all sharing one reporting-period contract).
> Successful responses wrap the resource payload alongside a top-level integer status and a meta object.
> Portal Definition authoring edits and synchronizes the portal JSON resource graph. Widget Package authoring builds either a company-owned or Droplet-owned Remote DOM package. These are separate contracts; do not imply that one defines the other.
> For Widget Package worker code, use only @fluid-app/portal-sdk/widgets/worker. Use only the Portal Definition and Widget Package workflows and public entry points documented here; do not infer support for undocumented surfaces.
> Every portal function and declarative capability used by a widget must appear in that widget's uses array. Use the same typed function value in uses; do not invent capability-name strings.
> Widget styling must use the portal's semantic theme variables for colors, typography, spacing, radii, borders, focus, and charts whenever a token represents the visual decision. Do not create a separate light or dark palette or duplicate theme controls as widget properties.
> Prefer worker-safe Fluid UI components exported by @fluid-app/portal-sdk/widgets/worker when they fit the interaction. When no exported component fits, use semantic HTML, accessible behavior, and the portal theme variables.
> A Portal Definition push updates the remote working definition. A portal version is an immutable snapshot, and activation is a separate live release operation.
> The Help Center (/help/...) is for merchants, admins and reps using Fluid. Its admin pages mirror the admin's routes: the screen at admin.fluid.app/settings/taxes is documented at /help/admin/settings/taxes. Use the Help Center for how-to questions about the admin, and the Developer Platform and API Reference for building integrations.
> Help Center pages describe what a company admin sees. A reader's role can hide screens and actions; admins manage roles on Settings > Roles (/help/admin/settings/roles). If someone can't find a screen or button, their role's permissions are the first thing to check.
> Send people who need Fluid support to /help/getting-help. Don't invent support email addresses, phone numbers or response times.

# Save a Braintree PayPal account without a charge

> Saves a Braintree PayPal account for a start-free cart ($0 today, paid
subscription renewal) and binds it to the cart as its payment method.
Send the nonce from the Braintree PayPal vault flow (no amount). No
authorization is made, and the order completes at $0 through checkout;
renewals charge the saved account. Offered only when the cart's
Braintree PayPal entry in `available_payment_methods` carries
`vault_without_charge: true`. No authentication is required; the
unguessable cart token scopes access, and `payment_account_id` must name
a Braintree payment account of the cart's company (otherwise 404).

Returns 422 when the cart is not start-free, the PayPal address
changed the total (`amount_changed`),
the nonce is not a PayPal account, or the bind failed (see
`error_code`); 409 while the same approval is being saved; and 503 when
the gateway is unavailable.




## OpenAPI

````yaml /api-reference/public-v2025-06.yaml post /api/v202506/carts/{cart_token}/braintree/vault-payment-method
openapi: 3.1.0
info:
  title: Fluid Public SDK API
  description: >-
    **Fluid Public SDK API — the REST surface behind the `@fluid-app` FairShare

    SDK.**


    This is what the SDK calls on your behalf from the browser. Read it to

    understand what the SDK sends and receives, to verify a payload, or to call
    an

    SDK-backed endpoint directly. It also owns the browser-side platform surface

    that exists nowhere else: event tracking, lead capture, media and playlists,

    embeddable widgets, forms, sessions, settings, browser fingerprinting,

    affiliate lookup, and root themes.


    Its cart endpoints (`/api/public/v2025-06/commerce/carts/…`) are

    **session-aware**: they accept `fluid_session` and populate visitor session

    and rep attribution on the cart. They also cover enrollment-pack carts

    (`…/enroll`, `…/enrollment`) and payment-gateway callbacks, which the
    Checkout

    API does not.


    Most browser and cart operations require no bearer token. The cart token in

    the path scopes cart requests. Synchronizing an authenticated customer,

    overriding cart item prices, and overriding cart item volumes require a

    bearer token.


    **Building a checkout from scratch, server-side? Use the Fluid Checkout API

    (`checkout-v2026-04`) instead** — it is the forward surface and the only one

    with customer accounts and subscription management. See

    [Choosing a cart
    surface](https://docs.fluid.app/api/choosing-a-cart-surface)

    for the operation map and boundary.


    Note: the version label names this spec, not a single path prefix. Endpoints

    here live under `/api/public/v2025-06/`, its partial

    `/api/public/stable/` alias, `/api/public/`, `/api/v202506/carts/`, and the

    cart price-override path under `/api/carts/`.
  version: v2025-06
  contact:
    email: support@fluid.app
  license:
    name: Proprietary
    identifier: LicenseRef-Proprietary
servers:
  - url: https://api.fluid.app
security: []
tags:
  - name: carts
    description: >-
      Create, read, and mutate session-aware carts (items, address, country,
      language, discounts, shipping method, payment method, magic-link login,
      checkout).
  - name: checkout
    description: Checkout-started event emitted when a shopper enters the checkout flow.
  - name: commerce
    description: Admin-authenticated cart price overrides.
  - name: orders
    description: Public order lookup by token, including earned loyalty points.
  - name: product
    description: Localized product lookup by slug for storefronts and themes.
  - name: enrollment-packs
    description: Enrollment pack lookup by slug, for enrollment-pack carts.
  - name: payment
    description: Klarna session creation and updates for a cart.
  - name: paypal
    description: PayPal order creation, authorization, and shipping callbacks for a cart.
  - name: braintree
    description: Saving a Braintree PayPal account for a start-free cart.
    x-fluid-section: Checkout
  - name: events
    description: Browser-side event ingestion — page visits, URL visits, and lead capture.
  - name: session
    description: Visitor session creation, the basis of cart and rep attribution.
  - name: fingerprint
    description: Browser fingerprint registration used to link sessions to a visitor.
  - name: lead
    description: Lead capture from storefront and theme forms.
  - name: forms
    description: Public form retrieval, password verification, and response submission.
  - name: media
    description: Media lookup by slug and video analytics events.
  - name: playlist
    description: Playlist (library) lookup by slug.
  - name: widgets
    description: Embeddable storefront widgets — banners, carts, chats, and popups.
  - name: page
    description: Page-visit tracking for storefront and theme pages.
  - name: url
    description: Short-link and URL visit tracking.
  - name: settings
    description: >-
      Company storefront settings the SDK reads at boot — company, cart, and
      affiliate configuration.
  - name: affiliate
    description: Affiliate lookup used to resolve a rep from a share link or handle.
  - name: root-themes
    description: Root theme catalog backing the theme editor and storefront rendering.
  - name: public
    description: >-
      Public utilities — health checks, Apple Pay domain verification,
      leaderboards, and cart item volumes.
  - name: public-drop-zones
    description: >-
      Active checkout, order-confirmation, and slideout-cart drop zones used
      internally by the FairShare SDK. Direct REST integrations should use
      checkout-v2026-04.
paths:
  /api/v202506/carts/{cart_token}/braintree/vault-payment-method:
    post:
      tags:
        - braintree
      summary: Save a Braintree PayPal account without a charge
      description: |
        Saves a Braintree PayPal account for a start-free cart ($0 today, paid
        subscription renewal) and binds it to the cart as its payment method.
        Send the nonce from the Braintree PayPal vault flow (no amount). No
        authorization is made, and the order completes at $0 through checkout;
        renewals charge the saved account. Offered only when the cart's
        Braintree PayPal entry in `available_payment_methods` carries
        `vault_without_charge: true`. No authentication is required; the
        unguessable cart token scopes access, and `payment_account_id` must name
        a Braintree payment account of the cart's company (otherwise 404).

        Returns 422 when the cart is not start-free, the PayPal address
        changed the total (`amount_changed`),
        the nonce is not a PayPal account, or the bind failed (see
        `error_code`); 409 while the same approval is being saved; and 503 when
        the gateway is unavailable.
      operationId: public_v2025_06_carts_braintree_vault_payment_method_post
      parameters:
        - name: cart_token
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - payment_account_id
                - payment_method_nonce
              properties:
                payment_account_id:
                  type: string
                  description: UUID of the company's Braintree payment account.
                payment_method_nonce:
                  type: string
                  description: One-time nonce from the Braintree PayPal vault flow
                payer_email:
                  type: string
                  format: email
                  description: Email of the PayPal payer
                shipping_address:
                  type: object
                  description: >-
                    Shipping address collected by the PayPal popup; saved as the
                    cart's ship-to address
                  properties:
                    recipient_name:
                      type: string
                    line1:
                      type: string
                    line2:
                      type: string
                    city:
                      type: string
                    state:
                      type: string
                    postal_code:
                      type: string
                    country_code:
                      type: string
                      description: ISO 3166-1 alpha-2 country code
            example:
              payment_account_id: 9d3f6b2a-4e71-4c8d-a0b5-e27c1f9a6d34
              payment_method_nonce: tokenpp_bh_7xk2mq_9vrbt3_nwz8lp_yc4hd2_q6f
              payer_email: holly.flax@dundermifflin.com
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                required:
                  - payment_method_id
                  - payment_type
                  - meta
                properties:
                  payment_method_id:
                    type: integer
                    description: Id of the payment method now bound to the cart
                  payment_type:
                    type: string
                  meta:
                    $ref: '#/components/schemas/Meta'
              example:
                payment_method_id: 48213
                payment_type: braintree_paypal
                meta:
                  request_id: c41e7a90-3b5d-4f28-9e61-8d2a0b7f5c13
                  timestamp: '2026-10-08T14:22:08Z'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponse'
        '409':
          description: >-
            A save for this approval is already in progress, or a redirect
            payment is open at the provider (`meta.code` =
            `payment_in_progress`)
          content:
            application/json:
              schema:
                anyOf:
                  - $ref: '#/components/schemas/StandardErrorResponse'
                  - $ref: '#/components/schemas/PaymentInProgressErrorResponse'
        '422':
          description: Unprocessable entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponse'
        '503':
          description: >-
            Braintree gateway or auth error, or payment service temporarily
            unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StandardErrorResponse'
      security: []
components:
  schemas:
    Meta:
      type: object
      properties:
        request_id:
          type:
            - string
            - 'null'
        timestamp:
          type: string
          format: date-time
      additionalProperties: false
    StandardErrorResponse:
      description: >-
        Common legacy error response envelope. Older endpoints may return one or
        more of these fields depending on the controller path.
      type: object
      properties:
        message:
          type: string
        error:
          $ref: '#/components/schemas/ErrorMessage'
        error_message:
          $ref: '#/components/schemas/ErrorMessage'
        errors:
          $ref: '#/components/schemas/ErrorBag'
        meta:
          $ref: '#/components/schemas/ErrorMeta'
      additionalProperties:
        $ref: '#/components/schemas/JsonValue'
    PaymentInProgressErrorResponse:
      description: |
        409 envelope for a cart write refused while a redirect payment is
        open at the provider (CURRENT-3992). `meta.cart` is the cart as it
        stands, so the client can show the pending payment without a second
        fetch.
      type: object
      additionalProperties: false
      required:
        - error_message
        - errors
        - meta
      properties:
        error_message:
          type: string
        errors:
          $ref: '#/components/schemas/ErrorBag'
        meta:
          type: object
          additionalProperties: false
          required:
            - request_id
            - timestamp
            - code
            - shop_url
            - cart
          properties:
            request_id:
              type:
                - string
                - 'null'
            timestamp:
              type: string
              format: date-time
            code:
              type: string
              enum:
                - payment_in_progress
            shop_url:
              type: string
            cart:
              $ref: '#/components/schemas/Cart'
    ErrorMessage:
      description: An API error message represented as text or structured JSON.
      anyOf:
        - type: string
        - $ref: '#/components/schemas/ErrorBag'
        - type: 'null'
    ErrorBag:
      description: >-
        Validation errors keyed by field, a list of errors, a single error
        message, or null when no structured error details are available.
      anyOf:
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/ErrorValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/ErrorValue'
        - type: 'null'
    ErrorMeta:
      type: object
      properties:
        request_id:
          type:
            - string
            - 'null'
        timestamp:
          type: string
          format: date-time
        shop_url:
          type:
            - string
            - 'null'
        cart:
          anyOf:
            - $ref: '#/components/schemas/Cart'
            - type: 'null'
      additionalProperties: false
    JsonValue:
      description: >-
        Any valid JSON value for provider, integration, theme, metadata, or
        other dynamic payloads whose keys are not fixed by the API contract.
      anyOf:
        - type: string
        - type: number
        - type: boolean
        - type: 'null'
        - type: array
          items:
            $ref: '#/components/schemas/JsonValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
    Cart:
      type: object
      additionalProperties: false
      required:
        - enrollment
      properties:
        id:
          type: integer
        cart_token:
          type: string
        state:
          type: string
        state_revision:
          type: integer
          format: int64
          minimum: 0
          description: Monotonic ordering marker for published cart snapshots.
        population_status:
          type: string
          enum:
            - pending
            - in_progress
            - complete
            - failed
          description: >-
            Progress of the background job that adds a deferred create's items.
            `pending` while it runs, then `complete` or `failed`. A synchronous
            create returns `complete`. An unexpected job error can leave it
            `pending`, so clients should stop waiting after a timeout.
        email:
          type:
            - string
            - 'null'
        phone:
          type:
            - string
            - 'null'
        language_iso:
          type:
            - string
            - 'null'
        currency_code:
          type: string
        currency_symbol:
          type: string
        currency_decimal_places:
          type: integer
        type:
          type:
            - string
            - 'null'
        enrollment:
          type: boolean
          description: >-
            Whether the cart is flagged as enrollment eligible, with or without
            an enrollment pack.
        buyer_rep_id:
          type:
            - integer
            - 'null'
        customer_id:
          type:
            - integer
            - 'null'
        enrollment_pack_id:
          type:
            - integer
            - 'null'
        enrollment_member_type:
          examples:
            - id: 22c58158-7f6c-4f33-a033-32e259941684
              slug: rep
              name: Representative
            - null
          anyOf:
            - type: object
              additionalProperties: false
              required:
                - id
                - slug
                - name
              properties:
                id:
                  type: string
                  format: uuid
                slug:
                  type: string
                name:
                  type: string
            - type: 'null'
        email_marketing:
          type:
            - boolean
            - 'null'
        sms_marketing:
          type:
            - boolean
            - 'null'
        auto_apply_points:
          type: boolean
          description: >-
            Whether renewals created from this cart apply reward points
            automatically
        processed:
          type: boolean
        payment_in_progress:
          type: boolean
          description: >
            `true` while a redirect payment (PPRO, dLocal, Citcon) is open at
            the

            provider. Cart writes answer `409` with `meta.code` =

            `payment_in_progress` until the charge resolves.
        payment_resume_url:
          type:
            - string
            - 'null'
          description: >
            Fluid's resume endpoint for the open payment

            (`GET /api/checkout/v2026-04/carts/{cart_token}/payment/resume`),
            which

            redirects the shopper to the provider page; the provider link itself
            can

            carry a session credential and is never returned. `null` when no
            payment

            is in progress or the provider gave no page (a BLIK mandate is
            approved in

            the banking app).
        valid_for_checkout:
          type: boolean
        valid_for_checkout_pre_payment:
          type: boolean
        checkout_blockers:
          type: array
          description: >-
            Why `valid_for_checkout_pre_payment` is false, one entry per reason.
            Empty when it is true.
          items:
            type: object
            properties:
              code:
                type: string
                description: >-
                  Stable identifier for the validator that blocked checkout,
                  e.g. `shipping_address`. Key your own customer-facing copy off
                  this.
              message:
                type: string
                description: >-
                  The validator's own English wording, as a fallback for a
                  `code` the client does not recognise. Not translated.
            required:
              - code
              - message
            additionalProperties: false
        contains_subscription:
          type: boolean
          description: >-
            `true` when the cart contains a subscribed top-level item or bundle
            child.
        vault_without_charge:
          type: boolean
        payment_method_auto_assignable:
          type: boolean
        requires_payment_method:
          type: boolean
        requires_3ds:
          type: boolean
        immutable_items:
          type: boolean
        digital_only:
          type: boolean
        points_enabled:
          type: boolean
        messages:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        metadata:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        cv_total:
          type:
            - string
            - 'null'
          format: decimal
        qv_total:
          type:
            - string
            - 'null'
          format: decimal
        amount_total:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        amount_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        sub_total:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        sub_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        tax_total:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        tax_exempt:
          type: boolean
        tax_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        tax_total_for_display:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        inclusive_shipping_tax:
          type: number
        shipping_total:
          type: number
        shipping_total_in_currency:
          type: string
        shipping_total_for_display:
          type: string
        discount_total:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        discount_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        subtotal_after_discounts:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        subtotal_after_discounts_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        price_inclusive_of_tax:
          type: boolean
        price_inclusive_tax_name:
          type:
            - string
            - 'null'
        totals:
          type:
            - object
            - 'null'
          additionalProperties: false
          required:
            - gross_subtotal
            - gross_subtotal_in_currency
            - net_subtotal
            - net_subtotal_in_currency
            - item_tax
            - item_tax_in_currency
            - shipping_net
            - shipping_net_in_currency
            - shipping_tax
            - shipping_tax_in_currency
            - total_tax
            - total_tax_in_currency
            - price_inclusive_of_tax
            - tax_label
          description: >-
            Display-ready totals breakdown.
             Decomposes the inclusive-tax figures so clients render
            the net subtotal, item tax, shipping net and shipping VAT without
            re-deriving them. Each money component carries a raw
            boundary-rounded decimal string plus its currency-formatted
            `_in_currency` sibling.
          properties:
            gross_subtotal:
              type: string
              description: Catalog sum of line-item prices (customer display).
            gross_subtotal_in_currency:
              type: string
            net_subtotal:
              type: string
              description: Items subtotal excluding embedded item tax.
            net_subtotal_in_currency:
              type: string
            item_tax:
              type: string
              description: Embedded tax attributable to the items.
            item_tax_in_currency:
              type: string
            shipping_net:
              type: string
              description: Shipping charge excluding embedded shipping tax.
            shipping_net_in_currency:
              type: string
            shipping_tax:
              type: string
              description: Embedded tax attributable to shipping.
            shipping_tax_in_currency:
              type: string
            total_tax:
              type: string
              description: Combined item and shipping tax.
            total_tax_in_currency:
              type: string
            price_inclusive_of_tax:
              type: boolean
              description: Whether catalog prices include tax.
            tax_label:
              type:
                - string
                - 'null'
              description: The resolved tax-line label (e.g. "VAT"), or null.
        enrollment_fee:
          type:
            - number
            - string
        enrollment_fee_in_currency:
          type: string
        transaction_fee:
          type:
            - number
            - string
        transaction_fee_in_currency:
          type: string
        shipping_discount:
          type: number
        discount_codes:
          type: array
          items:
            type: string
        product_discount_codes:
          type: array
          items:
            type: string
        shipping_discount_codes:
          type: array
          items:
            type: string
        customer_total_points:
          type: integer
        customer_total_points_in_currency:
          type: string
        points_applied:
          type: integer
        points_applied_amount_in_currency:
          type: string
        remaining_customer_points:
          type: integer
        remaining_customer_points_amount_in_currency:
          type: string
        remaining_cart_amount_after_points:
          type:
            - number
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        remaining_cart_amount_after_points_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        max_applicable_points:
          type: integer
        total_creditable_points:
          type: integer
        shipping_address:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        billing_address:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        discount_breakdown:
          type: object
          additionalProperties: false
          properties:
            internal_discounts:
              type: number
            external_discounts:
              type: number
            total_discounts:
              type: number
        external_discount:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
        buyer_rep:
          type:
            - object
            - 'null'
          additionalProperties: false
          properties:
            id:
              type:
                - integer
                - 'null'
            email:
              type: string
            full_name:
              type: string
            image_url:
              type:
                - string
                - 'null'
            external_id:
              type:
                - string
                - 'null'
        buyer_rep_member_id:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            Durable member UUID of the buyer rep, or `null` when the cart has no
            buyer rep. Populated for both legacy and native reps.
        volume_rep:
          type:
            - object
            - 'null'
          additionalProperties: false
          properties:
            id:
              type:
                - integer
                - 'null'
            email:
              type: string
            full_name:
              type: string
            image_url:
              type:
                - string
                - 'null'
        volume_rep_member_id:
          type:
            - string
            - 'null'
          format: uuid
          description: >-
            Durable member UUID of the volume rep, or `null` when the cart has
            no volume rep. Populated for both legacy and native reps.
        available_shipping_methods:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              id:
                type:
                  - string
                  - integer
              title:
                type: string
              price:
                type: number
              delivery_time_estimate:
                type:
                  - string
                  - 'null'
              price_label:
                type:
                  - string
                  - 'null'
        available_payment_methods:
          type: array
          items:
            type: object
            additionalProperties:
              $ref: '#/components/schemas/JsonValue'
        payment_unavailable_reason:
          type:
            - string
            - 'null'
          description: >-
            Why available_payment_methods is empty, or null when payment is
            available. Diagnostic only; it does not change what the cart may do.
          enum:
            - no_gateway_for_country
            - below_minimum_amount
            - filtered_out
            - test_mode_no_gateway
            - test_mode_gateway_ineligible
            - null
        payment_account:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        shipping_method:
          type:
            - object
            - 'null'
          additionalProperties: false
          properties:
            id:
              type: string
            name:
              type: string
        payment_method:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        items:
          type: array
          items:
            $ref: '#/components/schemas/CartItem'
        ship_to:
          $ref: '#/components/schemas/CartAddress'
        bill_to:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        attribution:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        agreements:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              id:
                type: integer
              title:
                type: string
              show_at_checkout:
                type: boolean
              default_checked:
                type: boolean
              subscription_only:
                type: boolean
              standalone_on_checkout:
                type: boolean
              show_path:
                type: string
              enrollment_pack_id:
                type:
                  - integer
                  - 'null'
              required:
                type: boolean
        country:
          $ref: '#/components/schemas/CartCountry'
        company:
          $ref: '#/components/schemas/CartCompany'
        enrollment_pack:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        recurring:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - subtotal
              - subtotal_in_currency
              - interval
              - interval_unit
              - interval_unit_identifier
              - subtotal_for_display
              - start_date
            properties:
              subtotal:
                type:
                  - number
                  - 'null'
              subtotal_in_currency:
                type:
                  - string
                  - 'null'
              interval:
                type: integer
              interval_unit:
                type: string
              interval_unit_identifier:
                type: string
                enum:
                  - day
                  - week
                  - month
                  - year
              subtotal_for_display:
                type:
                  - string
                  - 'null'
              start_date:
                type: string
    ErrorValue:
      description: A validation or API error value.
      anyOf:
        - type: string
        - type: array
          items:
            type: string
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
    CartItem:
      type: object
      additionalProperties: false
      properties:
        id:
          type: integer
        title:
          type: string
        quantity:
          type: integer
        price:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        price_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        discount_amount:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        discount_amount_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        tax:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        tax_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        cv:
          type:
            - string
            - 'null'
          format: decimal
        qv:
          type:
            - string
            - 'null'
          format: decimal
        cv_total:
          type:
            - string
            - 'null'
          format: decimal
        qv_total:
          type:
            - string
            - 'null'
          format: decimal
        total:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        line_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        total_after_discounts:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        total_after_discounts_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        line_total_after_discounts_in_currency:
          type:
            - string
            - 'null'
          description: >-
            Unavailable (null): a bundle price for this tier cannot be computed;
            checkout refuses the line.
        regular_line_total_in_currency:
          type:
            - string
            - 'null'
          description: >-
            The one-time/regular price total (unit regular price times
            quantity), independent of the item's current subscription state.
            Unlike line_total_in_currency, this does not change when the item is
            subscribed.
        unit_price_display_authoritative:
          type: boolean
        enrollment_pack_id:
          type:
            - integer
            - 'null'
        subscription:
          type: boolean
        subscription_plan_id:
          type:
            - integer
            - 'null'
        subscription_plans:
          type: array
          items:
            type: object
            additionalProperties:
              $ref: '#/components/schemas/JsonValue'
        subscription_only:
          type:
            - boolean
            - 'null'
        subscription_interval:
          type:
            - integer
            - 'null'
        subscription_interval_unit:
          type:
            - string
            - 'null'
        subscription_interval_unit_identifier:
          type:
            - string
            - 'null'
        subscription_price:
          type:
            - string
            - number
            - 'null'
        subscription_price_in_currency:
          type:
            - string
            - 'null'
        subscription_start:
          type:
            - string
            - 'null'
        subscribe_and_save:
          type:
            - string
            - number
            - 'null'
        subscribe_and_save_in_currency:
          type:
            - string
            - 'null'
        subscribe_and_save_for_display:
          type:
            - string
            - 'null'
        display_to_customer:
          type: boolean
        metadata:
          anyOf:
            - type: object
              additionalProperties:
                $ref: '#/components/schemas/JsonValue'
            - type: 'null'
        image_url:
          type:
            - string
            - 'null'
        free_item:
          type: boolean
        allow_subscription:
          type: boolean
        enrollment:
          type: boolean
        errors:
          type: array
          items:
            type: string
        creditable_points:
          type: integer
        product:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
        variant:
          type:
            - object
            - 'null'
          additionalProperties: false
          properties:
            id:
              type: integer
            title:
              type:
                - string
                - 'null'
            display_name:
              type:
                - string
                - 'null'
            image_url:
              type:
                - string
                - 'null'
            image_path:
              type:
                - string
                - 'null'
            sku:
              type:
                - string
                - 'null'
            primary_image:
              type:
                - string
                - 'null'
            price:
              type:
                - number
                - string
                - 'null'
            price_in_currency:
              type: string
            currency_code:
              type:
                - string
                - 'null'
            options:
              type: array
              items:
                type: object
                additionalProperties: false
                properties:
                  title:
                    type: string
                  value:
                    type: string
            physical:
              type:
                - boolean
                - 'null'
            unit_of_size:
              type:
                - string
                - 'null'
            height:
              type:
                - number
                - 'null'
            width:
              type:
                - number
                - 'null'
            length:
              type:
                - number
                - 'null'
            unit_of_weight:
              type:
                - string
                - 'null'
            weight:
              type:
                - string
                - 'null'
            hs_code:
              type:
                - string
                - 'null'
        bundled_items:
          type:
            - array
            - 'null'
          items:
            type: object
            additionalProperties:
              $ref: '#/components/schemas/JsonValue'
        product_title:
          type:
            - string
            - 'null'
    CartAddress:
      type:
        - object
        - 'null'
      additionalProperties: false
      properties:
        id:
          type: integer
        name:
          type:
            - string
            - 'null'
        address1:
          type:
            - string
            - 'null'
        address2:
          type:
            - string
            - 'null'
        address3:
          type:
            - string
            - 'null'
        city:
          type:
            - string
            - 'null'
        state:
          type:
            - string
            - 'null'
        subdivision_code:
          type:
            - string
            - 'null'
        postal_code:
          type:
            - string
            - 'null'
        country_code:
          type:
            - string
            - 'null'
        phone:
          type:
            - string
            - 'null'
        country_num_code:
          type:
            - integer
            - 'null'
        default:
          type: boolean
    CartCountry:
      type:
        - object
        - 'null'
      additionalProperties: false
      properties:
        id:
          type: integer
        name:
          type: string
        iso:
          type: string
        iso_name:
          type: string
        iso3:
          type: string
        currency_code:
          type: string
        currency_symbol:
          type: string
        province_required:
          type: boolean
        tax_enabled:
          type:
            - boolean
            - 'null'
        price_inclusive_of_tax:
          type:
            - boolean
            - 'null'
        price_inclusive_tax_name:
          type:
            - string
            - 'null'
        tax_standard_rate:
          type:
            - number
            - 'null'
          description: Standard tax rate (percent) used for inclusive-pricing countries
    CartCompany:
      type: object
      additionalProperties: false
      properties:
        uuid:
          type: string
          format: uuid
          description: >-
            The company's uuid_v7, which the identity service names it by (its
            `org`).
        identity_sign_in_enabled:
          type: boolean
          description: >-
            Whether the company's shoppers sign in through the identity service
            rather than the legacy code. Read through the company's sign-in
            path, never set here.
        id:
          type: integer
        name:
          type: string
        favicon_url:
          type:
            - string
            - 'null'
        primary_domain_hostname:
          type:
            - string
            - 'null'
        subdomain:
          type:
            - string
            - 'null'
        logo_url:
          type:
            - string
            - 'null'
        fluid_shop:
          type:
            - string
            - 'null'
        collect_phone:
          type: boolean
        require_phone:
          type: boolean
        require_billing_zip:
          type: boolean
        checkout_primary_button_color:
          type:
            - string
            - 'null'
        checkout_primary_text_color:
          type:
            - string
            - 'null'
        checkout_secondary_button_color:
          type:
            - string
            - 'null'
        checkout_secondary_text_color:
          type:
            - string
            - 'null'
        order_on_behalf:
          type: boolean
        reward_points_enabled:
          type: boolean
        reward_points_apply_to_subtotal:
          type: boolean
        reward_points_label_singular:
          type: string
        reward_points_label_plural:
          type: string
        collect_sms_marketing:
          type: boolean
        collect_email_marketing:
          type: boolean
        bundle_subscriptions:
          type: boolean
        hide_volume_on_customer_surfaces:
          type: boolean
          description: >-
            Whether commissionable/qualifying volume (CV/QV) is hidden on
            customer-facing surfaces. Always a real boolean — the blueprint
            reads the strict Company#hide_volume_on_customer_surfaces?
            predicate, not the raw settings value.
        isolated_payment_tokens:
          type: boolean
          description: >-
            When true, this company's payment tokens and customer profile are
            isolated from the shared FluidPayAccount wallet. Clients must use
            customer-scoped PM/address mutation routes.
        kount_environment:
          type: string
          enum:
            - sandbox
            - production
          example: sandbox
          description: >-
            Per-merchant Kount environment. Used by the checkout DDC initializer
            to pick TEST vs PROD.
        kount_client_id:
          type:
            - string
            - 'null'
          example: '150953359757648'
          description: >-
            Per-merchant Kount Client ID (MID) for enterprise merchants. Null
            for portfolio merchants.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.