> ## 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 on-ramp requirements

> Returns the USD funding-account rails enabled for this app and environment, and the UPA's connected wallets on provider-verified destination chains with their supported assets. Call this before rendering the creation form. The current delivery allowlist is Arbitrum One USDC in production and Arbitrum Sepolia USDC in staging/sandbox; read supportedDestinations and destinations for this environment rather than using the general network catalog. Discovery and bank-account issuance have no payment amount; routing still checks app entitlements, market access, and the active provider program's bank_onramp grant. Missing routes, access, or eligible destinations return available: false with a reason. Unexpected storage or routing errors return the normal HTTP error response and must not be treated as missing configuration. Creation separately requires an active account-level compliance relationship and rejects unverified destination chain/asset pairs with payment_method_not_supported. An advertised destination does not establish live production certification.

Discover enabled USD funding rails and eligible wallets before issuing an on-ramp account. Read `supportedDestinations` and `destinations` for this environment. Missing configuration returns `available: false`; unexpected storage or routing failures use normal HTTP errors. Issuance separately requires account-level `bank_onramp` approval.

`recipientOnFile` reports whether a verified recipient name and address can be reused. When true, omit `recipientType`, `recipientName` and `recipientAddress` together at issuance. Otherwise, supply all three. This flag does not grant bank access or replace capability approval.


## OpenAPI

````yaml openapi.json GET /v2/accounts/{accountId}/onramp-bank-account-requirements
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/accounts/{accountId}/onramp-bank-account-requirements:
    get:
      tags:
        - Accounts
      summary: Discover on-ramp bank account options
      description: >-
        Returns the USD funding-account rails enabled for this app and
        environment, and the UPA's connected wallets on provider-verified
        destination chains with their supported assets. Call this before
        rendering the creation form. The current delivery allowlist is Arbitrum
        One USDC in production and Arbitrum Sepolia USDC in staging/sandbox;
        read supportedDestinations and destinations for this environment rather
        than using the general network catalog. Discovery and bank-account
        issuance have no payment amount; routing still checks app entitlements,
        market access, and the active provider program's bank_onramp grant.
        Missing routes, access, or eligible destinations return available: false
        with a reason. Unexpected storage or routing errors return the normal
        HTTP error response and must not be treated as missing configuration.
        Creation separately requires an active account-level compliance
        relationship and rejects unverified destination chain/asset pairs with
        payment_method_not_supported. An advertised destination does not
        establish live production certification.
      operationId: getOnrampBankAccountRequirements
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: string
            example: acct_123
          description: Canonical account id returned by the Accounts API.
        - 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: On-ramp bank account requirements
          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/OnrampBankAccountRequirements'
              examples:
                example:
                  summary: Discover on-ramp bank account options 200 response
                  value:
                    accountId: acct_123
                    recipientOnFile: true
                    available: true
                    unavailableReason: null
                    supportedDestinations:
                      - chainId: 421614
                        networkName: Arbitrum Sepolia
                        assetCodes:
                          - USDC
                    recipientTypes:
                      - individual
                    rails:
                      - rail: ach
                        country: US
                        currency: USD
                    destinations:
                      - connectedWalletId: wallet_123
                        chainId: 421614
                        address: '0x1111111111111111111111111111111111111111'
                        label: null
                        assetCodes:
                          - USDC
        '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: []
components:
  schemas:
    OnrampBankAccountRequirements:
      type: object
      required:
        - accountId
        - available
        - recipientOnFile
        - unavailableReason
        - recipientTypes
        - rails
        - supportedDestinations
        - destinations
      properties:
        accountId:
          type: string
          example: acct_123
        recipientOnFile:
          type: boolean
          description: >-
            True when a verified name and address is on file, so the funding
            account can be created without recipient details.
        available:
          type: boolean
          description: >-
            True only when at least one rail has an operational route and at
            least one connected wallet is on a verified destination.
        unavailableReason:
          type:
            - string
            - 'null'
          enum:
            - onramp_route_not_configured
            - no_eligible_destination
            - null
          description: Why the flow cannot be started, or null when it can.
        supportedDestinations:
          type: array
          description: >-
            Provider-verified delivery chains and assets, including when this
            UPA has no eligible wallet. This catalog does not grant rail access
            or account-level compliance approval.
          items:
            type: object
            additionalProperties: false
            required:
              - chainId
              - networkName
              - assetCodes
            properties:
              chainId:
                type: integer
                minimum: 1
                example: 421614
              networkName:
                type: string
                example: Arbitrum Sepolia
              assetCodes:
                type: array
                minItems: 1
                items:
                  type: string
                  enum:
                    - USDC
                    - USDT
        recipientTypes:
          type: array
          items:
            type: string
            enum:
              - individual
              - business
        rails:
          type: array
          description: >-
            Rails with an operational provider route in this environment. A
            route may exist for one rail and not another.
          items:
            type: object
            required:
              - rail
              - country
              - currency
            properties:
              rail:
                type: string
                enum:
                  - ach
                  - fedwire
                  - fednow
              country:
                type: string
                example: US
              currency:
                type: string
                example: USD
        destinations:
          type: array
          description: >-
            Connected wallets on a provider-verified destination chain, with the
            asset codes verified for that chain.
          items:
            type: object
            required:
              - connectedWalletId
              - chainId
              - address
              - label
              - assetCodes
            properties:
              connectedWalletId:
                type: string
                pattern: ^wallet_[A-Za-z0-9_-]{3,59}$
              chainId:
                type: integer
                minimum: 1
                example: 421614
              address:
                type: string
              label:
                type:
                  - string
                  - 'null'
              assetCodes:
                type: array
                minItems: 1
                items:
                  type: string
                  enum:
                    - USDC
                    - USDT
    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: {}
  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.