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

# Send Crypto To An External Address

> Initiates a crypto WITHDRAWAL transaction to an external blockchain address for the authenticated user.

The `address_to` field must be a valid address for the given `currency` and `network`.

**Whitelisted contacts only:** The destination address must be a previously whitelisted crypto contact of the user. Use `POST /contacts/` to create and whitelist a crypto contact before calling this endpoint.

**How to obtain the required values:**
- `gateway_data.network`: use the `GET /currency-networks/` endpoint. Use the `code` field of the desired network (e.g. `"bitcoin"`, `"ethereum"`, `"polygon"`).
- `network_fee`: use the `GET /currency-networks/` endpoint. Use the `network_fee` field of the chosen network.

---

**Authorization**

- Requires a valid API key.



## OpenAPI

````yaml post /wallet/transactions/crypto/withdrawal/
openapi: 3.0.0
info:
  title: Ripio Gateway
  description: Ripio API - Services documentation.
  version: 0.1.0
  x-logo:
    url: https://cwstatic.nyc3.digitaloceanspaces.com/1996/bitcointrade.png
servers:
  - url: https://api.ripio.com
    description: Production environment
security: []
paths:
  /wallet/transactions/crypto/withdrawal/:
    post:
      tags:
        - Ripio Wallet
      summary: transactions - Send crypto to an external address
      description: >-
        Initiates a crypto WITHDRAWAL transaction to an external blockchain
        address for the authenticated user.


        The `address_to` field must be a valid address for the given `currency`
        and `network`.


        **Whitelisted contacts only:** The destination address must be a
        previously whitelisted crypto contact of the user. Use `POST /contacts/`
        to create and whitelist a crypto contact before calling this endpoint.


        **How to obtain the required values:**

        - `gateway_data.network`: use the `GET /currency-networks/` endpoint.
        Use the `code` field of the desired network (e.g. `"bitcoin"`,
        `"ethereum"`, `"polygon"`).

        - `network_fee`: use the `GET /currency-networks/` endpoint. Use the
        `network_fee` field of the chosen network.


        ---


        **Authorization**


        - Requires a valid API key.
      parameters:
        - in: header
          name: authorization
          required: true
          description: The API key as a string.
          schema:
            type: string
        - in: header
          name: signature
          required: true
          description: >-
            See the [Generating
            Signature](/static/api/authentication#generating-signature) section
            for more details.
          schema:
            type: string
        - in: header
          name: timestamp
          required: true
          description: >-
            A timestamp in milliseconds. See the [Timestamp
            Security](/static/api/authentication#timestamp-security) section for
            more details.
          schema:
            type: number
        - in: header
          name: timstamp-tolerance
          required: false
          description: >-
            An additional, non-required parameter, that you can send to specify
            the number of milliseconds after the timestamp for the request to be
            valid. See the [Timestamp
            Security](/static/api/authentication#timestamp-security) section for
            more details.
          schema:
            type: number
      requestBody:
        content:
          application/json:
            schema:
              properties:
                amount:
                  description: Amount to send as a decimal string.
                  type: string
                  example: '123.32'
                currency:
                  description: Crypto currency ticker to send.
                  type: string
                  example: USDT
                address_to:
                  description: Destination blockchain address.
                  type: string
                  example: '0x1234567890123456789012345678901234567890'
                network_fee:
                  description: >-
                    Network fee as a decimal string. Must be ≥ 0. Obtain the
                    recommended value from the `network_fee` field in `GET
                    /currency-networks/`.
                  type: string
                  example: '0.01'
                gateway_data:
                  description: Gateway-specific data for the crypto send.
                  properties:
                    network:
                      description: >-
                        Blockchain network code. Must match the `code` field
                        returned by `GET /currency-networks/` (e.g. `"bitcoin"`,
                        `"ethereum"`, `"polygon"`). This is NOT the currency
                        ticker.
                      type: string
                      example: plasma
                    memo_id:
                      description: >-
                        Optional memo/tag required by some networks (e.g. Ripple
                        requires a numeric memo). Only needed when the network
                        supports memos.
                      type: string
                      example: '123456789'
                  required:
                    - network
                  type: object
                source:
                  description: >-
                    Optional field to indicate funds come from wallet or ripio
                    trade (default is wallet)
                  type: string
                  example: trade
              required:
                - amount
                - currency
                - address_to
                - network_fee
                - gateway_data
              type: object
            examples:
              send_usdt_plasma:
                summary: Send USDT via Plasma network
                value:
                  amount: '4.980176'
                  currency: USDT
                  address_to: '0x1234567890123456789012345678901234567890'
                  network_fee: '0.01'
                  gateway_data:
                    network: plasma
              send_btc:
                summary: Send BTC via Bitcoin network with Trade balance
                value:
                  amount: '0.001'
                  currency: BTC
                  address_to: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                  network_fee: '0.00005'
                  gateway_data:
                    network: bitcoin
                  source: trade
              send_eth:
                summary: Send ETH via Ethereum network
                value:
                  amount: '0.01'
                  currency: ETH
                  address_to: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
                  network_fee: '0.0005'
                  gateway_data:
                    network: ethereum
              send_usdt_polygon:
                summary: Send USDT via Polygon network
                value:
                  amount: '10.00'
                  currency: USDT
                  address_to: '0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe'
                  network_fee: '0.001'
                  gateway_data:
                    network: polygon
              send_xrp_with_memo:
                summary: Send XRP via Ripple network (with memo)
                value:
                  amount: '5.00'
                  currency: XRP
                  address_to: rN7n3473SaZBCG4dFL75SaZBCG4dFL75
                  network_fee: '0.00001'
                  gateway_data:
                    network: ripple
                    memo_id: '123456789'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                description: Send transaction created successfully.
                properties:
                  error_code:
                    type: string
                    example: null
                  message:
                    type: string
                    example: null
                  data:
                    description: >-
                      Transaction object returned by the transactions list,
                      detail and creation endpoints (`GET /transactions/`, `GET
                      /transactions/{id}/`, and the 201 responses of every
                      `/transactions/{rail}/{action}/` endpoint). All three
                      surfaces share this exact shape.
                    properties:
                      id:
                        description: >-
                          Unique transaction identifier (source: `pk`). Same
                          value returned by list, detail and creation endpoints.
                        type: integer
                        example: 12345
                      external_id:
                        description: >-
                          External provider reference for this transaction, when
                          applicable.
                        type: string
                        example: null
                      transaction_type:
                        description: Canonical public transaction type.
                        type: string
                        example: withdrawal
                      rail:
                        description: Canonical rail. `null` for `swap`, which has no rail.
                        type: string
                        example: bank
                      status:
                        description: >-
                          Transaction status. `WTG`=waiting, `WTR`=waiting
                          receipt, `PEN`=pending, `PMA`=pending manual approval,
                          `PRO`=processing, `PAP`=partially paid,
                          `COM`=completed, `CAN`=cancelled, `EXP`=expired,
                          `ERR`=error, `REF`=refunded, `REJ`=rejected,
                          `HOLD`=hold, `SUS`=suspended.
                        type: string
                        example: PEN
                      gateway_details:
                        description: >-
                          Extra gateway-specific detail. For `rail=crypto` this
                          is the blockchain network. For `rail=ripio` transfers
                          (`deposit`/`withdrawal`) this is the literal string
                          `"ripio_tag"`. `null` for `swap` (a conversion, not a
                          transfer) and for `bank`/`pix`.
                        type: string
                        example: null
                      transaction_hash:
                        description: >-
                          Blockchain transaction hash, when applicable (crypto
                          transactions).
                        type: string
                        example: null
                      from_currency:
                        description: Currency ticker being debited/converted from.
                        type: string
                        example: ARS
                      to_currency:
                        description: >-
                          Currency ticker being credited/converted to. Equal to
                          `from_currency` for transfers (deposit/withdrawal);
                          different for `swap`.
                        type: string
                        example: ARS
                      fiat_currency:
                        description: >-
                          Fiat currency used to express `amount_fiat`,
                          regardless of `from_currency`/`to_currency`.
                        type: string
                        example: ARS
                      fee_currency:
                        description: >-
                          Currency in which the fee is charged. `null` when no
                          fee applies.
                        type: string
                        example: ARS
                      fee:
                        description: >-
                          Fee amount as a decimal string, in `fee_currency`.
                          `null` when no fee applies.
                        type: string
                        example: '0.00'
                      fee_fiat:
                        description: >-
                          Fee amount expressed in `fiat_currency`, as a decimal
                          string. `null` when no fee applies.
                        type: string
                        example: '0.00'
                      rate:
                        description: >-
                          Exchange rate applied between `from_currency` and
                          `to_currency`, as a decimal string.
                        type: string
                        example: '1'
                      rate_usd:
                        description: >-
                          Exchange rate applied against USD, as a decimal
                          string.
                        type: string
                        example: '1050.00'
                      amount_from:
                        description: >-
                          Amount debited in `from_currency`, as a decimal
                          string.
                        type: string
                        example: '5000.00'
                      amount_to:
                        description: Amount credited in `to_currency`, as a decimal string.
                        type: string
                        example: '5000.00'
                      amount_fiat:
                        description: >-
                          Amount expressed in `fiat_currency`, as a decimal
                          string.
                        type: string
                        example: '5000.00'
                      amount_usd:
                        description: Amount expressed in USD, as a decimal string.
                        type: string
                        example: '4.76'
                      origin:
                        description: >-
                          Origin address/account of the transaction, when
                          applicable.
                        type: string
                        example: null
                      destination:
                        description: >-
                          Destination address/account of the transaction, when
                          applicable (e.g. bank alias, blockchain address,
                          `ripio_tag` handle).
                        type: string
                        example: some.bank.alias
                      tax:
                        description: Tax amount as a decimal string, when applicable.
                        type: string
                        example: null
                      tax_currency:
                        description: Tax currency, when applicable.
                        type: string
                        example: null
                      created_at:
                        description: ISO 8601 timestamp when the transaction was created.
                        type: string
                        example: '2026-04-13T12:00:00Z'
                      updated_at:
                        description: ISO 8601 timestamp of the last update.
                        type: string
                        example: '2026-04-13T12:01:00Z'
                      extra_data:
                        description: >-
                          Allowlisted, per-key additional detail. Only the keys
                          `provider_reference`, `bank_account` and `bank_name`
                          may appear here — internal identifiers such as
                          `person_id`, `person_name`, `user_full_name`,
                          `user_id` or `user_uuid` are NEVER exposed, even if
                          the backend computes them internally. Empty object
                          (`{}`) when no allowlisted key applies.
                        properties:
                          provider_reference:
                            description: >-
                              External payment provider's reference for this
                              transaction.
                            type: string
                          bank_account:
                            description: >-
                              Bank account identifier/alias involved in the
                              transaction.
                            type: string
                          bank_name:
                            description: Name of the bank involved in the transaction.
                            type: string
                        type: object
                        example:
                          bank_account: some.bank.alias
                    required:
                      - id
                      - external_id
                      - transaction_type
                      - rail
                      - status
                      - gateway_details
                      - transaction_hash
                      - from_currency
                      - to_currency
                      - fiat_currency
                      - fee_currency
                      - fee
                      - fee_fiat
                      - rate
                      - rate_usd
                      - amount_from
                      - amount_to
                      - amount_fiat
                      - amount_usd
                      - origin
                      - destination
                      - tax
                      - tax_currency
                      - created_at
                      - updated_at
                      - extra_data
                    type: object
                required:
                  - error_code
                  - message
                  - data
                type: object
                example:
                  error_code: null
                  message: null
                  data:
                    id: 12346
                    external_id: null
                    transaction_type: withdrawal
                    rail: crypto
                    status: COM
                    gateway_details: bitcoin
                    transaction_hash: abc123txhash
                    from_currency: BTC
                    to_currency: BTC
                    fiat_currency: ARS
                    fee_currency: BTC
                    fee: '0.00005'
                    fee_fiat: '5.25'
                    rate: '1'
                    rate_usd: '65000.00'
                    amount_from: '0.001'
                    amount_to: '0.001'
                    amount_fiat: '65.00'
                    amount_usd: '65.00'
                    origin: null
                    destination: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                    tax: null
                    tax_currency: null
                    created_at: '2026-04-13T12:00:00Z'
                    updated_at: '2026-04-13T12:01:00Z'
                    extra_data: {}
                  timestamp: 1777674497268
        '400':
          description: ''
          content:
            application/json:
              schema:
                description: Bad Request — validation error in the request body.
                properties:
                  error_code:
                    type: string
                  message:
                    type: string
                  data:
                    type: object
                required:
                  - error_code
                  - message
                  - data
                type: object
                example:
                  error_code: ADR_0400
                  message: La dirección de destino no es válida. ADR_0400
                  data: null
                  timestamp: 1777674872826
        '401':
          description: Error response 401
        '403':
          description: ''
          content:
            application/json:
              schema:
                description: >-
                  Forbidden — insufficient JWT permissions or account not fully
                  operative.
                properties:
                  error_code:
                    type: string
                  message:
                    type: string
                  data:
                    type: object
                required:
                  - error_code
                  - message
                  - data
                type: object
                example:
                  error_code: ERR_0009
                  message: Forbidden
                  data: null
        '409':
          description: ''
          content:
            application/json:
              schema:
                description: Conflict — insufficient balance.
                properties:
                  error_code:
                    type: string
                  message:
                    type: string
                  data:
                    type: object
                required:
                  - error_code
                  - message
                  - data
                type: object
                example:
                  error_code: BAL_0400
                  message: >-
                    No tenés suficiente saldo disponible para realizar esta
                    operación. BAL_0400
                  data: null
                  timestamp: 1777674791342
        '429':
          description: Error response 429
        '503':
          description: Error response 503

````