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

> ## Agent Instructions
> Sapiom Pay is for platforms whose agent shops for many end users. Each end user is a buyer with their own Sapiom key and saved cards.
> Use the buyer's key for every call made on that buyer's behalf. Never use one buyer's key for another user, and never give the agent the platform key.
> Agents call the hosted MCP tools at https://api.sapiom.ai/v1/mcp. Backends call the REST API at https://api.sapiom.ai/v1. Both take the key in an x-api-key header.
> Never ask a buyer for a card number, expiry date or CVV in chat. Buyers enter card details only on Sapiom's hosted pages.
> Follow the nextAction in each transaction result. Action links are secrets for the intended buyer only.
> Use one idempotencyKey per transaction. After a timeout, retry with the same key. Never start a new transaction to escape an uncertain outcome.
> Report an order as placed only when order.outcome is confirmed. If it is unknown, stop and hand off to a person.

# Check a merchant

> Checks whether a merchant offers a UCP checkout Sapiom can authorize. Buy only from merchants whose `status` is `supported`. Requires a [buyer key](/api-reference/overview#authentication).



## OpenAPI

````yaml /api-reference/openapi.json get /v1/transaction-compatibility
openapi: 3.0.0
info:
  title: Sapiom Pay API
  version: '1.0'
  description: >-
    Create buyers, save their cards and authorize transactions. Send your
    platform key or a buyer key in the `x-api-key` header.
servers:
  - url: https://api.sapiom.ai
    description: Production
security:
  - api-key: []
tags:
  - name: Buyers
    description: One buyer per end user. Called tenants in the API.
  - name: Cards
    description: Hosted card setup links and the buyer's saved cards.
  - name: Spending limits
    description: Limits on what each card can spend.
  - name: Merchants
    description: Check whether Sapiom can buy from a merchant.
  - name: Transactions
    description: Create a transaction and drive its UCP checkout.
  - name: Browser checkout
    description: Placeholder cards and the relay Browser Pay uses.
paths:
  /v1/transaction-compatibility:
    get:
      tags:
        - Merchants
      summary: Check a merchant
      description: >-
        Checks whether a merchant offers a UCP checkout Sapiom can authorize.
        Buy only from merchants whose `status` is `supported`. Requires a [buyer
        key](/api-reference/overview#authentication).
      operationId: TransactionCompatibilityController_check
      parameters:
        - name: domain
          required: true
          in: query
          description: >-
            Merchant to check: a bare domain or an https origin with an optional
            root slash
          schema:
            example: shop.example
            type: string
      responses:
        '200':
          description: Transaction compatibility result.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TransactionCompatibilityResponseDto'
        '400':
          description: >-
            The merchant domain is invalid; a retryable origin may be included
            as derivedOrigin.
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                  - message
                properties:
                  code:
                    type: string
                    example: path
                  message:
                    type: string
                  derivedOrigin:
                    type: string
                    example: https://shop.example
        '401':
          description: Authentication is missing or invalid.
        '403':
          description: The caller lacks org.transactions.read.
        '429':
          description: Rate limited to 60 requests per minute per IP.
        '503':
          description: >-
            Transaction compatibility is temporarily unavailable; this is not a
            merchant verdict.
      security:
        - api-key: []
components:
  schemas:
    TransactionCompatibilityResponseDto:
      type: object
      properties:
        merchant:
          description: The merchant that was checked
          allOf:
            - $ref: '#/components/schemas/TransactionCompatibilityMerchantDto'
        status:
          type: string
          description: >-
            supported: structured checkout is available. Anything else: use
            browser checkout
          enum:
            - supported
            - unsupported
            - unknown
        reason:
          type: string
          description: Why the merchant has this status
          enum:
            - compatible_ucp_profile
            - no_manifest
            - no_compatible_version
            - no_checkout
            - timeout
            - fetch_failed
            - upstream_error
            - invalid_profile
        protocol:
          nullable: true
          description: The protocol and version negotiated; null unless status is supported
          allOf:
            - $ref: '#/components/schemas/TransactionCompatibilityProtocolDto'
        capabilities:
          description: >-
            Allowlisted capabilities the merchant advertises; empty unless
            status is supported
          type: array
          items:
            $ref: '#/components/schemas/TransactionCompatibilityCapabilityDto'
        checkedAt:
          type: string
          description: When the merchant profile was fetched (ISO 8601)
          example: '2026-10-16T23:00:00Z'
        expiresAt:
          type: string
          description: When this answer stops being fresh (ISO 8601)
          example: '2026-10-16T23:05:00Z'
        retryAfterSeconds:
          type: number
          nullable: true
          description: Whole seconds until expiresAt when status is unknown, otherwise null
      required:
        - merchant
        - status
        - reason
        - protocol
        - capabilities
        - checkedAt
        - expiresAt
        - retryAfterSeconds
    TransactionCompatibilityMerchantDto:
      type: object
      properties:
        domain:
          type: string
          description: The normalized domain from the input
          example: shop.example
        origin:
          type: string
          description: The https origin that answered the lookup
          example: https://shop.example
      required:
        - domain
        - origin
    TransactionCompatibilityProtocolDto:
      type: object
      properties:
        name:
          type: string
          description: Commerce protocol the merchant speaks
          enum:
            - ucp
        version:
          type: string
          description: The protocol release negotiated with the merchant
          example: '2026-08-25'
      required:
        - name
        - version
    TransactionCompatibilityCapabilityDto:
      type: object
      properties:
        name:
          type: string
          description: Advertised capability name, from the known-capability allowlist only
          enum:
            - dev.ucp.shopping.checkout
            - dev.ucp.shopping.fulfillment
            - dev.ucp.shopping.discount
            - dev.ucp.shopping.cart
        supported:
          type: boolean
          description: True when Sapiom implements this capability
      required:
        - name
        - supported
  securitySchemes:
    api-key:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        Your platform key for buyer management, or a buyer key for everything
        else.

````

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