Changelog

v.1.16.0 - 2021-02-24

New Features

  • Tron (TRX) full business wallet support including deposit/withdrawal, sweep, multi address and single wallet generation.

  • XLM assets are now supported by the vault. They need to be connected to and XLM multi and activated per wallet.

v.1.15.0 - 2021-01-29

New Features

  • Bitcoin Vault (BTCV) full business wallet support including deposit/withdrawal, sweep, multi address and single wallet generation.

v.1.14.0 - 2021-01-21

Changes

  • ***Breaking change and not backward compatible*** /wallet/{wallet_name}/withdraw/simple

    endpoint is deprecated. Additionally /wallet/{wallet_name}/withdraw is using the same body format as /wallet/{wallet_name}/withdraw/simple starting from v1.14 release. It uses an object instead of array using the format below:

"data": {
"address": "string",
"amount": 0,
"meta": {}
},
"fee": "optimal"
}
  • /wallet/{wallet_name}/address is deprecated and instead /wallet/{wallet_name}/address/new should be used.

/wallet/{wallet_name}/withdraw/simpleand /wallet/{wallet_name}/address endpoint will no longer be supported after v1.15 so you need to change it as soon as possible to avoid any issues in future.

New Features

  • Ethereum wallet version 2. Version 2 Ethereum wallet allows you to create one omnibus wallet for all your Ethereum and tokens to be linked through one single wallet. This would allow managing and integrating new tokens easier. Addresses created in version 2 Ethereum wallet are linked through all the supported tokens so any deposit to an address created in this wallet would be recorded accordingly. In order to specify the currency for withdrawal and sweeping matters, user require to pass the currency field following the example below:

{
"data": {
"currency": "string", // new optional field
"address": "string",
"amount": 0,
"meta": {}
},
"fee": "optimal"
}

Version 2 wallet is only available for Ethereum and you need to request access for this since it is still in beta.

v.1.13.0 - 2020-11-06

New Features

  • Advance sweep

    • fee and min are added to POST /sweep to allow advance customization of sweeping. fee by default was always set to minimum fee on the chain and min was set to 0 previously. Now minimum amount can be specified with the sweeping fee in order to hand pick large transactions without them getting stuck in the blockchain due to low fees.

  • Alternative explorer support

    • Supporting more blockchain nodes to increase the accuracy of blockchain data received by Vault.

v.1.12.0 - 2020-09-15

Changes

  • API URL changes

    • The Vault API URL is changed from https://api.bitholla.com to https://api.vault.bitholla.com

    • Endpoint path /vault changed to /wallet for most endpoints (details listed below)

    • Vault will remain backward compatible and still support all previous endpoints. However, we strongly recommend that users migrate to our new endpoints to avoid future disruptions.

  • Endpoint changes

    • API URL https://api.bitholla.com => https://api.vault.bitholla.com

    • GET /vault/coins => GET /coins

    • GET /vault/:wallet_name/check => GET /wallet/:wallet_name/check

    • POST /vault/wallet => POST /wallet

    • DELETE /vault/wallet => DELETE /wallet

    • GET /vault/user/wallets => GET /user/wallets

    • GET /vault/:wallet_name/master => GET /wallet/:wallet_name/master

    • GET /vault/:wallet_name/address/new => GET /wallet/:wallet_name/address/new

    • GET /vault/:wallet_name/addresses => GET /wallet/:wallet_name/addresses

    • GET /vault/:wallet_name/balance => GET /wallet/:wallet_name/balance

    • GET /vault/:wallet_name/restart => GET /wallet/:wallet_name/restart

    • POST /vault/:wallet_name/withdraw => POST /wallet/:wallet_name/withdraw

    • POST /vault/:wallet_name/withdraw/simple => POST /wallet/:wallet_name/withdraw/simple

    • POST /vault/:wallet_name/withdraw/batch => POST /wallet/:wallet_name/withdraw/batch

    • PUT /vault/:wallet_name/sweep => PUT /wallet/:wallet_name/sweep

    • POST /vault/:wallet_name/sweep => POST /wallet/:wallet_name/sweep

    • GET /vault/:wallet_name/transactions => GET /wallet/:wallet_name/transactions

    • GET /vault/transaction/status => GET /wallet/transaction/status

    • PUT /vault/:wallet_name/webhook => PUT /wallet/:wallet_name/webhook

    • GET /vault/:wallet_name/webhook/test => GET /wallet/:wallet_name/webhook/test

v.1.11.0 - 2020-06-23

Changes

  • Webhook Test

    • Previous version required user to enter a mock transaction manually

    • The process is simplified to be more similar to the actual webhook flow

    • Endpoint changed from POST /vault/webhook/test to GET /vault/:wallet_name/webhook/test

    • Endpoint only requires the name of a user's wallet (:wallet_name)

    • Vault will send two mock transactions to the wallet's webhook URL separated by 10 seconds

      • First transaction will be pending

      • Second transaction will be completed

    • If the first request fails, this endpoint will throw a 400 error

  • Endpoint Changes

    • POST /vault/webhook/test => GET /vault/:wallet_name/webhook/test

v.1.10.0 - 2020-05-22

New Features

  • Can now filter transactions by transaction id

  • Manual/Auto sweeping wallets

    • Users can now configure wallets to sweep funds in sub-address automatically or manually using the endpoint PUT /vault/:wallet_name/sweep

      • Endpoint takes body with the boolean value auto_sweep

      • Wallets with auto_sweep set to true will be swept by vault every ~5 minutes

      • New wallets will have auto_sweep set to false by default

    • Users can now manually sweep their wallets to an address using the endpoint POST /vault/:wallet_name/sweep

      • Endpoint takes body with optional string value address

        • The funds will be swept to the given address

        • Passing an empty body will sweep the sub-address funds to the wallet's master address

  • Wallet restart

    • Users can now restart their wallets using the endpoint GET /vault/:wallet_name/restart

  • New endpoints:

    • PUT /vault/:wallet_name/sweep

    • POST /vault/:wallet_name/sweep

    • GET /vault/:wallet_name/restart

Changes

  • Endpoint changes

    • GET /vault/:wallet_name/transactions

      • Added txid query filter that filters result by transaction id

  • Wallet sweep functionality

    • Wallets were originally automatically swept by Vault

    • Users now have the option to manually sweep wallets

v.1.9.0 - 2020-03-27

New Features

  • XLM (Stellar) Support

  • XAUT (Tether Gold) Support

v.1.8.0 - 2020-01-28

New Features

  • USD Coin (USDC) Support

  • LEOcoin (LEO) Support

  • Delete Wallet

    • DELETE /vault/wallet

    • Users can now delete their own wallets.

    • Must pass the id of the wallet (wallet_id) in the request body

    • Example:

      {
      wallet_id: 1
      }

  • Simple Withdraw

    • POST /vault/{wallet_name}/withdraw/simple

    • Same functionality as POST /vault/{wallet_name}/withdraw but with better body data structure

    • Body includes data which is a single object with address, amount, and meta and an optional fee

    • Example:

      {
      data: {
      address: 'string',
      amount: 0.001,
      meta: {
      tag: 'string'
      }
      },
      fee: 'string'
      }
  • Batch Withdraw

    • POST /vault/{wallet_name}/withdraw/batch

    • Users can now perform multiple withdrawals to different addresses

    • Only works with BTC and BCH

    • Body includes data which is an array of objects with the individual withdrawal addresses and amounts and an optional fee.

    • Example:

      {
      data: [
      {
      address: 'string',
      amount: 0.001
      },
      ...
      ],
      fee: 'string'
      }
  • Endpoints added:

    • POST /vault/{wallet_name}/withdraw/simple

    • POST /vault/{wallet_name}/withdraw/batch

    • DELETE /vault/wallet

v.1.7.0 - 2019-12-16

New Features

  • Dai (DAI) Support

  • Maker (MKR) Support

v.1.6.0 - 2019-12-12

New Features

  • Monero (XMR) support

    • Only available for business wallets

    • Requires a special setup process

v.1.5.0 - 2019-11-25

New Features

  • BCH support now available

  • Single address support

    • Users can now choose between creating a single address wallet and multi address wallet. Single address wallets cannot generate new addresses.

  • Endpoints added

    • GET /vault/{wallet_name}/address/new

      • Same functionality as GET /vault/{wallet_name}/address

Changes

  • Endpoint changes

    • POST /vault/wallet

      • Added type field to body object that specifies the type of wallet being created. Can be one of single or multi. Default value is multi.

    • GET /vault/{wallet_name}/address

      • Changed to GET /vault/{wallet_name}/address/new

v.1.4.0 - 2019-11-13

New Features

  • Check wallet name availability

    • Users can now check to see if a wallet name is available by using GET /vault/{wallet_name}/check.

  • See available Vault coins

    • Users can now see all the available coins on Vault using GET /vault/coins.

  • Filter wallets by name

    • Users can now filter wallet queries by a name.

    • GET /vault/user/wallets now has a name query parameter. Vault will return all wallets with names that include the name value.

  • Endpoints added

    • GET /vault/{wallet_name}/check

    • GET /vault/coins

  • New coins are supported

    • HollaEx (HEX)

    • USD Tether (USDT)

Changes

  • Endpoint changes

    • GET /vault/user/wallets

      • Added a name query parameter

v.1.3.0 - 2019-10-31

New Features

  • Withdrawal fee customization

    • Users can now specify the transaction fee of a withdrawal.

    • In the meta tag of POST /vault/{wallet_name}/withdraw, there is an added field called fee where users can choose to add an optimal, low, or min

      • optimal: Recommended fee required to make the withdrawal

      • low: Low priority fee

      • min: Lowest possible fee

        • Example:

          "meta": {
          "fee": <optiomal, low, min>
          }
    • By default, Vault uses the optimal fee if users don't add a fee field

    • Fees can only be one of these three values and a fully custom fee is not allowed. The lower the fee, the longer it could take for it to be confirmed on the blockchain so we recommend using optimal fee.

  • Maximum withdrawal amount

    • Users can now choose to withdraw the total amount for a wallet

    • The amount field in the body of a POST /vault/{wallet_name}/withdraw request is now optional. To withdraw the total amount in the wallet, either omit the amount field or set it as 0.

  • Address filtering for transactions

    • Users can now filter transactions by their associated addresses.

    • GET /vault/{wallet_name}/transactions now takes an address query parameter. Set this parameter as an address to filter the request.

  • Rejected transactions

    • A is_rejected field has been added to transactions which indicates whether or not the transaction was rejected by the blockchain.

    • A rejected transaction is final and means that it has failed.

Changes

  • Endpoint changes

    • base path /v0 updated to /v1

      • /v0 is still supported but users should use /v1 going forward.

    • POST /vault/{wallet_name}/withdraw

      • Added a fee field in the meta tag where users can choose a withdrawal fee.

      • amount field is now optional and can be omitted or set to 0 to indicate a maximum withdrawal.

    • GET /vault/{wallet_name}/transactions

      • Added address query parameter that filters transactions by address.

v.1.2.0 - 2019-10-08

New Features

  • Vault now listens for both testnet and mainet transactions on the blockchain and sends notification for all coins in both environments

  • Ethereum ERC20 contracts are now connected and fully supported

  • Previously, XRP wallets with lower than 20xrp displayed an error for their balances. This has been fixed and the wallets now show 0 if they have less than 20xrp.

    • 20xrp is required to start an XRP wallet on the blockchain.

Changes

  • Endpoint Changes

    • /vault/transaction/status && /dash/vault/transaction/status

      • Added a new query parameter is_testnet. It is a boolean variable and specifies if the transaction being checked was on the testnet or not. The default value is false.

    • vault/webhook/test

      • Request body now has a is_testnet field that specifies if the transaction being checked was on the testnet or not. The default value is false.

1.1.0 - 2019-09-30

New Features

  • Added a new meta attribute to the body being sent withPOST /vault/:wallet_name/withdraw . It is an optional attribute that is an object where a user can send additional variables with a withdraw request. For example, XRP withdrawals require a tag value. Users can send this tag within the meta attribute.

    • Example:

      [
      {
      "address": "string",
      "amount": 0.1,
      "meta": {
      "tag": 901224830
      }
      }
      ]

1.0.0 - 2019-09-24

New Features

  • Master Wallet Address

    • Every wallet will have a master address that holds all funds deposited to either the master address directly or to any of its child addresses.

    • The lifecycle of a deposit made to a child address is as follows:

      • Deposit is made to the address

      • Deposit is waiting to be confirmed on the blockchain

      • Once confirmed, the funds will wait to be swept to the master wallet

    • All deposits made to child addresses will eventually be transferred to the master address through a process called a sweep. A sweep is when Vault transfers all blockchain-confirmed funds in child addresses to the master address.

    • Every sweep is considered an additional transaction and will have an associated transaction fee. Sweeps are performed every minute.

    • There will be rare cases in which a deposit made to an address is confirmed on the blockchain but not swept to the master address. In this case, the wallet owner should make a GET request to /vault/transaction/status with the currency, transaction_id, and address of the deposit as query parameters. Vault will check the blockchain to confirm the deposit and sweep the funds to the master address.

    • Learn more in the Advance Guide.

  • Endpoints Added

    • GET /vault/{wallet_name}/master

      • Get the master address for wallet_name

    • GET /vault/{wallet_name}/balance

      • Get the balance on the master address for wallet_name

    • GET /vault/transaction/status

      • Have Vault check the status of a transaction. If confirmed on the blockchain, Vault will sweep the funds to the master address. Query parameters currency, transaction_id, address required.

Changes

  • api-key and api-secret are now called key and secret, respectively. They are still required in the header for authorization purposes.

  • Endpoints Changed

    • POST /vault/{wallet_name}/withdraw

      • Originally required a JSON object within the body.

      • Now requires an array of JSON objects.

        • This endpoint will eventually allow multiple withdrawals to be made within a single blockchain transaction. For now, it only performs the first withdrawal JSON object in the array.

      • currency is no longer required in the JSON object.