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

# Create Transfer (beta)

> Create transfer to withdraw from wallet.
## Returns

A successful response returns an unconfirmed `Transfer` object with `source_amount`, `dest_amount` (the total the recipient will get), and `total_fees` (estimated maximum blockchain network fees charged by the blockchain for performing the transfer).



## OpenAPI

````yaml post /v1/transfers/create
openapi: 3.1.0
info:
  title: MoonKey Auth API
  description: >-
    Explore all the details of MoonKey Auth API. All of our APIs are RESTful and
    accept and return JSON.
  version: v1
servers:
  - url: https://api.moonkey.fun
    description: Production
    variables: {}
security:
  - Authorization: []
tags:
  - name: Users
    description: User management API
  - name: Magic Links
    description: ''
  - name: OTPs
    description: >-
      Send OTP (One-time passcodes) by all the supported delivery methods such
      as SMS, email.
  - name: OAuth
    description: ''
  - name: Wallets Login
    description: ''
  - name: Managed Wallets
    description: ''
  - name: Wallet Import
    description: >-
      Import existing wallets into the platform using secure HPKE encryption.
      This flow ensures raw entropy (seed phrases or private keys) never touches
      the server in plaintext.
externalDocs:
  url: ''
  description: ''
paths:
  /v1/transfers/create:
    parameters: []
    post:
      tags:
        - Transfers
      summary: Create Transfer (beta)
      description: >-
        Create transfer to withdraw from wallet.

        ## Returns


        A successful response returns an unconfirmed `Transfer` object with
        `source_amount`, `dest_amount` (the total the recipient will get), and
        `total_fees` (estimated maximum blockchain network fees charged by the
        blockchain for performing the transfer).
      operationId: CreateTransfer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTransferRequest'
            examples:
              CreateTransferReq:
                value:
                  dest_currency: solana
                  source: wallet_2DJJmE5IhB1M7I8jJ7JuyCiOtiC
                  dest: 3eiTLfEg8koaNgNMcmygm2nQ3APNNNWAyHGiooGwAziK
                  source_amount: '0.005'
                  notes: test
                  amount_includes_fees: true
                  user_id: user_2DJJeF75Jd2NIj6NyJMxEw0pXiA
        description: ''
      responses:
        '200':
          description: Create Transfer (beta) response
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  app_id:
                    type: string
                  user_id:
                    type: string
                  status:
                    type: string
                  source:
                    type: string
                  source_amount:
                    type: string
                  dest:
                    type: string
                  dest_amount:
                    type: string
                  dest_currency:
                    type: string
                  source_currency:
                    type: string
                  custom_id:
                    nullable: true
                  total_fees:
                    type: string
                  notes:
                    type: string
                  blockchain_tx_hash:
                    type: string
                  completed_at:
                    type: integer
                  cancelled_at:
                    type: integer
                  expires_at:
                    type: integer
                  created_at:
                    type: integer
                  updated_at:
                    type: integer
              examples:
                CreateTransferResp:
                  value:
                    id: transfer_2DJMdUNmkPDIFNVWiTNHTiBL0NB
                    app_id: app_25ldv51seNohTaYRsxdfoxMlAa2
                    user_id: user_2DJJeF75Jd2NIj6NyJMxEw0pXiA
                    status: unconfirmed
                    source: wallet_2DJJmE5IhB1M7I8jJ7JuyCiOtiC
                    source_amount: '0.005'
                    dest: 3eiTLfEg8koaNgNMcmygm2nQ3APNNNWAyHGiooGwAziK
                    dest_amount: '0.004995'
                    dest_currency: solana
                    source_currency: solana
                    custom_id: null
                    total_fees: '0.000005'
                    notes: test
                    blockchain_tx_hash: ''
                    completed_at: 0
                    cancelled_at: 0
                    expires_at: 1660412941
                    created_at: 1660412821
                    updated_at: 1660412821
components:
  schemas:
    CreateTransferRequest:
      type: object
      properties:
        dest_currency:
          type: string
          description: >-
            Token currency to send to the destination from the specified wallet.
            We will first check to make sure the wallet contains the amount you
            intend to send. However, since these are actual wallets, there could
            be a delay from the blockchain network that claims the balance is
            higher if multiple requests are being sent in a short window. This
            could result in the system thinking that it has enough balance but
            when the user confirms it, it will fail due to insufficient balance.
            Same issues can apply if a deposit is made to the wallet recently
            and not reflected in the blockchain yet. Possible values: bitcoin,
            ethereum, solana, AVAX, MATIC, DOT, XLM (more coming soon).


            * Wallet type `ethereum` is compatible with the following
            currencies: ethereum, MATIC, AVAX. 

            * Wallet type `solana` is compatible with the following currencies:
            solana. 

            * Wallet type `bitcoin` is compatible with the following currencies:
            bitcoin.

            * Wallet type `DOT` is compatible with the following currencies:
            DOT.

            * Wallet type `XLM` is compatible with the following currencies:
            XLM.
        source:
          type: string
          description: Unique wallet ID of the wallet to retrieve balance for.
        dest:
          type: string
          description: >-
            Any wallet address of the same wallet type as the source. For
            example, wallet_type of `ethereum` will only be compatible with a
            dest that is an ethereum address.


            Blockchain specific transfer behaviors:


            * XLM (Stellar) 


            Different from other protocol/chains, when transferring from MoonKey
            wallet to an external address, user is required to include a memo
            attached to the end of the address separated by `:`. For example:
            `GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37:3652667947`
            where the destination address is
            `GDQP2KPQGKIHYJGXNUIYOMHARUARCA7DJT5FO2FFOOKY3B2WSQHG4W37` and
            stellar memo is `3652667947`.
        source_amount:
          type: string
          description: >-
            `decimal in string` The total amount to transfer to the destination.
            If `amount_includes_fees` is set to true, we will auto calculate the
            fees to ensure the maximum amount withdrawn from the source is same
            as the specified amount. However, if `amount_includes_fees` is set
            to false, we will calculate the fees and auto increment the
            source_amount that gets returned in the response. We recommend that
            you show both the returned source_amount, dest_amount (how much
            recipient will receive), and also the total_fees to your user.
            Source amount stored with a transfer object will always be an all
            inclusive amount containing any fees calculated by the platform.
        notes:
          type: string
          description: Optional notes you want to store with this transaction.
        amount_includes_fees:
          type: boolean
          description: >-
            Determines of the source_amount includes fees. If set to false, we
            will increment the source_amount automatically.
        user_id:
          type: string
          description: >-
            Optional user ID to send in with the transfer, which will trigger a
            platform validation to ensure the source wallet is owned by the
            specified user to avoid usage error.
      required:
        - dest_currency
        - source
        - dest
        - source_amount
  securitySchemes:
    Authorization:
      type: http
      scheme: bearer
      description: >-
        Auth Platform API includes all the Auth related features. All Users,
        Phone Numbers, Emails, and OTPs are associated with an `App` as the
        container.


        Endpoints only accept App's `Secret API keys` other than certain
        endpoints that are used client side or via SDK that accept the
        `public_token`.


        ## Authentication using App Api Key


        ## Header:


        ```

        Authorization: Bearer {api_key}

        ```


        ## Authenticated Request


        ```curl

        curl \
          -X GET https://api.moonkey.fun/v1/auth/users/user_24wFP9pDa9YiMJLun94iKykoZs2 \
          -H "Authorization: Bearer sk_test_pRqweh3wvWmJAAVYv7Z0T5iPLzFM4ql0muoyQcjOxGeN3p1r"
        ```

````