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

# POST /api/v1/transfers

> Records a confirmed deposit or withdrawal for attribution analytics. Called by
the web client (fire-and-forget) once a transfer confirms. This is an off-chain
record — the on-chain UserMovement cannot distinguish a Mesh/CEX deposit, a
bridge, and a direct wallet transfer. Generalizes the narrower /mesh/deposit
endpoint to all transfer methods and both directions.

Keyed on `account` so it joins to on-chain trading volume. Reliable for
attribution, NOT for accounting.



## OpenAPI

````yaml /api-reference/openapi.json post /api/v1/transfers
openapi: 3.1.0
info:
  title: Decibel Trading API
  description: >-
    RESTful API for Decibel. Provides read-only endpoints for market data,
    trading operations, positions, and analytics.
  contact:
    name: Decibel Team
    url: https://decibel.trade/
  license:
    name: ''
  version: 1.0.0
servers:
  - url: https://api.mainnet.aptoslabs.com/decibel
    description: Mainnet
  - url: https://api.testnet.aptoslabs.com/decibel
    description: Testnet
security:
  - bearerAuth: []
tags:
  - name: Market Data
    description: Market information and real-time data endpoints
  - name: User
    description: User information and account management
  - name: Account
    description: Account-specific endpoints and data
  - name: Trades
    description: Trading operations and history
  - name: Positions
    description: User position management
  - name: Orders
    description: Order management and history
  - name: TWAP
    description: Time-weighted average price orders
  - name: Bulk Orders
    description: Bulk order management
  - name: Vaults
    description: Vault operations and management
  - name: Analytics
    description: Analytics and performance metrics
  - name: Points
    description: Points-related account metrics
  - name: Trading Points
    description: Trading points endpoints
  - name: Trading Hz
    description: Trading Hz endpoints
  - name: Tier
    description: Tier information endpoints
  - name: Streaks
    description: User streak tracking endpoints
  - name: Predeposit Rewards
    description: Season 0 predeposit USDC rewards
  - name: Referrals
    description: Referral code management and tracking
  - name: Affiliates
    description: Affiliate code and earnings endpoints
  - name: Campaigns
    description: On-chain reward campaign endpoints
paths:
  /api/v1/transfers:
    post:
      tags:
        - Transfers
      summary: POST /api/v1/transfers
      description: >-
        Records a confirmed deposit or withdrawal for attribution analytics.
        Called by

        the web client (fire-and-forget) once a transfer confirms. This is an
        off-chain

        record — the on-chain UserMovement cannot distinguish a Mesh/CEX
        deposit, a

        bridge, and a direct wallet transfer. Generalizes the narrower
        /mesh/deposit

        endpoint to all transfer methods and both directions.


        Keyed on `account` so it joins to on-chain trading volume. Reliable for

        attribution, NOT for accounting.
      operationId: handle_record_transfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecordTransferRequestDto'
        required: true
      responses:
        '200':
          description: Transfer recorded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RecordTransferResponseDto'
        '400':
          description: Invalid request
        '500':
          description: Internal server error
components:
  schemas:
    RecordTransferRequestDto:
      type: object
      description: >-
        Request body for POST /api/v1/transfers.


        Posted by the web client after a deposit or withdrawal confirms, to
        capture

        attribution metadata (how/where the user funded) that the chain can't
        see.

        `transfer_id` is a client-minted UUID used as the dedup key.
      required:
        - account
        - transfer_id
        - direction
        - method
        - amount
      properties:
        account:
          type: string
        amount:
          type: number
          format: double
        asset:
          type:
            - string
            - 'null'
        broker:
          type:
            - string
            - 'null'
        direction:
          type: string
          description: '''deposit'' | ''withdraw'''
        method:
          type: string
          description: '''direct'' | ''mesh'' | ''bridge'''
        origin_chain:
          type:
            - string
            - 'null'
        transfer_id:
          type: string
        tx_hash:
          type:
            - string
            - 'null'
        wallet_provider:
          type:
            - string
            - 'null'
    RecordTransferResponseDto:
      type: object
      required:
        - success
      properties:
        success:
          type: boolean
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token from Geomi. See
        [Authentication](/api-reference/rest/authentication) for setup
        instructions.

````