Withdraw Workflow

📘

Travel Rule

Bakkt adheres to FinCEN’s Travel Rule. For withdrawals equal to or exceeding $3,000, users are required to self-disclose information about the ownership of the destination wallet address. This includes if it is self-hosted, the recipient name, and the recipient VASP name. Transactions to self-hosted wallets are exempt from Travel Rule requirements.

Clients send requests to withdraw cryptocurrency from their investors' accounts to external wallets on the blockchain. See the following process to withdraw cryptocurrency from investor accounts.

  1. Begin by using the Retrieve Fee Estimates endpoint to get a fee estimate for the withdrawal. The fee estimate is valid for five minutes and determines the fee for processing and submitting the withdrawal to the blockchain.

  2. Bakkt has a Verify Wallet Address endpoint that will allow the end user to submit a wallet address and verify that the destination is valid. It is a best practice to use this endpoint prior to creating the Withdrawal Request. This endpoint will let the user know if the wallet is valid and has a requiredTag field that will also let the user know if a Tag will be required for sending to tag based chains (e.g. XRP). Unfortunately, the check cannot confirm if the tag is valid or not, only tells you if the address requires a tag.

  3. Execute the withdrawal using the Create a Withdrawal Request endpoint. Clients must use the previously retrieved fee estimate to initiate a cryptocurrency withdrawal from an investor's account to a wallet on the blockchain. The request must also contain the address of the wallet in which to deposit the cryptocurrency.

    1. Tag based chains will require the user to supply a tag in the withdrawal request. If required (see step 2), ensure that the request has a tag specified.
    2. If a withdrawal is equal to or exceeding $3,000:
      • Clients are required to inquire with the customer if the wallet is self-hosted; self hosted wallet transfers are exempt from the Travel rule.
      • If the wallet is not self-hosted, clients must collect:
        • The name of the wallet owner.
        • The name of the wallet’s custodian.
  4. After Bakkt processes the withdrawal, clients receive the transfer details via API or AWS SQS.

Cryptocurrency withdrawals are subject to a risk setting that limits the notional amount transferable to an external wallet at any given time. Each client has a default risk setting and can adjust it per account. For more information about risk settings, contact Bakkt Support at [email protected].

The withdrawal fee is fixed and independent of the cryptocurrency amount withdrawn. Clients can request a fee estimate for the entire cryptocurrency balance in an account using the Retrieve Fee Estimates endpoint. By subtracting the fee estimate from the total balance, clients can determine the maximum amount available for withdrawal. Bakkt allows for the estimate to slightly exceed the actual cryptocurrency amount specified in the Create a Withdrawal Request endpoint.