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

> ## Agent Instructions
> Money amounts are always major-unit decimal strings (e.g. "1000.00"), never floats and never minor units, in every request, response, and webhook payload.
> Authentication is OAuth 2.0 client credentials: exchange the Client ID and Client Secret at the Token URL for a 24-hour JWT and cache it; do not request a token per call.
> Set a unique clientRef on every money-moving request; it is the idempotency key, and retries return the original resource.
> Quotes are single-use, intent-locked, and expire fast: always read expiresAt, consume the quote with the executor matching its intent, and re-quote on expiry instead of retrying.
> Prefer webhooks over polling for payout, order, and deposit status tracking.
> Use the sandbox (api.sandbox.zuba.com) with its deterministic magic values before touching production.

# Resolve a crypto deposit address

> Provision (or return the existing) on-chain deposit address for the requested network. A wallet is created only for the requested network. Send USDT/USDC to the returned address; the deposit is credited once it confirms on-chain. EVM addresses are valid across all EVM chains. Pass `Zuba-Account-Id` to allocate the address to a sub-account: deposits to it settle into that sub-account's balance, and each sub-account gets its own address.



## OpenAPI

````yaml /openapi.json post /v1/deposits/crypto-address
openapi: 3.0.0
info:
  contact: {}
  description: >-
    Comprehensive payment platform API supporting fiat and crypto payments,
    currency conversion, and compliance management
  title: Zuba Payment Platform API
  version: '1.0'
servers: []
security: []
tags:
  - description: Manage M2M API keys and credentials
    name: API Keys
  - description: Internal ledger accounts and transactions
    name: Ledger
  - description: Handle incoming payments and deposits
    name: Pay-ins
  - description: Manage payouts, beneficiaries, and SEPA transfers
    name: Payouts
  - description: Manage outbound webhook endpoints and deliveries
    name: Webhooks
paths:
  /v1/deposits/crypto-address:
    post:
      tags:
        - Pay-ins
      summary: Resolve a crypto deposit address
      description: >-
        Provision (or return the existing) on-chain deposit address for the
        requested network. A wallet is created only for the requested network.
        Send USDT/USDC to the returned address; the deposit is credited once it
        confirms on-chain. EVM addresses are valid across all EVM chains. Pass
        `Zuba-Account-Id` to allocate the address to a sub-account: deposits to
        it settle into that sub-account's balance, and each sub-account gets its
        own address.
      operationId: PayinController_resolveCryptoDepositAddress
      parameters:
        - description: >-
            Optional. Names an owned sub-account (UUID) to act on. Omit to act
            at the master (tenant) level. Naming an account this key does not
            own returns 403 not_account_owner.
          in: header
          name: Zuba-Account-Id
          required: false
          schema:
            format: uuid
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CryptoDepositAddressRequestDto'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CryptoDepositAddressResponseDto'
          description: Deposit address resolved.
        '400':
          description: Unsupported network or asset
        '401':
          description: Unauthorized - missing or invalid JWT token
        '403':
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/GenericErrorResponseDto'
                  - $ref: '#/components/schemas/PaymentsNotEnabledErrorResponseDto'
          description: >-
            Insufficient role, API key missing the create:deposits scope,
            not_account_owner (Zuba-Account-Id does not name an account you
            own), payments_not_enabled (the client is not payments-enabled), or
            METHOD_NOT_ENTITLED (no asset is enabled for you to deposit on the
            requested network, message carries the capability label).
        '409':
          description: >-
            Conflict: deposit address for this client/network/ref is inactive or
            archived and cannot be re-created. Contact support to resolve.
        '422':
          description: >-
            ACCOUNT_NOT_ACTIVE: the sub-account named by Zuba-Account-Id is
            owned but not active, so a deposit address cannot be allocated to
            it.
      security:
        - bearer: []
components:
  schemas:
    CryptoDepositAddressRequestDto:
      properties:
        clientRef:
          description: >-
            Optional client reference. Omit for your single default address on
            this network; pass distinct values (e.g. your end-customer id) to
            get distinct addresses.
          example: customer-1234
          maxLength: 100
          type: string
        network:
          description: >-
            Network to provision a deposit address on, as a CAIP-2 chain id
            (e.g. "eip155:1" for Ethereum mainnet).
          enum:
            - eip155:1
            - eip155:8453
            - solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
            - tron:mainnet
            - solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
          example: eip155:1
          type: string
      required:
        - network
      type: object
    CryptoDepositAddressResponseDto:
      properties:
        address:
          description: On-chain address to send funds to. For EVM, valid on all EVM chains.
          example: '0x1234567890abcdef1234567890abcdef12345678'
          type: string
        clientRef:
          description: Echoes the client reference supplied on the request, if any.
          example: customer-1234
          type: string
        network:
          enum:
            - eip155:1
            - eip155:8453
            - solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
            - tron:mainnet
            - solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
          example: eip155:1
          type: string
      required:
        - network
        - address
      type: object
    GenericErrorResponseDto:
      properties:
        error:
          description: Error type identifier
          example: BAD_REQUEST
          type: string
        message:
          description: Error message
          example: Bad Request
          type: string
        path:
          description: Request path that generated the error
          example: /v1/beneficiaries
          type: string
        statusCode:
          description: HTTP status code
          example: 400
          type: number
        timestamp:
          description: ISO timestamp when the error occurred
          example: '2024-01-15T10:30:00.000Z'
          type: string
      required:
        - statusCode
        - message
        - error
        - timestamp
        - path
      type: object
    PaymentsNotEnabledErrorResponseDto:
      properties:
        detail:
          description: Human-readable action required to enable payments
          example: >-
            Payments are not enabled. Complete merchant verification to activate
            payments.
          type: string
        error:
          description: Stable lowercase discriminator for new integrations
          example: payments_not_enabled
          type: string
        message:
          description: Stable legacy discriminator retained for v1 clients
          example: PAYMENTS_NOT_ENABLED
          type: string
        path:
          description: Request path that generated the error
          example: /v1/beneficiaries
          type: string
        statusCode:
          description: HTTP status code
          example: 400
          type: number
        timestamp:
          description: ISO timestamp when the error occurred
          example: '2024-01-15T10:30:00.000Z'
          type: string
      required:
        - statusCode
        - message
        - error
        - timestamp
        - path
        - detail
      type: object
  securitySchemes:
    bearer:
      bearerFormat: JWT
      description: Enter Auth0 JWT token
      scheme: bearer
      type: http

````