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

# Get your partner configuration

> Verify your app credentials and read what is enabled for this app and environment.

Make this your first call in each environment. It verifies your app ID and app secret, then returns the app's enabled modules, fee configuration, supported networks and assets, payment-method capability surface, webhook event catalog and Vault settings.

The call is read-only and returns no secrets. It describes what the app can do, not what a particular Payment can use: payment methods depend on each Payment's amount, destination, settlement and capability snapshot, so create the Payment and read its payment-methods endpoint for the exact list.

See [Authentication](/authentication) for the credential model and [Capabilities](/capabilities) for what each module unlocks.


## OpenAPI

````yaml openapi.json GET /v2/partners/config
openapi: 3.1.0
info:
  title: Stableyard Partner API
  version: 2.0.0-staging
  x-stableyard-api-version: '2026-09-09'
  x-stableyard-supported-api-versions:
    - '2026-09-09'
  summary: Backend API for UPAs, Payments, activity, and optional financial products.
  description: >

    Use this API from a trusted partner backend with an app ID and app secret.


    ## Recommended integration


    1. Call `GET /v2/partners/config` to verify credentials and discover enabled
    capabilities.

    2. Create a UPA only when your product needs a persistent Stableyard
    account.

    3. Create a receive or send Payment with `POST /v2/payments`.

    4. Redirect a payer to the returned `paymentUrl` or pass the Payment
    credentials to an official Stableyard interface SDK.

    5. Process signed webhooks and fetch the Payment by ID for reconciliation.


    Checkout execution and account-bound browser endpoints are intentionally
    documented in the separate Interfaces & SDKs reference. Console endpoints
    are dashboard implementation details and are not part of the partner
    integration contract.
  x-stableyard-documentation-surface: partner
servers:
  - url: https://prod-api.stableyard.fi
    description: Production
  - url: https://staging-api-v2.stableyard.fi
    description: Staging
  - url: http://localhost:3001
    description: Local
security: []
tags:
  - name: Authentication
    x-displayName: API authentication
    description: Verify your app ID and app secret before calling UPA APIs.
  - name: Accounts
    x-displayName: UPA Accounts
    description: Create Universal Payment Accounts and manage account settings.
  - name: Deposit Addresses
    description: Create reusable receive addresses and verify inbound deposits.
  - name: Identity & KYC
    description: >-
      Verify the UPA email and run provider-neutral identity verification.
      Managed vaults and fiat payment rails use this same verified UPA identity.
  - name: Vaults
    description: >-
      Create Safe/Zodiac controlled stablecoin vaults and manage policy updates
      for accounts.
  - name: Payments
    description: >-
      Create escrow-first payments, issue partner-authenticated send
      instructions or executions, power public checkout, and reconcile
      collection through final account settlement.
  - name: Balances & Transactions
    description: >-
      Read Stableyard-posted financial activity. Balances are ledger projections
      of activity Stableyard processed; they are not live balances of externally
      controlled wallets.
paths:
  /v2/partners/config:
    get:
      tags:
        - Authentication
      summary: Get partner configuration
      description: >

        Use this as your first call in each environment. It verifies the app
        ID/app secret and returns the partner's enabled modules, fee
        configuration, supported networks/assets, payment-method capability
        surface, webhook event catalog, and Vault settings.


        This endpoint is read-only and returns no secrets. Payment methods are
        Payment-specific: create the Payment, then use its payment-methods
        endpoint for the exact methods available for that amount, destination,
        settlement, and capability snapshot.
      operationId: getPartnerConfig
      parameters:
        - name: Stableyard-Version
          in: header
          required: false
          schema:
            type: string
            enum:
              - '2026-09-09'
          description: >-
            Optional contract-version assertion. Omit it to use the app
            environment's pinned version. A different supported version is
            accepted only after that environment is explicitly migrated.
      responses:
        '200':
          description: Partner configuration
          headers:
            Stableyard-Version:
              description: >-
                Effective date-based Stableyard API contract version for this
                response.
              schema:
                type: string
                enum:
                  - '2026-09-09'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PartnerConfig'
              examples:
                example:
                  summary: Get partner configuration 200 response
                  value:
                    id: app_123
                    appId: app_123
                    organizationId: org_123
                    environmentId: env_123
                    apiVersion: '2026-09-09'
                    supportedApiVersions:
                      - '2026-09-09'
                    namespace: partner
                    scopes:
                      - v2:accounts
                      - v2:deposit_addresses
                      - v2:payments
                    credentialType: standard
                    credentialMode: app_secret
                    status: active
                    modules:
                      - id: deposit_addresses
                        name: Deposit Addresses
                        description: Example payment
                        scopes:
                          - v2:deposit_addresses
                        defaultEnabled: true
                        optional: true
                        entitled: true
                        credentialAllowed: true
                        operational: true
                        available: true
                        disabledReason: null
                    compliance:
                      partnerKyb:
                        status: not_started
                        updatedAt: null
                      requirements:
                        partnerFiatAccess: kyb
                        individualUpaFiatAccess: kyc
                        businessUpaFiatAccess: kyb
                    fees:
                      partnerFeeBps: 25
                      partnerFeePercent: 0.25
                      platformFeeBps: 50
                      platformFeePercent: 0.5
                      totalFeeBps: 75
                      totalFeePercent: 0.75
                      model: deducted_at_final_settlement
                      currency: USD
                    networks:
                      - code: base
                        aliases:
                          - base
                          - base-mainnet
                          - '8453'
                        chainFamily: evm
                        chainId: 8453
                        depositAddresses:
                          supported: true
                          provider: alchemy
                          operational: true
                          disabledReason: null
                        connectedWallets:
                          supported: true
                        settlement:
                          supported: true
                        paymentCollection:
                          supported: true
                          provider: null
                          network: base
                          configured: true
                          detectionMode: null
                          disabledReason: null
                        defaultAsset:
                          symbol: USDC
                          tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                          decimals: 6
                          kind: token
                          minimumDeposit:
                            amount: '0.5'
                            amountAtomic: '500000'
                            inclusive: true
                          pricing:
                            referenceCurrency: USD
                            referenceAmount: '1'
                            assetAmount: '33'
                            description: 1 USD = 33 THBT
                        supportedAssets:
                          - symbol: USDC
                            tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                            decimals: 6
                            kind: token
                            minimumDeposit:
                              amount: '0.5'
                              amountAtomic: '500000'
                              inclusive: true
                            pricing:
                              referenceCurrency: USD
                              referenceAmount: '1'
                              assetAmount: '33'
                              description: 1 USD = 33 THBT
                    capabilities:
                      accounts:
                        entitled: true
                        credentialAllowed: true
                        operational: true
                        available: true
                        disabledReason: null
                        availableToCredential: true
                        accountIdLookup: true
                        externalUserIdLookup: true
                        handles: true
                        connectedWallets: true
                        emailVerification:
                          mode: stableyard_email_otp
                          partnerAssertionAllowed: true
                          version: 0
                      depositAddresses:
                        entitled: true
                        credentialAllowed: true
                        operational: true
                        available: true
                        disabledReason: null
                        availableToCredential: true
                        supportedChainIds:
                          - 42161
                          - 1
                          - 8453
                          - 137
                          - 56
                          - 43114
                          - 4663
                          - 4217
                          - 10103
                          - 10002
                          - 728126428
                          - 10001
                        availableChainIds:
                          - 42161
                          - 1
                          - 8453
                          - 137
                          - 56
                          - 43114
                          - 4663
                          - 4217
                          - 10103
                          - 10002
                          - 728126428
                          - 10001
                        supportedNetworks:
                          - code: example
                            chainId: 1
                            chainFamily: evm
                            operational: true
                            disabledReason: null
                            assets:
                              - symbol: USDC
                                tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                                decimals: 6
                                kind: token
                                minimumDeposit:
                                  amount: '0.5'
                                  amountAtomic: '500000'
                                  inclusive: true
                                pricing:
                                  referenceCurrency: USD
                                  referenceAmount: '1'
                                  assetAmount: '33'
                                  description: 1 USD = 33 THBT
                      payments:
                        entitled: true
                        credentialAllowed: true
                        operational: true
                        available: true
                        disabledReason: null
                        availableToCredential: true
                        capabilities:
                          crypto: true
                          onramp: {}
                          externalQr: true
                          externalBank: true
                          card: true
                        methods:
                          direct:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                          routing:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                          onramp:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                          externalQr:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                            destinationType: external_qr
                            standaloneApi: false
                            countries:
                              - country: PH
                                countryName: Philippines
                                currency: PHP
                                rails:
                                  - qr
                                minimumAmountAtomic: '1000000'
                                maximumAmountAtomic: '1000000'
                                enabled: true
                            preparationAvailable: true
                            paymentExecutionAvailable: true
                          externalBank:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                            destinationType: external_bank
                            standaloneApi: false
                            directoryEndpoint: /v2/payments/external-bank/banks?country={country}
                            countries:
                              - country: VN
                                countryName: Vietnam
                                currency: VND
                                rails:
                                  - bank_transfer
                                minimumAmountAtomic: '1000000'
                                maximumAmountAtomic: '1000000'
                                enabled: true
                            preparationAvailable: true
                            paymentExecutionAvailable: true
                          card:
                            entitled: true
                            credentialAllowed: true
                            operational: true
                            available: true
                            disabledReason: null
                        publicPaymentCreation:
                          enabled: true
                          authentication: none
                          purpose: fund_wallet_or_pay_enabled_upa
                          methods:
                            - crypto
                          destinations:
                            - chainId: 8453
                              networkCode: base
                              chainName: Base
                              chainFamily: evm
                              assetSymbol: USDC
                              tokenAddress: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
                              decimals: 6
                              assetKind: token
                              logoUrl: null
                              minimumAmount: '10'
                              maximumAmount: '1000'
                              available: true
                              disabledReason: null
                          allowedFiatCurrencies:
                            - USD
                          paymentTtlSeconds: 120
                          configureEndpoint: /v2/partners/payment-settings
                          createEndpoint: example
                      balancesAndTransactions:
                        enabled: true
                        availableToCredential: true
                        balances:
                          enabled: true
                          availableToCredential: true
                        transactions:
                          enabled: true
                          availableToCredential: true
                      webhooks:
                        supportedEvents:
                          - account.created
                          - account.updated
                          - bank_funding.completed
                          - bank_funding.failed
                          - compliance.action_required
                          - compliance.submitted
                          - compliance.approved
                          - compliance.rejected
                          - compliance.requires_intervention
                          - deposit.detected
                          - deposit.settled
                          - deposit.failed
                          - deposit.requires_intervention
                          - deposit.reversed
                          - kyc.session_created
                          - kyc.updated
                          - partner_kyc.requires_information
                          - partner_kyc.information_submitted
                          - partner_kyc.ready_to_submit
                          - partner_kyc.submitted
                          - partner_kyc.approved
                          - partner_kyc.rejected
                          - offramp_partner_account.linked
                          - smart_wallet.active
                          - smart_wallet.deployment_failed
                          - smart_wallet.requires_intervention
                          - vault.policy_active
                          - vault.failed
                          - vault.funding_posted
                          - vault.funding_requires_intervention
                          - vault.yield_supply_settled
                          - vault.yield_supply_failed
                          - payment.created
                          - payment.requires_action
                          - payment.processing
                          - payment.accepted
                          - payment.refund_pending
                          - payment.partially_refunded
                          - payment.refunded
                          - payment.succeeded
                          - payment.failed
                          - payment.cancelled
                          - payment.expired
                          - payment.requires_intervention
                          - payment.duplicate_received
                          - payment.late_received
                          - payment.settlement_returned
                        recommendedEvents:
                          - account.created
                          - account.updated
                          - bank_funding.completed
                          - bank_funding.failed
                          - compliance.action_required
                          - compliance.approved
                          - compliance.rejected
                          - compliance.requires_intervention
                          - deposit.detected
                          - deposit.settled
                          - deposit.reversed
                          - deposit.requires_intervention
                          - payment.processing
                          - payment.accepted
                          - payment.refund_pending
                          - payment.partially_refunded
                          - payment.refunded
                          - payment.succeeded
                          - payment.failed
                          - payment.cancelled
                          - payment.expired
                          - payment.requires_intervention
                          - payment.duplicate_received
                          - payment.late_received
                          - payment.settlement_returned
                        eventGroups:
                          - id: accounts
                            label: Accounts
                            events:
                              - account.created
                              - account.updated
                          - id: deposits
                            label: Deposits
                            events:
                              - deposit.detected
                              - deposit.settled
                              - deposit.requires_intervention
                              - deposit.reversed
                              - deposit.failed
                          - id: bank_funding
                            label: Bank funding
                            events:
                              - bank_funding.completed
                              - bank_funding.failed
                          - id: payments
                            label: Payments
                            events:
                              - payment.created
                              - payment.requires_action
                              - payment.processing
                              - payment.accepted
                              - payment.refund_pending
                              - payment.partially_refunded
                              - payment.refunded
                              - payment.succeeded
                              - payment.failed
                              - payment.cancelled
                              - payment.expired
                              - payment.requires_intervention
                              - payment.duplicate_received
                              - payment.late_received
                              - payment.settlement_returned
                          - id: kyc
                            label: KYC
                            events:
                              - kyc.session_created
                              - kyc.updated
                              - partner_kyc.requires_information
                              - partner_kyc.information_submitted
                              - partner_kyc.ready_to_submit
                              - partner_kyc.submitted
                              - partner_kyc.approved
                              - partner_kyc.rejected
                              - offramp_partner_account.linked
                          - id: compliance
                            label: Compliance
                            events:
                              - compliance.action_required
                              - compliance.submitted
                              - compliance.approved
                              - compliance.rejected
                              - compliance.requires_intervention
                          - id: vaults
                            label: Vaults
                            events:
                              - vault.policy_active
                              - vault.failed
                              - vault.funding_posted
                              - vault.funding_requires_intervention
                              - vault.yield_supply_settled
                              - vault.yield_supply_failed
                          - id: smart_wallets
                            label: Smart Wallets
                            events:
                              - smart_wallet.active
                              - smart_wallet.deployment_failed
                              - smart_wallet.requires_intervention
                        signatures:
                          header: x-stableyard-signature
                          timestampHeader: x-stableyard-timestamp
                          deliveryHeader: x-stableyard-delivery
                          eventHeader: x-stableyard-event
                          scheme: hmac-sha256
                          signedPayload: <timestamp>.<deliveryId>.<eventId>.<rawBody>
                        deliveryPolicy:
                          guarantee: at_least_once
                          retryableStatuses:
                            - 408
                            - 425
                            - 429
                            - 500
                            - 502
                            - 503
                            - 504
                          maxAttempts: 3
                          localPrivateDestinationsAllowed: false
                          dedupe:
                            deliveryRetryHeader: x-stableyard-delivery
                            eventHeader: x-stableyard-event-id
                            resourceStrategy: >-
                              Use the event name plus the public resource id in
                              the payload, such as depositId or paymentId, for
                              business-level idempotency.
                      vaults:
                        entitled: true
                        credentialAllowed: true
                        operational: true
                        available: true
                        scope: v2:vaults
                        runtime: enabled
                        disabledReason: null
                        ownershipModes:
                          external: true
                          stableyard: true
                        managedApproval:
                          method: email_otp
                          ready: true
                          disabledReason: null
                        spendLimit:
                          defaultAmountAtomic: '500000000'
                          maxAmountAtomic: '5000000000'
                          currency: USD
                          decimals: 6
                          period: fixed_30_day
                        yieldProviders:
                          - none
                        tokens:
                          - symbol: USDC
                            chainId: 42161
                            tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                            decimals: 6
                        resourceVersion: null
                    integrations:
                      clientApi:
                        enabled: true
                        availableToCredential: true
                      webhooks:
                        enabled: true
                        availableToCredential: true
                      partnerConsole:
                        enabled: true
                        availableToCredential: true
                    links:
                      docs: https://docs.stableyard.fi
                      openapi: /v2/openapi/partners.json
                      dashboard: https://dashboard.stableyard.fi
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '424':
          $ref: '#/components/responses/FailedDependency'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      security:
        - partnerBasicAuth: []
      x-codeSamples:
        - lang: curl
          label: Get partner configuration
          source: >-
            curl --request GET
            "https://prod-api.stableyard.fi/v2/partners/config" \
              --header "Authorization: Basic <BASE64_APP_ID_COLON_APP_SECRET>"
components:
  schemas:
    PartnerConfig:
      type: object
      additionalProperties: false
      required:
        - id
        - appId
        - organizationId
        - environmentId
        - apiVersion
        - supportedApiVersions
        - namespace
        - scopes
        - credentialType
        - credentialMode
        - status
        - modules
        - compliance
        - fees
        - networks
        - capabilities
        - integrations
        - links
      properties:
        id:
          type: string
          example: app_123
        appId:
          type: string
          example: app_123
        organizationId:
          type: string
          example: org_123
        environmentId:
          type: string
          example: env_123
        apiVersion:
          $ref: '#/components/schemas/StableyardApiVersion'
        supportedApiVersions:
          type: array
          items:
            $ref: '#/components/schemas/StableyardApiVersion'
        namespace:
          type: string
          example: partner
        scopes:
          type: array
          items:
            type: string
          example:
            - v2:accounts
            - v2:deposit_addresses
            - v2:payments
        credentialType:
          type: string
          enum:
            - standard
            - restricted
          description: >-
            Standard keys dynamically receive permissions for enabled app
            products. Restricted keys retain an explicit scope subset.
        credentialMode:
          type: string
          enum:
            - app_secret
            - portal_session
          description: >-
            Identifies whether the request used a server app secret or a
            short-lived Partner Dashboard session.
        status:
          type: string
          example: active
        modules:
          type: array
          items:
            $ref: '#/components/schemas/PartnerConfigModule'
        compliance:
          type: object
          additionalProperties: false
          required:
            - partnerKyb
            - requirements
          properties:
            partnerKyb:
              type: object
              additionalProperties: false
              required:
                - status
                - updatedAt
              properties:
                status:
                  type: string
                  enum:
                    - not_started
                    - pending
                    - approved
                    - action_required
                  description: >-
                    Provider-neutral standing of the Partner organization's KYB
                    prerequisite for fiat access.
                updatedAt:
                  type:
                    - string
                    - 'null'
                  format: date-time
            requirements:
              type: object
              additionalProperties: false
              required:
                - partnerFiatAccess
                - individualUpaFiatAccess
                - businessUpaFiatAccess
              properties:
                partnerFiatAccess:
                  type: string
                  const: kyb
                individualUpaFiatAccess:
                  type: string
                  const: kyc
                businessUpaFiatAccess:
                  type: string
                  const: kyb
        fees:
          $ref: '#/components/schemas/PartnerFeeConfig'
        networks:
          type: array
          items:
            $ref: '#/components/schemas/PartnerNetworkConfig'
        capabilities:
          $ref: '#/components/schemas/PartnerCapabilities'
        integrations:
          type: object
          additionalProperties: false
          required:
            - clientApi
            - webhooks
            - partnerConsole
          properties:
            clientApi:
              $ref: '#/components/schemas/PartnerIntegrationAvailability'
            webhooks:
              $ref: '#/components/schemas/PartnerIntegrationAvailability'
            partnerConsole:
              $ref: '#/components/schemas/PartnerIntegrationAvailability'
        links:
          type: object
          additionalProperties: false
          required:
            - docs
            - openapi
            - dashboard
          properties:
            docs:
              type: string
              example: https://docs.stableyard.fi
            openapi:
              type: string
              example: /v2/openapi/partners.json
            dashboard:
              type: string
              example: https://dashboard.stableyard.fi
    StableyardApiVersion:
      type: string
      enum:
        - '2026-08-28'
        - '2026-09-09'
      example: '2026-09-09'
      description: >-
        Immutable date-based contract recorded on the resource. Historical
        values may appear on existing records; only versions advertised in
        x-stableyard-supported-api-versions are accepted for new requests.
    PartnerConfigModule:
      type: object
      additionalProperties: false
      required:
        - id
        - name
        - description
        - scopes
        - defaultEnabled
        - optional
        - entitled
        - credentialAllowed
        - operational
        - available
        - disabledReason
      properties:
        id:
          type: string
          example: deposit_addresses
        name:
          type: string
          example: Deposit Addresses
        description:
          type: string
        scopes:
          type: array
          items:
            type: string
          example:
            - v2:deposit_addresses
        defaultEnabled:
          type: boolean
        optional:
          type: boolean
        entitled:
          type: boolean
          description: Commercial product access configured for this app environment.
        credentialAllowed:
          type: boolean
          description: Whether the presented API key is permitted to use the product.
        operational:
          type: boolean
          description: Whether required provider and runtime configuration is ready.
        available:
          type: boolean
          description: >-
            True only when entitled, credentialAllowed, and operational are all
            true.
        disabledReason:
          type:
            - string
            - 'null'
          enum:
            - not_entitled
            - credential_not_allowed
            - runtime_not_configured
            - null
    PartnerFeeConfig:
      type: object
      additionalProperties: false
      required:
        - partnerFeeBps
        - partnerFeePercent
        - platformFeeBps
        - platformFeePercent
        - totalFeeBps
        - totalFeePercent
        - model
        - currency
      properties:
        partnerFeeBps:
          type: integer
          minimum: 0
          example: 25
        partnerFeePercent:
          type: number
          minimum: 0
          example: 0.25
        platformFeeBps:
          type: integer
          minimum: 0
          example: 50
        platformFeePercent:
          type: number
          minimum: 0
          example: 0.5
        totalFeeBps:
          type: integer
          minimum: 0
          example: 75
        totalFeePercent:
          type: number
          minimum: 0
          example: 0.75
        model:
          type: string
          const: deducted_at_final_settlement
        currency:
          type: string
          const: USD
    PartnerNetworkConfig:
      type: object
      additionalProperties: false
      required:
        - code
        - aliases
        - chainFamily
        - chainId
        - depositAddresses
        - connectedWallets
        - settlement
        - paymentCollection
        - defaultAsset
        - supportedAssets
      properties:
        code:
          type: string
          example: base
        aliases:
          type: array
          items:
            type: string
          example:
            - base
            - base-mainnet
            - '8453'
        chainFamily:
          type: string
          enum:
            - evm
            - tron
            - btc
            - solana
            - movement
        chainId:
          type: integer
          example: 8453
        depositAddresses:
          type: object
          additionalProperties: false
          required:
            - supported
            - provider
            - operational
            - disabledReason
          properties:
            supported:
              type: boolean
            provider:
              type:
                - string
                - 'null'
              example: alchemy
            operational:
              type: boolean
              description: >-
                Whether this deployment can register addresses and authenticate
                deposit webhooks for this network.
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - deposit_addresses_not_supported_on_network
                - deposit_address_issuance_paused
                - deposit_webhook_not_configured
                - deposit_webhook_provider_not_configured
                - null
        connectedWallets:
          type: object
          additionalProperties: false
          required:
            - supported
          properties:
            supported:
              type: boolean
        settlement:
          type: object
          additionalProperties: false
          required:
            - supported
          properties:
            supported:
              type: boolean
        paymentCollection:
          type: object
          additionalProperties: false
          required:
            - supported
            - provider
            - network
            - configured
            - detectionMode
            - disabledReason
          properties:
            supported:
              type: boolean
              description: >-
                Whether this deployment can currently collect one-time Payments
                through escrow on this network.
            provider:
              type:
                - string
                - 'null'
              enum:
                - alchemy
                - quicknode
                - null
              description: >-
                Webhook/indexer provider used for one-time Payment escrow
                collection on this network.
            network:
              type:
                - string
                - 'null'
              description: Provider-specific network code used for escrow collection.
              example: base
            configured:
              type: boolean
              description: >-
                Whether every runtime dependency required by the selected
                receipt-detection mode is present for this network.
            detectionMode:
              type:
                - string
                - 'null'
              enum:
                - provider_webhook
                - transaction_hash_submission
                - null
              description: >-
                How Payment receipts are discovered. Movement uses a
                payer-submitted hash that Stableyard independently verifies;
                supported EVM networks use provider webhooks.
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - payment_collection_not_supported_on_network
                - payment_collection_webhook_not_configured
                - payment_transaction_submission_disabled
                - payment_transaction_verification_not_configured
                - null
        defaultAsset:
          $ref: '#/components/schemas/PartnerNetworkAsset'
        supportedAssets:
          type: array
          items:
            $ref: '#/components/schemas/PartnerNetworkAsset'
    PartnerCapabilities:
      type: object
      additionalProperties: false
      required:
        - accounts
        - depositAddresses
        - payments
        - balancesAndTransactions
        - webhooks
        - vaults
      properties:
        accounts:
          type: object
          additionalProperties: false
          required:
            - entitled
            - credentialAllowed
            - operational
            - available
            - disabledReason
            - availableToCredential
            - accountIdLookup
            - externalUserIdLookup
            - handles
            - connectedWallets
            - emailVerification
          properties:
            entitled:
              type: boolean
            credentialAllowed:
              type: boolean
            operational:
              type: boolean
            available:
              type: boolean
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - not_entitled
                - credential_not_allowed
                - runtime_not_configured
                - null
            availableToCredential:
              type: boolean
            accountIdLookup:
              type: boolean
            externalUserIdLookup:
              type: boolean
            handles:
              type: boolean
            connectedWallets:
              type: boolean
            emailVerification:
              $ref: '#/components/schemas/AccountEmailVerificationPolicy'
        depositAddresses:
          type: object
          additionalProperties: false
          required:
            - entitled
            - credentialAllowed
            - operational
            - available
            - disabledReason
            - availableToCredential
            - supportedChainIds
            - availableChainIds
            - supportedNetworks
          properties:
            entitled:
              type: boolean
            credentialAllowed:
              type: boolean
            operational:
              type: boolean
            available:
              type: boolean
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - not_entitled
                - credential_not_allowed
                - runtime_not_configured
                - null
            availableToCredential:
              type: boolean
            supportedChainIds:
              type: array
              items:
                type: integer
              example:
                - 42161
                - 1
                - 8453
                - 137
                - 56
                - 43114
                - 4663
                - 4217
                - 10103
                - 10002
                - 728126428
                - 10001
            availableChainIds:
              type: array
              items:
                type: integer
              example:
                - 42161
                - 1
                - 8453
                - 137
                - 56
                - 43114
                - 4663
                - 4217
                - 10103
                - 10002
                - 728126428
                - 10001
            supportedNetworks:
              type: array
              items:
                type: object
                additionalProperties: false
                required:
                  - code
                  - chainId
                  - chainFamily
                  - operational
                  - disabledReason
                  - assets
                properties:
                  code:
                    type: string
                  chainId:
                    type: integer
                  chainFamily:
                    type: string
                    enum:
                      - evm
                      - tron
                      - btc
                      - solana
                      - movement
                  operational:
                    type: boolean
                  disabledReason:
                    type:
                      - string
                      - 'null'
                    enum:
                      - deposit_addresses_not_supported_on_network
                      - deposit_address_issuance_paused
                      - deposit_webhook_not_configured
                      - deposit_webhook_provider_not_configured
                      - null
                  assets:
                    type: array
                    items:
                      $ref: '#/components/schemas/PartnerNetworkAsset'
        payments:
          type: object
          additionalProperties: true
          required:
            - entitled
            - credentialAllowed
            - operational
            - available
            - disabledReason
            - availableToCredential
            - capabilities
            - methods
            - publicPaymentCreation
          properties:
            entitled:
              type: boolean
            credentialAllowed:
              type: boolean
            operational:
              type: boolean
            available:
              type: boolean
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - not_entitled
                - credential_not_allowed
                - runtime_not_configured
                - null
            availableToCredential:
              type: boolean
            capabilities:
              type: object
              additionalProperties: false
              required:
                - crypto
                - onramp
                - externalQr
                - externalBank
                - card
              properties:
                crypto:
                  type: boolean
                onramp:
                  type: object
                  additionalProperties: true
                externalQr:
                  type: boolean
                  description: >-
                    Whether the app has the optional External QR Payment
                    entitlement.
                externalBank:
                  type: boolean
                  description: >-
                    Whether the app has the optional External Bank Transfer
                    entitlement.
                card:
                  type: boolean
            methods:
              type: object
              additionalProperties: true
              required:
                - direct
                - routing
                - onramp
                - externalQr
                - externalBank
                - card
              properties:
                direct:
                  $ref: '#/components/schemas/PartnerPaymentMethodAvailability'
                routing:
                  $ref: '#/components/schemas/PartnerPaymentMethodAvailability'
                onramp:
                  $ref: '#/components/schemas/PartnerPaymentMethodAvailability'
                externalQr:
                  type: object
                  additionalProperties: true
                  description: >-
                    Optional canonical Payment send rail for a provider-resolved
                    external merchant QR. This is not a standalone Offramp API.
                  required:
                    - entitled
                    - credentialAllowed
                    - operational
                    - available
                    - disabledReason
                    - destinationType
                    - standaloneApi
                    - countries
                    - preparationAvailable
                    - paymentExecutionAvailable
                  properties:
                    entitled:
                      type: boolean
                    credentialAllowed:
                      type: boolean
                    operational:
                      type: boolean
                    available:
                      type: boolean
                    disabledReason:
                      type:
                        - string
                        - 'null'
                      enum:
                        - not_entitled
                        - credential_not_allowed
                        - runtime_not_configured
                        - null
                    destinationType:
                      type: string
                      const: external_qr
                    standaloneApi:
                      type: boolean
                      const: false
                    countries:
                      type: array
                      items:
                        type: object
                        additionalProperties: false
                        required:
                          - country
                          - countryName
                          - currency
                          - rails
                          - enabled
                        properties:
                          country:
                            type: string
                            pattern: ^[A-Z]{2}$
                            example: PH
                          countryName:
                            type: string
                            example: Philippines
                          currency:
                            type: string
                            pattern: ^[A-Z]{3}$
                            example: PHP
                          rails:
                            type: array
                            items:
                              type: string
                            example:
                              - qr
                          minimumAmountAtomic:
                            type: string
                            pattern: ^(0|[1-9][0-9]*)$
                          maximumAmountAtomic:
                            type: string
                            pattern: ^(0|[1-9][0-9]*)$
                          enabled:
                            type: boolean
                    preparationAvailable:
                      type: boolean
                    paymentExecutionAvailable:
                      type: boolean
                externalBank:
                  type: object
                  additionalProperties: true
                  description: >-
                    Optional canonical Payment send rail for a verified one-time
                    bank beneficiary supplied inline. Saved linked-bank
                    beneficiaries use their bankAccountId; neither shape
                    establishes ownership by the sending UPA subject.
                  required:
                    - entitled
                    - credentialAllowed
                    - operational
                    - available
                    - disabledReason
                    - destinationType
                    - standaloneApi
                    - directoryEndpoint
                    - countries
                    - preparationAvailable
                    - paymentExecutionAvailable
                  properties:
                    entitled:
                      type: boolean
                    credentialAllowed:
                      type: boolean
                    operational:
                      type: boolean
                    available:
                      type: boolean
                    disabledReason:
                      type:
                        - string
                        - 'null'
                      enum:
                        - not_entitled
                        - credential_not_allowed
                        - runtime_not_configured
                        - null
                    destinationType:
                      type: string
                      const: external_bank
                    standaloneApi:
                      type: boolean
                      const: false
                    directoryEndpoint:
                      type: string
                      const: /v2/payments/external-bank/banks?country={country}
                    countries:
                      type: array
                      items:
                        type: object
                        additionalProperties: false
                        required:
                          - country
                          - countryName
                          - currency
                          - rails
                          - enabled
                        properties:
                          country:
                            type: string
                            pattern: ^[A-Z]{2}$
                            example: VN
                          countryName:
                            type: string
                            example: Vietnam
                          currency:
                            type: string
                            pattern: ^[A-Z]{3}$
                            example: VND
                          rails:
                            type: array
                            items:
                              type: string
                            example:
                              - bank_transfer
                          minimumAmountAtomic:
                            type: string
                            pattern: ^(0|[1-9][0-9]*)$
                          maximumAmountAtomic:
                            type: string
                            pattern: ^(0|[1-9][0-9]*)$
                          enabled:
                            type: boolean
                    preparationAvailable:
                      type: boolean
                    paymentExecutionAvailable:
                      type: boolean
                card:
                  $ref: '#/components/schemas/PartnerPaymentMethodAvailability'
            publicPaymentCreation:
              type: object
              additionalProperties: false
              required:
                - enabled
                - authentication
                - purpose
                - methods
                - destinations
                - allowedFiatCurrencies
                - paymentTtlSeconds
                - configureEndpoint
                - createEndpoint
              properties:
                enabled:
                  type: boolean
                authentication:
                  type: string
                  const: none
                purpose:
                  type: string
                  const: fund_wallet_or_pay_enabled_upa
                methods:
                  type: array
                  description: >-
                    Configured methods filtered by current entitlement,
                    provider, and destination readiness.
                  items:
                    type: string
                    enum:
                      - crypto
                      - routing
                      - onramp
                destinations:
                  type: array
                  items:
                    $ref: '#/components/schemas/PaymentDestinationCapability'
                allowedFiatCurrencies:
                  type: array
                  items:
                    type: string
                    pattern: ^[A-Z]{3}$
                paymentTtlSeconds:
                  type: integer
                  minimum: 120
                  maximum: 3600
                configureEndpoint:
                  type: string
                  const: /v2/partners/payment-settings
                createEndpoint:
                  type: string
        balancesAndTransactions:
          type: object
          additionalProperties: false
          required:
            - enabled
            - availableToCredential
            - balances
            - transactions
          properties:
            enabled:
              type: boolean
            availableToCredential:
              type: boolean
            balances:
              $ref: '#/components/schemas/PartnerIntegrationAvailability'
            transactions:
              $ref: '#/components/schemas/PartnerIntegrationAvailability'
        webhooks:
          $ref: '#/components/schemas/WebhookCapabilities'
        vaults:
          $ref: '#/components/schemas/VaultCapability'
    PartnerIntegrationAvailability:
      type: object
      additionalProperties: false
      required:
        - enabled
        - availableToCredential
      properties:
        enabled:
          type: boolean
        availableToCredential:
          type: boolean
    ErrorResponse:
      type: object
      additionalProperties: false
      required:
        - error
      properties:
        error:
          type: object
          additionalProperties: false
          required:
            - code
            - message
          properties:
            code:
              type: string
              minLength: 1
              maxLength: 128
              example: bad_request
            message:
              type: string
              minLength: 1
              maxLength: 1000
              example: The request is invalid
            details: {}
    PartnerNetworkAsset:
      type: object
      additionalProperties: false
      required:
        - symbol
        - tokenAddress
        - decimals
      properties:
        symbol:
          type: string
          example: USDC
        tokenAddress:
          type: string
          example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        decimals:
          type: integer
          minimum: 0
          maximum: 36
          example: 6
        kind:
          type: string
          enum:
            - token
            - native
        minimumDeposit:
          type: object
          additionalProperties: false
          required:
            - amount
            - amountAtomic
            - inclusive
          properties:
            amount:
              type: string
              example: '0.5'
            amountAtomic:
              type: string
              example: '500000'
            inclusive:
              type: boolean
              example: true
        pricing:
          type: object
          additionalProperties: false
          required:
            - referenceCurrency
            - referenceAmount
            - assetAmount
            - description
          description: >-
            Optional demo/reference pricing for non-USD-denominated stablecoins.
            It is informational and not a routing quote.
          properties:
            referenceCurrency:
              type: string
              example: USD
            referenceAmount:
              type: string
              example: '1'
            assetAmount:
              type: string
              example: '33'
            description:
              type: string
              example: 1 USD = 33 THBT
    AccountEmailVerificationPolicy:
      type: object
      additionalProperties: false
      required:
        - mode
        - partnerAssertionAllowed
        - version
      properties:
        mode:
          type: string
          enum:
            - stableyard_email_otp
            - partner_asserted
        partnerAssertionAllowed:
          type: boolean
        version:
          type: integer
          minimum: 0
    PartnerPaymentMethodAvailability:
      type: object
      additionalProperties: true
      required:
        - entitled
        - credentialAllowed
        - operational
        - available
        - disabledReason
      properties:
        entitled:
          type: boolean
          description: >-
            Whether the app environment is commercially entitled to this payment
            method.
        credentialAllowed:
          type: boolean
          description: Whether the presented API key can use this payment method.
        operational:
          type: boolean
          description: Whether the required provider and runtime configuration is healthy.
        available:
          type: boolean
          description: >-
            True only when entitled, credentialAllowed, and operational are all
            true.
        disabledReason:
          type:
            - string
            - 'null'
          enum:
            - not_entitled
            - credential_not_allowed
            - runtime_not_configured
            - null
    PaymentDestinationCapability:
      type: object
      additionalProperties: false
      required:
        - chainId
        - networkCode
        - chainName
        - chainFamily
        - assetSymbol
        - tokenAddress
        - decimals
        - assetKind
        - logoUrl
        - minimumAmount
        - maximumAmount
        - available
        - disabledReason
      properties:
        chainId:
          type: integer
          minimum: 1
          example: 8453
        networkCode:
          type: string
          example: base
        chainName:
          type: string
          example: Base
        chainFamily:
          type: string
          enum:
            - evm
            - tron
            - btc
            - solana
            - movement
        assetSymbol:
          type: string
          pattern: ^[A-Z0-9]{2,16}$
          example: USDC
        tokenAddress:
          type: string
          example: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
        decimals:
          type: integer
          minimum: 0
          maximum: 36
          example: 6
        assetKind:
          type: string
          enum:
            - token
            - native
        logoUrl:
          type:
            - string
            - 'null'
          format: uri
          description: >-
            Optional asset logo override. Official Stableyard interface SDKs use
            their bundled chain and asset logos when null.
        minimumAmount:
          type: string
          pattern: ^(?:[1-9][0-9]*(?:\.[0-9]+)?|0\.(?:[0-9]*[1-9][0-9]*))$
          example: '10'
        maximumAmount:
          type: string
          pattern: ^(?:[1-9][0-9]*(?:\.[0-9]+)?|0\.(?:[0-9]*[1-9][0-9]*))$
          example: '1000'
        available:
          type: boolean
          const: true
        disabledReason:
          type: 'null'
    WebhookCapabilities:
      type: object
      additionalProperties: false
      required:
        - supportedEvents
        - recommendedEvents
        - eventGroups
        - signatures
        - deliveryPolicy
      properties:
        supportedEvents:
          type: array
          items:
            type: string
            description: >-
              Extensible partner webhook event name. Currently emitted public
              values: account.created, account.updated, bank_funding.completed,
              bank_funding.failed, compliance.action_required,
              compliance.submitted, compliance.approved, compliance.rejected,
              compliance.requires_intervention, deposit.detected,
              deposit.settled, deposit.failed, deposit.requires_intervention,
              deposit.reversed, kyc.session_created, kyc.updated,
              partner_kyc.requires_information,
              partner_kyc.information_submitted, partner_kyc.ready_to_submit,
              partner_kyc.submitted, partner_kyc.approved, partner_kyc.rejected,
              offramp_partner_account.linked, smart_wallet.active,
              smart_wallet.deployment_failed,
              smart_wallet.requires_intervention, vault.policy_active,
              vault.failed, vault.funding_posted,
              vault.funding_requires_intervention, vault.yield_supply_settled,
              vault.yield_supply_failed, payment.created,
              payment.requires_action, payment.processing, payment.accepted,
              payment.refund_pending, payment.partially_refunded,
              payment.refunded, payment.succeeded, payment.failed,
              payment.cancelled, payment.expired, payment.requires_intervention,
              payment.duplicate_received, payment.late_received,
              payment.settlement_returned. `payment.requires_intervention`
              reports an operational condition: inspect the Payment's
              operationalState and operationalReasonCode without treating it as
              a replacement for the financial status.
            x-known-values:
              - account.created
              - account.updated
              - bank_funding.completed
              - bank_funding.failed
              - compliance.action_required
              - compliance.submitted
              - compliance.approved
              - compliance.rejected
              - compliance.requires_intervention
              - deposit.detected
              - deposit.settled
              - deposit.failed
              - deposit.requires_intervention
              - deposit.reversed
              - kyc.session_created
              - kyc.updated
              - partner_kyc.requires_information
              - partner_kyc.information_submitted
              - partner_kyc.ready_to_submit
              - partner_kyc.submitted
              - partner_kyc.approved
              - partner_kyc.rejected
              - offramp_partner_account.linked
              - smart_wallet.active
              - smart_wallet.deployment_failed
              - smart_wallet.requires_intervention
              - vault.policy_active
              - vault.failed
              - vault.funding_posted
              - vault.funding_requires_intervention
              - vault.yield_supply_settled
              - vault.yield_supply_failed
              - payment.created
              - payment.requires_action
              - payment.processing
              - payment.accepted
              - payment.refund_pending
              - payment.partially_refunded
              - payment.refunded
              - payment.succeeded
              - payment.failed
              - payment.cancelled
              - payment.expired
              - payment.requires_intervention
              - payment.duplicate_received
              - payment.late_received
              - payment.settlement_returned
          example:
            - account.created
            - account.updated
            - bank_funding.completed
            - bank_funding.failed
            - compliance.action_required
            - compliance.submitted
            - compliance.approved
            - compliance.rejected
            - compliance.requires_intervention
            - deposit.detected
            - deposit.settled
            - deposit.failed
            - deposit.requires_intervention
            - deposit.reversed
            - kyc.session_created
            - kyc.updated
            - partner_kyc.requires_information
            - partner_kyc.information_submitted
            - partner_kyc.ready_to_submit
            - partner_kyc.submitted
            - partner_kyc.approved
            - partner_kyc.rejected
            - offramp_partner_account.linked
            - smart_wallet.active
            - smart_wallet.deployment_failed
            - smart_wallet.requires_intervention
            - vault.policy_active
            - vault.failed
            - vault.funding_posted
            - vault.funding_requires_intervention
            - vault.yield_supply_settled
            - vault.yield_supply_failed
            - payment.created
            - payment.requires_action
            - payment.processing
            - payment.accepted
            - payment.refund_pending
            - payment.partially_refunded
            - payment.refunded
            - payment.succeeded
            - payment.failed
            - payment.cancelled
            - payment.expired
            - payment.requires_intervention
            - payment.duplicate_received
            - payment.late_received
            - payment.settlement_returned
        recommendedEvents:
          type: array
          items:
            type: string
            description: >-
              Extensible partner webhook event name. Currently emitted public
              values: account.created, account.updated, bank_funding.completed,
              bank_funding.failed, compliance.action_required,
              compliance.submitted, compliance.approved, compliance.rejected,
              compliance.requires_intervention, deposit.detected,
              deposit.settled, deposit.failed, deposit.requires_intervention,
              deposit.reversed, kyc.session_created, kyc.updated,
              partner_kyc.requires_information,
              partner_kyc.information_submitted, partner_kyc.ready_to_submit,
              partner_kyc.submitted, partner_kyc.approved, partner_kyc.rejected,
              offramp_partner_account.linked, smart_wallet.active,
              smart_wallet.deployment_failed,
              smart_wallet.requires_intervention, vault.policy_active,
              vault.failed, vault.funding_posted,
              vault.funding_requires_intervention, vault.yield_supply_settled,
              vault.yield_supply_failed, payment.created,
              payment.requires_action, payment.processing, payment.accepted,
              payment.refund_pending, payment.partially_refunded,
              payment.refunded, payment.succeeded, payment.failed,
              payment.cancelled, payment.expired, payment.requires_intervention,
              payment.duplicate_received, payment.late_received,
              payment.settlement_returned. `payment.requires_intervention`
              reports an operational condition: inspect the Payment's
              operationalState and operationalReasonCode without treating it as
              a replacement for the financial status.
            x-known-values:
              - account.created
              - account.updated
              - bank_funding.completed
              - bank_funding.failed
              - compliance.action_required
              - compliance.submitted
              - compliance.approved
              - compliance.rejected
              - compliance.requires_intervention
              - deposit.detected
              - deposit.settled
              - deposit.failed
              - deposit.requires_intervention
              - deposit.reversed
              - kyc.session_created
              - kyc.updated
              - partner_kyc.requires_information
              - partner_kyc.information_submitted
              - partner_kyc.ready_to_submit
              - partner_kyc.submitted
              - partner_kyc.approved
              - partner_kyc.rejected
              - offramp_partner_account.linked
              - smart_wallet.active
              - smart_wallet.deployment_failed
              - smart_wallet.requires_intervention
              - vault.policy_active
              - vault.failed
              - vault.funding_posted
              - vault.funding_requires_intervention
              - vault.yield_supply_settled
              - vault.yield_supply_failed
              - payment.created
              - payment.requires_action
              - payment.processing
              - payment.accepted
              - payment.refund_pending
              - payment.partially_refunded
              - payment.refunded
              - payment.succeeded
              - payment.failed
              - payment.cancelled
              - payment.expired
              - payment.requires_intervention
              - payment.duplicate_received
              - payment.late_received
              - payment.settlement_returned
          example:
            - account.created
            - account.updated
            - bank_funding.completed
            - bank_funding.failed
            - compliance.action_required
            - compliance.approved
            - compliance.rejected
            - compliance.requires_intervention
            - deposit.detected
            - deposit.settled
            - deposit.reversed
            - deposit.requires_intervention
            - payment.processing
            - payment.accepted
            - payment.refund_pending
            - payment.partially_refunded
            - payment.refunded
            - payment.succeeded
            - payment.failed
            - payment.cancelled
            - payment.expired
            - payment.requires_intervention
            - payment.duplicate_received
            - payment.late_received
            - payment.settlement_returned
        eventGroups:
          type: array
          items:
            $ref: '#/components/schemas/WebhookEventGroup'
          example:
            - id: accounts
              label: Accounts
              events:
                - account.created
                - account.updated
            - id: deposits
              label: Deposits
              events:
                - deposit.detected
                - deposit.settled
                - deposit.requires_intervention
                - deposit.reversed
                - deposit.failed
            - id: bank_funding
              label: Bank funding
              events:
                - bank_funding.completed
                - bank_funding.failed
            - id: payments
              label: Payments
              events:
                - payment.created
                - payment.requires_action
                - payment.processing
                - payment.accepted
                - payment.refund_pending
                - payment.partially_refunded
                - payment.refunded
                - payment.succeeded
                - payment.failed
                - payment.cancelled
                - payment.expired
                - payment.requires_intervention
                - payment.duplicate_received
                - payment.late_received
                - payment.settlement_returned
            - id: kyc
              label: KYC
              events:
                - kyc.session_created
                - kyc.updated
                - partner_kyc.requires_information
                - partner_kyc.information_submitted
                - partner_kyc.ready_to_submit
                - partner_kyc.submitted
                - partner_kyc.approved
                - partner_kyc.rejected
                - offramp_partner_account.linked
            - id: compliance
              label: Compliance
              events:
                - compliance.action_required
                - compliance.submitted
                - compliance.approved
                - compliance.rejected
                - compliance.requires_intervention
            - id: vaults
              label: Vaults
              events:
                - vault.policy_active
                - vault.failed
                - vault.funding_posted
                - vault.funding_requires_intervention
                - vault.yield_supply_settled
                - vault.yield_supply_failed
            - id: smart_wallets
              label: Smart Wallets
              events:
                - smart_wallet.active
                - smart_wallet.deployment_failed
                - smart_wallet.requires_intervention
        signatures:
          type: object
          additionalProperties: false
          required:
            - header
            - timestampHeader
            - deliveryHeader
            - eventHeader
            - scheme
            - signedPayload
          properties:
            header:
              type: string
              example: x-stableyard-signature
            timestampHeader:
              type: string
              example: x-stableyard-timestamp
            deliveryHeader:
              type: string
              example: x-stableyard-delivery
            eventHeader:
              type: string
              example: x-stableyard-event
            scheme:
              type: string
              example: hmac-sha256
            signedPayload:
              type: string
              example: <timestamp>.<deliveryId>.<eventId>.<rawBody>
        deliveryPolicy:
          type: object
          additionalProperties: false
          required:
            - guarantee
            - retryableStatuses
            - maxAttempts
            - localPrivateDestinationsAllowed
            - dedupe
          properties:
            guarantee:
              type: string
              const: at_least_once
            retryableStatuses:
              type: array
              items:
                type: integer
              example:
                - 408
                - 425
                - 429
                - 500
                - 502
                - 503
                - 504
            maxAttempts:
              type: integer
              minimum: 1
              example: 3
            localPrivateDestinationsAllowed:
              type: boolean
              example: false
            dedupe:
              type: object
              additionalProperties: false
              required:
                - deliveryRetryHeader
                - eventHeader
                - resourceStrategy
              properties:
                deliveryRetryHeader:
                  type: string
                  const: x-stableyard-delivery
                eventHeader:
                  type: string
                  const: x-stableyard-event-id
                resourceStrategy:
                  type: string
                  example: >-
                    Use the event name plus the public resource id in the
                    payload, such as depositId or paymentId, for business-level
                    idempotency.
    VaultCapability:
      type: object
      additionalProperties: false
      required:
        - entitled
        - credentialAllowed
        - operational
        - available
        - disabledReason
        - scope
        - runtime
        - ownershipModes
        - managedApproval
        - spendLimit
        - yieldProviders
        - tokens
        - resourceVersion
      properties:
        entitled:
          type: boolean
        credentialAllowed:
          type: boolean
        operational:
          type: boolean
        available:
          type: boolean
        scope:
          type: string
          const: v2:vaults
        runtime:
          type: string
          enum:
            - enabled
            - disabled
            - unavailable
        disabledReason:
          type:
            - string
            - 'null'
          enum:
            - not_entitled
            - credential_not_allowed
            - runtime_not_configured
            - null
        ownershipModes:
          type: object
          additionalProperties: false
          required:
            - external
            - stableyard
          properties:
            external:
              type: boolean
              description: External owner or partner multisig signs policy updates.
            stableyard:
              type: boolean
              description: Stableyard-managed Safe mode is enabled for this app.
        managedApproval:
          type: object
          additionalProperties: false
          required:
            - method
            - ready
            - disabledReason
          properties:
            method:
              type: string
              const: email_otp
            ready:
              type: boolean
              description: >-
                True when transactional email is configured for managed-vault
                policy approval.
            disabledReason:
              type:
                - string
                - 'null'
              enum:
                - missing_scope
                - runtime_disabled
                - configuration_error
                - email_module_unavailable
                - email_not_configured
                - null
        spendLimit:
          oneOf:
            - title: Configured spend limit
              type: object
              additionalProperties: false
              required:
                - defaultAmountAtomic
                - maxAmountAtomic
                - currency
                - decimals
                - period
              properties:
                defaultAmountAtomic:
                  type: string
                  example: '500000000'
                maxAmountAtomic:
                  type: string
                  example: '5000000000'
                currency:
                  type: string
                  const: USD
                decimals:
                  type: integer
                  const: 6
                period:
                  type: string
                  const: fixed_30_day
            - title: Spend limit unavailable
              type: 'null'
        yieldProviders:
          type: array
          items:
            type: string
            enum:
              - none
              - aave
              - morpho
        tokens:
          type: array
          items:
            type: object
            additionalProperties: false
            required:
              - symbol
              - chainId
              - tokenAddress
              - decimals
            properties:
              symbol:
                type: string
                enum:
                  - USDC
                  - USDT
              chainId:
                type: integer
                example: 42161
              tokenAddress:
                type: string
                example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
              decimals:
                type: integer
                const: 6
        resourceVersion:
          type:
            - integer
            - 'null'
          minimum: 1
    WebhookEventGroup:
      type: object
      additionalProperties: false
      required:
        - id
        - label
        - events
      properties:
        id:
          type: string
          example: payments
        label:
          type: string
          example: Payments
        events:
          type: array
          items:
            type: string
            description: >-
              Extensible partner webhook event name. Currently emitted public
              values: account.created, account.updated, bank_funding.completed,
              bank_funding.failed, compliance.action_required,
              compliance.submitted, compliance.approved, compliance.rejected,
              compliance.requires_intervention, deposit.detected,
              deposit.settled, deposit.failed, deposit.requires_intervention,
              deposit.reversed, kyc.session_created, kyc.updated,
              partner_kyc.requires_information,
              partner_kyc.information_submitted, partner_kyc.ready_to_submit,
              partner_kyc.submitted, partner_kyc.approved, partner_kyc.rejected,
              offramp_partner_account.linked, smart_wallet.active,
              smart_wallet.deployment_failed,
              smart_wallet.requires_intervention, vault.policy_active,
              vault.failed, vault.funding_posted,
              vault.funding_requires_intervention, vault.yield_supply_settled,
              vault.yield_supply_failed, payment.created,
              payment.requires_action, payment.processing, payment.accepted,
              payment.refund_pending, payment.partially_refunded,
              payment.refunded, payment.succeeded, payment.failed,
              payment.cancelled, payment.expired, payment.requires_intervention,
              payment.duplicate_received, payment.late_received,
              payment.settlement_returned. `payment.requires_intervention`
              reports an operational condition: inspect the Payment's
              operationalState and operationalReasonCode without treating it as
              a replacement for the financial status.
            x-known-values:
              - account.created
              - account.updated
              - bank_funding.completed
              - bank_funding.failed
              - compliance.action_required
              - compliance.submitted
              - compliance.approved
              - compliance.rejected
              - compliance.requires_intervention
              - deposit.detected
              - deposit.settled
              - deposit.failed
              - deposit.requires_intervention
              - deposit.reversed
              - kyc.session_created
              - kyc.updated
              - partner_kyc.requires_information
              - partner_kyc.information_submitted
              - partner_kyc.ready_to_submit
              - partner_kyc.submitted
              - partner_kyc.approved
              - partner_kyc.rejected
              - offramp_partner_account.linked
              - smart_wallet.active
              - smart_wallet.deployment_failed
              - smart_wallet.requires_intervention
              - vault.policy_active
              - vault.failed
              - vault.funding_posted
              - vault.funding_requires_intervention
              - vault.yield_supply_settled
              - vault.yield_supply_failed
              - payment.created
              - payment.requires_action
              - payment.processing
              - payment.accepted
              - payment.refund_pending
              - payment.partially_refunded
              - payment.refunded
              - payment.succeeded
              - payment.failed
              - payment.cancelled
              - payment.expired
              - payment.requires_intervention
              - payment.duplicate_received
              - payment.late_received
              - payment.settlement_returned
          example:
            - payment.accepted
            - payment.succeeded
            - payment.requires_intervention
  responses:
    BadRequest:
      description: Bad request
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: BadRequest response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    Unauthorized:
      description: Unauthorized
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: Unauthorized response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    Forbidden:
      description: The app secret does not include the required scope
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: Forbidden response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    NotFound:
      description: Not found
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: NotFound response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    Conflict:
      description: Conflict
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: Conflict response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    FailedDependency:
      description: Required chain, network, or provider configuration is missing
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: FailedDependency response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
    TooManyRequests:
      description: >-
        Rate limit, payment-option limit, selection cooldown, or temporary abuse
        block
      headers:
        Stableyard-Version:
          description: >-
            Effective date-based Stableyard API contract version for this
            response.
          schema:
            type: string
            enum:
              - '2026-09-09'
        Retry-After:
          description: Seconds until the caller should retry.
          schema:
            type: integer
            minimum: 1
        RateLimit-Limit:
          description: Quota for the most constrained policy.
          schema:
            type: integer
            minimum: 1
        RateLimit-Remaining:
          description: Requests remaining in that policy window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Seconds until that policy window resets.
          schema:
            type: integer
            minimum: 0
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          examples:
            example:
              summary: TooManyRequests response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
  securitySchemes:
    partnerBasicAuth:
      type: http
      scheme: basic
      description: >-
        HTTP Basic auth. Username is the Stableyard app ID. Password is the app
        secret. The optional Stableyard-Version request header must match the
        environment pin.

````

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