> ## 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.

# Check a deposit transaction for the client account

> Verify a transaction against a receive address owned by the client token's account.

Submits a transaction hash or signature for independent chain verification against a receive address owned by the client token's account. Pass `tokenAddress` or `logIndex` to disambiguate multiple matching transfers.

Known check failures return HTTP `200` with `isTransferDone: false` and an `error` object, so read the body, not just the status code.


## OpenAPI

````yaml frontend-openapi.json POST /v2/client/me/deposit-addresses/check
openapi: 3.1.0
info:
  title: Stableyard Interfaces & SDK API
  version: 2.0.0-staging
  x-stableyard-api-version: '2026-09-09'
  x-stableyard-supported-api-versions:
    - '2026-09-09'
  summary: >-
    Advanced browser API used by Stableyard Checkout, Add Money, and
    account-bound interfaces.
  description: >

    These endpoints power Stableyard's official interface SDKs, hosted checkout,
    Add Money, and advanced custom browser integrations.


    Most partners should use `@stableyard/react` or `@stableyard/sdk` instead of
    calling these routes directly. A browser must never receive an app secret.
    Public checkout uses a Payment-scoped client secret, while account-bound
    experiences use a short-lived client bearer token created by the partner
    backend.
  x-stableyard-documentation-surface: frontend
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: Client API
    description: >-
      Account-bound browser and mobile routes authenticated with a short-lived
      client bearer token. App secrets never enter client code.
  - 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: Payments
    description: >-
      Create escrow-first payments, issue partner-authenticated send
      instructions or executions, power public checkout, and reconcile
      collection through final account settlement.
paths:
  /v2/client/me/deposit-addresses/check:
    post:
      tags:
        - Client API
      summary: Check my deposit transaction
      description: >-
        Submits a transaction identifier for independent chain verification
        against a receive address owned by the client token's account.
      operationId: checkClientDepositTransaction
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckDepositTransactionRequest'
            examples:
              example:
                summary: Check my deposit transaction request
                value:
                  transactionHash: >-
                    0xabc1230000000000000000000000000000000000000000000000000000000000
                  chainId: 42161
                  depositAddress: '0x1111111111111111111111111111111111111111'
                  tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                  logIndex: 0
      responses:
        '200':
          description: Deposit check result
          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/DepositCheckResponse'
              examples:
                example:
                  summary: Check my deposit transaction 200 response
                  value:
                    checked: true
                    detected: true
                    isTransferDone: true
                    verified: true
                    supported: true
                    chainId: 42161
                    depositAddress: '0x1111111111111111111111111111111111111111'
                    transactionHash: >-
                      0xabc1230000000000000000000000000000000000000000000000000000000000
                    hashExists: false
                    depositAddressExists: true
                    addressMatched: true
                    reason: unsupported_deposit_transaction
                    minimumTransactionAmountAtomic: '10000'
                    minimumTransactionAmount: '0.0001'
                    error:
                      code: not_found
                      message: transaction not found
                    idempotent: false
                    ignored: false
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
        - clientBearerAuth: []
components:
  schemas:
    CheckDepositTransactionRequest:
      type: object
      additionalProperties: false
      required:
        - transactionHash
        - chainId
        - depositAddress
      properties:
        transactionHash:
          type: string
          maxLength: 256
          description: Observed transaction hash or signature.
          example: '0xabc1230000000000000000000000000000000000000000000000000000000000'
        chainId:
          type: integer
          enum:
            - 42161
            - 1
            - 8453
            - 137
            - 56
            - 43114
            - 4663
            - 4217
            - 10103
            - 10002
            - 728126428
            - 10001
          example: 42161
          description: >-
            Supported deposit chain IDs: Arbitrum=42161, Ethereum=1, Base=8453,
            Polygon=137, BNB Smart Chain=56, Avalanche=43114, Robinhood
            Chain=4663, Tempo=4217, Solana=10103, Movement=10002,
            Tron=728126428, Bitcoin=10001.
        depositAddress:
          type: string
          minLength: 8
          maxLength: 256
          description: The account receive address that should have received the transfer.
          example: '0x1111111111111111111111111111111111111111'
        tokenAddress:
          type: string
          maxLength: 128
          description: >-
            Optional token identifier used to disambiguate multiple matching
            transfers. Use the configured contract/mint, the EVM zero address
            for ETH/POL/BNB, native:btc for BTC, or the Solana System Program
            address for SOL.
          example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        logIndex:
          type: integer
          minimum: 0
          description: >-
            Optional token log/account index used to disambiguate token
            transfers. Omit it for native EVM and SOL transfers.
    DepositCheckResponse:
      type: object
      required:
        - checked
        - detected
      properties:
        checked:
          type: boolean
          example: true
        detected:
          type: boolean
          example: true
        isTransferDone:
          type: boolean
          example: true
          description: >-
            True only when the hash is verified as a supported deposit transfer
            to the submitted active deposit address and passes the chain
            minimum. Known check failures return false with HTTP 200.
        verified:
          type: boolean
          example: true
          description: >-
            True when a transaction hash was verified through a configured chain
            RPC.
        supported:
          type: boolean
          example: true
          description: >-
            False when the transaction exists but is not a supported configured
            token/native deposit transfer, is unconfirmed, or does not pass the
            chain minimum.
        chainId:
          type: integer
          enum:
            - 42161
            - 1
            - 8453
            - 137
            - 56
            - 43114
            - 4663
            - 4217
            - 10103
            - 10002
            - 728126428
            - 10001
          example: 42161
          description: >-
            Supported deposit chain IDs: Arbitrum=42161, Ethereum=1, Base=8453,
            Polygon=137, BNB Smart Chain=56, Avalanche=43114, Robinhood
            Chain=4663, Tempo=4217, Solana=10103, Movement=10002,
            Tron=728126428, Bitcoin=10001.
        depositAddress:
          type: string
          example: '0x1111111111111111111111111111111111111111'
        transactionHash:
          type: string
          example: '0xabc1230000000000000000000000000000000000000000000000000000000000'
        hashExists:
          type: boolean
          example: false
          description: >-
            False when the hash is malformed or the chain RPC reports the
            transaction was not found.
        depositAddressExists:
          type: boolean
          example: true
          description: >-
            False when the submitted deposit address is not active for the
            account and chain.
        addressMatched:
          type: boolean
          example: true
          description: >-
            For non-deposit transaction-hash checks, indicates whether the chain
            transaction appeared to touch the submitted deposit address.
        reason:
          type: string
          example: unsupported_deposit_transaction
        minimumTransactionAmountAtomic:
          type: string
          example: '10000'
          description: >-
            Minimum threshold in the asset's atomic units when a verified
            deposit is ignored for being too small.
        minimumTransactionAmount:
          type: string
          example: '0.0001'
          description: >-
            Human-readable minimum threshold when a verified deposit is ignored
            for being too small.
        error:
          type: object
          additionalProperties: false
          description: >-
            Known validation, not-found, conflict, or provider-check error
            returned with HTTP 200 for transaction-hash checks. Provider/RPC
            details are not exposed.
          properties:
            code:
              type: string
              example: not_found
            message:
              type: string
              example: transaction not found
        idempotent:
          type: boolean
          example: false
        ignored:
          type: boolean
          example: false
          description: >-
            True when Stableyard recorded the observed deposit but did not
            create a transaction. Reusable USDC/USDT/USDG deposits are accepted
            at 0.5 tokens and above except Tron USDT, whose inclusive minimum is
            10 USDT. Native BTC has an inclusive minimum of 0.0001 BTC (10,000
            sats). Movement THBT is accepted at 16.5 or above. Polygon JPYC is
            accepted at or above the configured POLYGON_JPYC_MIN_AMOUNT (100 by
            default). Other native assets retain their documented strict minimum
            rules.
        deposit:
          anyOf:
            - $ref: '#/components/schemas/Deposit'
            - type: 'null'
        transaction:
          anyOf:
            - $ref: '#/components/schemas/Transaction'
            - type: 'null'
    Deposit:
      type: object
      required:
        - id
        - accountId
        - depositAddressId
        - status
        - amount
        - sourceTransfer
        - fees
        - settlement
        - settlementProfileSnapshot
      properties:
        id:
          type: string
          example: deposit_123
        accountId:
          type: string
          example: acct_123
        depositAddressId:
          type: string
          example: deposit_addr_123
        status:
          type: string
          enum:
            - detected
            - confirming
            - settling
            - settled
            - reversed
            - failed
            - ignored
            - requires_intervention
        amount:
          $ref: '#/components/schemas/Money'
        sourceTransfer:
          type: object
          additionalProperties: false
          required:
            - amount
            - txHash
            - logIndex
          properties:
            amount:
              $ref: '#/components/schemas/Money'
            txHash:
              type:
                - string
                - 'null'
            logIndex:
              type:
                - integer
                - 'null'
            fromAddress:
              type:
                - string
                - 'null'
              description: >-
                On-chain sender address that funded this deposit, when captured
                from the source chain.
        fees:
          type: object
          additionalProperties: false
          required:
            - partnerAmountAtomic
            - platformAmountAtomic
            - networkAmountAtomic
            - setupAmountAtomic
            - denomination
            - basis
            - actualReceivedAmountAtomic
          properties:
            partnerAmountAtomic:
              type: string
              pattern: ^[0-9]+$
            platformAmountAtomic:
              type: string
              pattern: ^[0-9]+$
            networkAmountAtomic:
              type: string
              pattern: ^[0-9]+$
            setupAmountAtomic:
              type: string
              pattern: ^[0-9]+$
              description: >-
                Frozen one-time Tron address setup fee for the claim-owning v4
                deposit; zero otherwise.
            denomination:
              $ref: '#/components/schemas/Asset'
            basis:
              type: string
              enum:
                - source_amount
                - verified_destination_receipt
              description: >-
                `source_amount` is returned before final settlement evidence
                exists. `verified_destination_receipt` is returned after v3
                escrow settlement has independently verified the received
                destination amount.
            actualReceivedAmountAtomic:
              type:
                - string
                - 'null'
              pattern: ^[0-9]+$
        netSettlementAmount:
          anyOf:
            - $ref: '#/components/schemas/Money'
            - type: 'null'
        settlement:
          type: object
          additionalProperties: false
          required:
            - status
            - txHash
            - settledAt
          properties:
            status:
              type: string
              enum:
                - pending
                - settled
                - failed
                - requires_intervention
            txHash:
              type:
                - string
                - 'null'
            settledAt:
              type:
                - string
                - 'null'
              format: date-time
            reasonCode:
              type: string
              description: >-
                Stable machine-readable reason when settlement requires manual
                review, including verified Routing refund failures such as
                routing_refund_proof_missing, routing_refund_proof_mismatch, or
                routing_refund_retry_exhausted. Raw provider errors are never
                exposed.
        settlementProfileSnapshot:
          type: object
          additionalProperties: true
          description: >-
            Immutable settlement profile snapshot captured when the deposit was
            detected.
        txHash:
          type:
            - string
            - 'null'
          example: 0xabc123...
        observedAt:
          type:
            - string
            - 'null'
          format: date-time
        settledAt:
          type:
            - string
            - 'null'
          format: date-time
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    Transaction:
      type: object
      required:
        - id
        - accountId
        - status
        - amount
        - description
        - sourceType
        - sourceId
      properties:
        offrampDetails:
          $ref: '#/components/schemas/OfframpTransactionDetails'
        id:
          type: string
          example: txn_123
        accountId:
          type: string
          example: acct_123
          description: Account whose perspective this response is for.
        senderAccountId:
          type: string
          example: acct_sender123
          description: Present when the perspective account is the sender.
        receiverAccountId:
          type: string
          example: acct_receiver123
          description: Present when the perspective account is the receiver.
        direction:
          type: string
          enum:
            - sent
            - received
            - self
            - related
        perspective:
          $ref: '#/components/schemas/TransactionPerspective'
        status:
          type: string
          enum:
            - pending
            - completed
            - posted
            - failed
            - reversed
        amount:
          allOf:
            - $ref: '#/components/schemas/Money'
          description: >-
            Amount for the requested account's perspective. For a Send, the
            sender sees the gross source debit and the recipient sees the net
            destination amount actually settled.
        description:
          type: string
          example: USDC payment
        sourceType:
          type: string
          enum:
            - payment
            - deposit
            - vault_funding
            - fee
            - refund
            - adjustment
        sourceId:
          type: string
          example: payment_123
        paymentId:
          type: string
          pattern: ^payment_[A-Za-z0-9_-]+$
          description: Canonical Payment associated with this financial leg.
        financialLegKind:
          type: string
          enum:
            - collection
            - send_execution
            - settlement
            - fee_payout
            - refund
            - adjustment
        sourceTransfer:
          type: object
          additionalProperties: false
          required:
            - amount
          properties:
            amount:
              $ref: '#/components/schemas/Money'
            txHash:
              type: string
              description: >-
                Source-chain transaction hash when the financial leg originated
                from an on-chain transfer.
            logIndex:
              type: integer
              minimum: 0
              description: >-
                Source-chain event index when the transfer was detected from an
                indexed token event.
            fromAddress:
              type: string
              description: >-
                On-chain sender address that funded this financial leg, when
                captured from the source chain.
        settlement:
          type: object
          additionalProperties: false
          required:
            - amount
            - txHash
          properties:
            amount:
              $ref: '#/components/schemas/Money'
            txHash:
              type:
                - string
                - 'null'
    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: {}
    Money:
      type: object
      required:
        - asset
        - amount
      properties:
        asset:
          $ref: '#/components/schemas/Asset'
        amount:
          type: string
          description: Atomic units for the token asset.
          example: '1250000'
    Asset:
      type: object
      required:
        - chainId
        - tokenAddress
        - symbol
        - decimals
      properties:
        chainId:
          type: integer
          enum:
            - 42161
            - 1
            - 8453
            - 137
            - 56
            - 43114
            - 4663
            - 4217
            - 10103
            - 10002
            - 728126428
            - 10001
          description: >-
            Supported deposit chain IDs: Arbitrum=42161, Ethereum=1, Base=8453,
            Polygon=137, BNB Smart Chain=56, Avalanche=43114, Robinhood
            Chain=4663, Tempo=4217, Solana=10103, Movement=10002,
            Tron=728126428, Bitcoin=10001.
        tokenAddress:
          type: string
          description: >-
            Contract/mint address for tokens, the EVM zero address for native
            EVM assets, native for BTC, or the Solana System Program address for
            SOL.
          example: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
        symbol:
          type: string
          enum:
            - USDC
            - USDT
            - THBT
            - JPYC
            - USDG
            - BTC
            - ETH
            - POL
            - BNB
            - SOL
        decimals:
          type: integer
          enum:
            - 6
            - 8
            - 9
            - 18
        kind:
          type: string
          enum:
            - token
            - native
          description: >-
            Present on deposit-address supportedAssets entries to distinguish
            contract tokens from native gas assets.
    OfframpTransactionDetails:
      type: object
      additionalProperties: false
      description: >-
        Frozen off-ramp quote and recipient details. Bank account numbers are
        represented by their last four characters; unavailable recipient fields
        are null. Amounts are exact atomic strings and the exchange rate retains
        its direction.
      required:
        - version
        - country
        - destinationType
        - fiatAmount
        - fundingAmount
        - providerPrincipal
        - fees
        - exchangeRate
        - receiver
      properties:
        version:
          type: integer
          const: 1
        country:
          type: string
        destinationType:
          type: string
          enum:
            - external_qr
            - external_bank
            - bank_account
        fiatAmount:
          type: object
          additionalProperties: false
          required:
            - amountAtomic
            - assetCode
            - decimals
          properties:
            amountAtomic:
              type:
                - string
                - 'null'
              pattern: ^[0-9]+$
              description: >-
                Exact fiat amount scaled by the accompanying decimals
                (exact-input payout receipts can use six decimals), or null when
                unknown when this transaction snapshot was recorded (for
                example, an exact-input payout before provider completion). Null
                is not zero or proof of payout failure. Read the associated
                Payment for its current payout result.
            assetCode:
              type: string
            decimals:
              type: integer
        fundingAmount:
          oneOf:
            - $ref: '#/components/schemas/OfframpTransactionAmount'
            - type: 'null'
        providerPrincipal:
          oneOf:
            - $ref: '#/components/schemas/OfframpTransactionAmount'
            - type: 'null'
        fees:
          type: object
          additionalProperties: false
          required:
            - provider
            - platform
            - partner
          properties:
            provider:
              oneOf:
                - $ref: '#/components/schemas/OfframpTransactionAmount'
                - type: 'null'
            platform:
              oneOf:
                - $ref: '#/components/schemas/OfframpTransactionAmount'
                - type: 'null'
            partner:
              oneOf:
                - $ref: '#/components/schemas/OfframpTransactionAmount'
                - type: 'null'
        exchangeRate:
          oneOf:
            - type: object
              additionalProperties: false
              required:
                - rate
                - baseAssetCode
                - quoteAssetCode
              properties:
                rate:
                  type: string
                baseAssetCode:
                  type: string
                quoteAssetCode:
                  type: string
            - type: 'null'
        receiver:
          type: object
          additionalProperties: false
          required:
            - name
            - bankName
            - bankCode
            - accountNumberLast4
          properties:
            name:
              type:
                - string
                - 'null'
            bankName:
              type:
                - string
                - 'null'
            bankCode:
              type:
                - string
                - 'null'
            accountNumberLast4:
              type:
                - string
                - 'null'
    TransactionPerspective:
      type: object
      additionalProperties: false
      required:
        - accountId
        - direction
      properties:
        accountId:
          type: string
          example: acct_sender123
        direction:
          type: string
          enum:
            - sent
            - received
            - self
            - related
          description: >-
            Direction from the perspective of the account that requested or
            matched this transaction.
        counterpartyAccountId:
          type: string
          example: acct_receiver123
          description: Other Stableyard account on the transaction when known.
    OfframpTransactionAmount:
      type: object
      additionalProperties: false
      required:
        - amountAtomic
        - assetCode
        - decimals
        - chainId
        - tokenAddress
      properties:
        amountAtomic:
          type: string
          pattern: ^[0-9]+$
        assetCode:
          type: string
        decimals:
          type: integer
        chainId:
          type: integer
        tokenAddress:
          type: string
  responses:
    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
    UnprocessableEntity:
      description: The requested payment method or refund route is not supported
      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: UnprocessableEntity response
              value:
                error:
                  code: bad_request
                  message: The request is invalid
                  details: example
  securitySchemes:
    clientBearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Stableyard client access token
      description: >-
        Short-lived account-bound token returned by POST
        /v2/client/auth/exchange.

````

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