> ## 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, application, and virtual-account status tracking.
> Use the sandbox (api.sandbox.zuba.com) with its deterministic magic values before touching production.

# List my wallets

> Returns the wallets of the request owner, newest first, on the shared cursor contract: your master account's own wallets, or the sub-account's named by `Zuba-Account-Id`. Addresses the platform minted to fund trade-desk orders are not listed.



## OpenAPI

````yaml /openapi.json get /v1/wallets
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: Per-country bank directories and bank-account enquiries
    name: Banks
  - 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/wallets:
    get:
      tags:
        - Wallets
      summary: List my wallets
      description: >-
        Returns the wallets of the request owner, newest first, on the shared
        cursor contract: your master account's own wallets, or the sub-account's
        named by `Zuba-Account-Id`. Addresses the platform minted to fund
        trade-desk orders are not listed.
      operationId: WalletsController_list
      parameters:
        - description: Opaque cursor returned by the previous page
          in: query
          name: cursor
          required: false
          schema:
            type: string
        - description: Number of items per page
          in: query
          name: limit
          required: false
          schema:
            default: 20
            maximum: 100
            minimum: 1
            type: number
        - description: Only wallets on this network (CAIP-2 chain id).
          in: query
          name: network
          required: false
          schema:
            enum:
              - eip155:1
              - eip155:8453
              - eip155:4217
              - eip155:42431
              - solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
              - tron:mainnet
              - solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
            example: eip155:1
            type: string
        - 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
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WalletListDto'
          description: Wallets for the request owner
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponseDto'
          description: Invalid pagination query
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericErrorResponseDto'
          description: Unauthorized
        '403':
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/GenericErrorResponseDto'
          description: >-
            Insufficient role, or not_account_owner (Zuba-Account-Id does not
            name an account you own).
      security:
        - bearer: []
components:
  schemas:
    WalletListDto:
      properties:
        data:
          items:
            $ref: '#/components/schemas/WalletResponseDto'
          type: array
        hasMore:
          description: Whether more items exist after this page
          example: true
          type: boolean
        nextCursor:
          description: >-
            Opaque cursor for the next page, or null when there are no more
            items
          example: >-
            eyJ2IjoxLCJjcmVhdGVkQXQiOiIyMDI2LTAxLTAxVDAwOjAwOjAwLjAwMFoiLCJpZCI6IjEyM2U0NTY3LWU4OWItNDJkMy1hNDU2LTQyNjYxNDE3NDAwMCJ9
          nullable: true
          type: string
        object:
          description: Stable resource-specific collection discriminator
          enum:
            - wallet.list
          example: wallet.list
          pattern: ^[a-z][a-z0-9_]*\.list$
          type: string
      required:
        - object
        - hasMore
        - nextCursor
        - data
      type: object
    ValidationErrorResponseDto:
      properties:
        details:
          description: Array of detailed validation errors
          example:
            - field: accounts.0.data
              message: crAccount must be exactly 10 digits for Nigerian accounts
          items:
            $ref: '#/components/schemas/ValidationErrorDetailDto'
          type: array
        error:
          description: Error type identifier
          example: BAD_REQUEST
          type: string
        message:
          description: >-
            The `details` messages joined with `; `, so a client that reads only
            this field still sees every failing field
          example: crAccount must be exactly 10 digits for Nigerian accounts
          type: string
        path:
          description: Request path that generated the error
          example: /v1/resource
          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
        - details
      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/resource
          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
    WalletResponseDto:
      properties:
        accountId:
          description: >-
            The sub-account that owns the wallet; deposits to it settle into
            that sub-account's balance. Absent when the wallet belongs to your
            master account.
          format: uuid
          type: string
        address:
          description: >-
            On-chain address to send funds to. Deposits are credited only on the
            wallet's own network: an EVM address is syntactically valid on every
            EVM chain, but a transfer to it on another chain is not credited.
          example: '0x1234567890abcdef1234567890abcdef12345678'
          type: string
        assets:
          description: >-
            Stablecoins your account is credited for when they arrive at this
            address. Any other token, and any listed token sent on another
            network, is not credited. Empty when nothing on this network is
            currently offered to your account, and empty on a wallet whose
            status is not `active`, which credits nothing.
          example:
            - USDT
            - USDC
          items:
            type: string
          type: array
        clientRef:
          description: The client reference the wallet was opened with, if any.
          example: customer-1234
          type: string
        createdAt:
          description: When the wallet was opened, ISO-8601.
          example: '2026-09-09T12:00:00.000Z'
          type: string
        id:
          description: Wallet id.
          example: 9b2f4c1e-3d7a-4e8b-9f01-2c3d4e5f6a7b
          format: uuid
          type: string
        network:
          enum:
            - eip155:1
            - eip155:8453
            - eip155:4217
            - eip155:42431
            - solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp
            - tron:mainnet
            - solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1
          example: eip155:1
          type: string
        status:
          description: >-
            `active`: receives deposits. `inactive`: frozen; deposits are held
            for review and the wallet cannot be re-requested. Contact support.
          enum:
            - active
            - inactive
          example: active
          type: string
      required:
        - id
        - network
        - address
        - assets
        - status
        - createdAt
      type: object
    ValidationErrorDetailDto:
      properties:
        code:
          description: >-
            Stable machine-readable code for client-side branching. Present on
            structural-validation failures of the recipient (e.g.
            MISSING_BENEFICIARY_NAME, INVALID_IBAN, BENEFICIARY_INCOMPLETE) and
            of the sender (SENDER_INFO_INCOMPLETE, SENDER_INFO_INVALID); absent
            on generic DTO validation errors.
          example: MISSING_BENEFICIARY_NAME
          type: string
        field:
          description: >-
            The field path that failed validation. A bank account format rule
            reports the account object it checked (e.g. accounts.0.data) and
            names each failing field in its message.
          example: accounts.0.data
          type: string
        message:
          description: Human-readable error message describing the validation failure
          example: crAccount must be exactly 10 digits for Nigerian accounts
          type: string
      required:
        - field
        - message
      type: object
  securitySchemes:
    bearer:
      bearerFormat: JWT
      description: Enter Auth0 JWT token
      scheme: bearer
      type: http

````