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

# Create deposit addresses

> Create or reuse a UPA's receive addresses on one or more live chains.

Send `chainIds` as an array after checking availability with [List deposit networks](/api-reference/deposit-addresses/list-deposit-networks). Addresses are created, or reused, for each requested chain, and the response lists the supported assets for each address.

If any requested chain is paused, the whole batch fails before any address is provisioned. `Idempotency-Key` is optional; reusing a key with different input returns a conflict.

See [Depositing funds](/payments/depositing-funds).


## OpenAPI

````yaml openapi.json POST /v2/accounts/{accountId}/deposit-addresses
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}/deposit-addresses:
    post:
      tags:
        - Deposit Addresses
      summary: Create deposit addresses
      description: >-
        Create or reuse receive addresses for one or more currently live chains.
        Send `chainIds` as an array after discovering availability through GET
        /v2/deposit-networks. The response lists the supported assets for each
        address. If any requested chain is paused, the entire batch fails before
        an address is provisioned.
      operationId: createDepositAddressByAccountId
      parameters:
        - name: accountId
          in: path
          required: true
          schema:
            type: string
            example: acct_123
          description: Canonical account id returned by the Accounts API.
        - name: Idempotency-Key
          in: header
          required: false
          schema:
            type: string
            minLength: 1
            maxLength: 128
            example: deposit-address-user-123
          description: >-
            Optional retry key for create/generate calls. Reusing the same key
            with different input returns a conflict.
        - 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.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateDepositAddressRequest'
            examples:
              example:
                summary: Create deposit addresses request
                value:
                  chainIds:
                    - 42161
                    - 8453
      responses:
        '200':
          description: Deposit addresses
          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/DepositAddressesResponse'
              examples:
                example:
                  summary: Create deposit addresses 200 response
                  value:
                    accountId: acct_123
                    depositAddresses:
                      - id: deposit_addr_123
                        accountId: acct_123
                        chainId: 42161
                        address: '0x1111111111111111111111111111111111111111'
                        supportedAssets:
                          - chainId: 42161
                            tokenAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831'
                            symbol: USDC
                            decimals: 6
                            kind: token
                        metadata:
                          networkCode: arbitrum
                          chainFamily: evm
                        status: active
                    nextCursor: cursor_123
        '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:
    GenerateDepositAddressRequest:
      type: object
      additionalProperties: false
      required:
        - chainIds
      properties:
        chainIds:
          type: array
          minItems: 1
          maxItems: 12
          uniqueItems: true
          description: >-
            One or more chain IDs. 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.
          example:
            - 42161
            - 8453
          items:
            type: integer
            enum:
              - 42161
              - 1
              - 8453
              - 137
              - 56
              - 43114
              - 4663
              - 4217
              - 10103
              - 10002
              - 728126428
              - 10001
    DepositAddressesResponse:
      type: object
      required:
        - accountId
        - depositAddresses
      properties:
        accountId:
          type: string
          example: acct_123
        depositAddresses:
          type: array
          items:
            $ref: '#/components/schemas/DepositAddress'
        nextCursor:
          type: string
          description: Pass this value as cursor to fetch the next page.
    DepositAddress:
      type: object
      description: >-
        A deposit address accepts every supported token on its network, so no
        single assetSymbol/tokenAddress is included.
      required:
        - id
        - accountId
        - chainId
        - address
        - supportedAssets
        - status
      properties:
        id:
          type: string
          example: deposit_addr_123
        accountId:
          type: string
          example: acct_123
        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.
        address:
          type: string
          example: '0x1111111111111111111111111111111111111111'
        supportedAssets:
          type: array
          description: >-
            Token and native assets accepted at this receive address on the
            requested chain.
          items:
            $ref: '#/components/schemas/Asset'
        metadata:
          type: object
          additionalProperties: false
          description: >-
            Safe network hints only. Provider, wallet-manager, asset-selection,
            and reuse internals are not exposed.
          properties:
            networkCode:
              type: string
              example: arbitrum
            chainFamily:
              type: string
              enum:
                - evm
                - tron
                - btc
                - solana
                - movement
        status:
          type: string
          enum:
            - active
            - disabled
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    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: {}
    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.
  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.