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

# Withdraw to crypto address

> Withdraws funds from the specified `profile_id` to an external crypto address

## API Key Permissions

This endpoint requires the "transfer" permission. API key must belong to default profile.

## Travel Rule

The Travel Rule requires financial institutions, including custodial cryptocurrency exchanges, to share basic information about their customers when sending funds over a certain amount. VASPs that are part of the TRUST consortium use the [TRUST solution](https://www.coinbase.com/travelrule) when sharing PII to satisfy the Travel Rule data requirements.

For more details and examples, see [Travel Rule for Withdrawals](/exchange/travel-rule/withdrawals).


## OpenAPI

````yaml POST /withdrawals/crypto
openapi: 3.0.1
info:
  title: REST API
  description: >-
    # Welcome to Coinbase Exchange API

    ## Introduction

    The Exchange Trading APIs allow institutions to place orders and access
    account information. The following API pages detail various REST API
    endpoints we offer for lower-frequency trading and general requests.

    ## Getting Started

    To get started, please visit one of the following pages:

    - [Authentication](/exchange/docs/rest-auth)

    - [Rate Limits](/exchange/docs/rest-rate-limits)

    - [Pagination](/exchange/docs/rest-pagination)

    - [Status Codes](/exchange/docs/rest-requests)

    - [Quickstart](/exchange/docs/getting-started)

    ## FIX API

    - [FIX API reference](/exchange/docs/fix-connectivity)

    ## WebSocket API

    - [WebSocket API reference](/exchange/docs/websocket-overview)
  version: '1.0'
servers:
  - url: https://api.exchange.coinbase.com/
security:
  - ApiKeyAuthKey: []
    ApiKeyAuthPassphrase: []
    ApiKeyAuthSign: []
    ApiKeyAuthTimestamp: []
paths:
  /withdrawals/crypto:
    post:
      tags:
        - Transfers
      summary: Withdraw to crypto address
      description: >-
        Withdraws funds from the specified `profile_id` to an external crypto
        address
      operationId: ExchangeRESTAPI_PostWithdrawCrypto
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/apiPublicPostTransferCryptoRequest'
        required: true
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiTransferResult'
        '401':
          description: Unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiUnauthorizedResponse'
        '500':
          description: An unexpected error response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/apiErrorResponse'
components:
  schemas:
    apiPublicPostTransferCryptoRequest:
      required:
        - amount
        - crypto_address
        - currency
      type: object
      properties:
        profile_id:
          type: string
        amount:
          type: string
        currency:
          type: string
        crypto_address:
          type: string
        destination_tag:
          type: string
        no_destination_tag:
          type: boolean
        nonce:
          type: integer
          format: int32
        network:
          type: string
        add_network_fee_to_total:
          type: boolean
          description: >-
            A boolean flag to add the network fee on top of the amount. If this
            is blank, it will default to deducting the network fee from the
            amount.
        is_intermediary:
          type: boolean
          description: >-
            A boolean flag to create a transfer using Coinbase as an
            intermediary VASP. If `true`, `intermediary_jurisdiction` must be
            provided. `travel_rule_data` may be necessary if the jurisdiction
            requires data.
          default: false
        travel_rule_data:
          $ref: '#/components/schemas/apiTravelRulesData'
    apiTransferResult:
      type: object
      properties:
        id:
          type: string
        amount:
          type: string
        currency:
          type: string
        payout_at:
          type: string
        fee:
          type: string
        subtotal:
          type: string
    apiUnauthorizedResponse:
      type: object
      properties:
        message:
          title: message
          pattern: ^[a-zA-Z0-9]{1, 32}$
          type: string
      description: >-
        UnauthorizedResponse is the response message for endpoints in
        rest-gateway that requires authentication.

        This message is used to generate the Exchange REST API documentation
        using OpenAPI format.
    apiErrorResponse:
      type: object
      properties:
        message:
          title: message
          pattern: ^[a-zA-Z0-9]{1, 32}$
          type: string
    apiTravelRulesData:
      type: object
      properties:
        originator_name:
          type: string
          description: 'Required: name of the originator sending the funds'
        originator_natural_name:
          $ref: '#/components/schemas/apiTravelRulesNaturalName'
        originator_address:
          $ref: '#/components/schemas/apiStreetAddress'
        originator_telephone_number:
          type: string
        originator_account:
          type: string
          description: An account identifier for the originator.
        originator_account_location_country_code:
          type: string
          description: >-
            The country code (ISO 3166-1 alpha-2) of the originator's account
            location.
        originator_date_of_birth:
          $ref: '#/components/schemas/apiDate'
        originator_account_number:
          type: string
          description: 'Required: account number of the originator sending the funds.'
        transfer_purpose:
          type: string
          description: The purpose of the transfer.
        beneficiary_name:
          type: string
          description: 'Required: name of the beneficiary receiving the funds'
        beneficiary_address:
          $ref: '#/components/schemas/apiStreetAddress'
        beneficiary_telephone_number:
          type: string
          description: The telephone number of the beneficiary.
        beneficiary_account_location:
          type: string
          description: >-
            The country code (ISO 3166-1 alpha-2) of the beneficiary's account
            location.
        beneficiary_date_of_birth:
          $ref: '#/components/schemas/apiDate'
        beneficiary_financial_institution:
          type: string
          description: The beneficiary financial institution, e.g. Coinbase.
        is_self:
          type: boolean
          description: >-
            Required: whether the user claims the receiving wallet belongs to
            the originator
        originator_wallet_address:
          type: string
          description: The crypto address of the originator.
        originating_vasp_for_intermediary:
          $ref: '#/components/schemas/apiOriginatingVaspForIntermediary'
    apiTravelRulesNaturalName:
      type: object
      properties:
        first_name:
          type: string
        last_name:
          type: string
    apiStreetAddress:
      type: object
      properties:
        address_1:
          type: string
        address_2:
          type: string
        address_3:
          type: string
        city:
          type: string
        state:
          type: string
        country:
          type: string
          description: ISO 3166-1 alpha-2 country code.
        postal_code:
          type: string
    apiDate:
      type: object
      properties:
        year:
          type: integer
          description: Year of the date. Must be from 1 to 9999.
          format: int32
        month:
          type: integer
          description: Month of a year. Must be from 1 to 12.
          format: int32
        day:
          type: integer
          description: >-
            Day of a month. Must be from 1 to 31 and valid for the year and
            month.
          format: int32
    apiOriginatingVaspForIntermediary:
      type: object
      properties:
        attest_verified_wallet_ownership:
          type: boolean
          description: >-
            Required: user must attest that the wallet ownership was verified by
            the originating VASP
  securitySchemes:
    ApiKeyAuthKey:
      type: apiKey
      name: cb-access-key
      in: header
    ApiKeyAuthPassphrase:
      type: apiKey
      name: cb-access-passphrase
      in: header
    ApiKeyAuthSign:
      type: apiKey
      name: cb-access-sign
      in: header
    ApiKeyAuthTimestamp:
      type: apiKey
      name: cb-access-timestamp
      in: header

````