Changelog
- Solana Integration.
- Techcoin Integration.
- Batch withdrawal are now available for DOGE, LTC and other Bitcoin based coins.
- Cardano full wallet integration for deposit and withdrawal.
- Tron blockchain scanning improvements resulting in fewer out of sync scenarios for the node and Tron's blockchain.
- Dynamic coin container path support.
- Trumpcoin support and integration.
- Walli can now be switched off for improved performance.
- Rejected transactions on the blockchain are now handled properly.
- Electroneum support
- Doge and LTC zmq integrated for immediate feedback on deposits
- IP whitelist can be set for tokens to restrict requests to while listed addresses using
PUT /user/token
{
"ip": "198.168.0.1,1.2.3.4" // whitelist ips are separated using comma
"token_id": "id of the token to update"
}
- Checks token balance before withdrawal. In case the wallet does not have enough balance, it now rejects the transaction without posting it to the blockchain.
- Users can now specify which currency to get balance for in a wallet.
GET /wallet/:wallet_name/balance
now accepts a query parametercurrency
. Passingcurrency
will return balance for currency in a wallet. If not given, will return balance for default wallet currency.- Examples
- Passing
currency
asxht
will returnxht
balance ineth
wallet - Not passing
currency
will returneth
balance ineth
wallet
- Check status now supports blockchain
network
din query parameter to handle status check of transaction on specific blockchain network. - Endpoint Changes:
GET /wallet/:wallet_name/balance
- Now accepts a query parameter
currency
that specifies which currency to get balance for.
- Binance Smart Chain support for BNB and all smart contracts using BEP-20 standard.
- Dogecoin integration and full support.
- Litecoin integration and full support.
- TRC20 and BEP20 support.
- Assets can be transferred on different chains by specifying
network
- 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.
- Bitcoin Vault (BTCV) full business wallet support including deposit/withdrawal, sweep, multi address and single wallet generation.
- ***Breaking change and not backward compatible***
/wallet/{wallet_name}/withdraw/simple
endpoint is deprecated. Additionally/wallet/{wallet_name}/withdraw
is using the samebody
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/simple
and /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.- 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.
- Advance sweep
fee
andmin
are added toPOST
/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.
- API URL changes
- The Vault API URL is changed from
https://api.bitholla.com
tohttps://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
- 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
toGET /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
- 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 totrue
will be swept by vault every ~5 minutes - New wallets will have
auto_sweep
set tofalse
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
- 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
- XLM (Stellar) Support
- XAUT (Tether Gold) Support
- 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
andBCH
- Body includes
data
which is an array of objects with the individual withdrawal addresses and amounts and an optionalfee
. - 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
- Dai (DAI) Support
- Maker (MKR) Support
- Monero (XMR) support
- Only available for business wallets
- Requires a special setup process
- 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
- Endpoint changes
POST /vault/wallet
- Added
type
field to body object that specifies the type of wallet being created. Can be one ofsingle
ormulti
. Default value ismulti
.
GET /vault/{wallet_name}/address
- Changed to
GET /vault/{wallet_name}/address/new
- 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 aname
query parameter. Vault will return all wallets with names that include thename
value.
- Endpoints added
GET /vault/{wallet_name}/check
GET /vault/coins
- New coins are supported
- HollaEx (HEX)
- USD Tether (USDT)
- Endpoint changes
GET /vault/user/wallets
- Added a
name
query parameter
- Withdrawal fee customization
- Users can now specify the transaction fee of a withdrawal.
- In the
meta
tag ofPOST /vault/{wallet_name}/withdraw
, there is an added field calledfee
where users can choose to add anoptimal
,low
, ormin
optimal
: Recommended fee required to make the withdrawallow
: Low priority feemin
: Lowest possible fee- Example:"meta": {"fee": <optiomal, low, min>}
- By default, Vault uses the
optimal
fee if users don't add afee
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 aPOST /vault/{wallet_name}/withdraw
request is now optional. To withdraw the total amount in the wallet, either omit theamount
field or set it as0
.
- Address filtering for transactions
- Users can now filter transactions by their associated addresses.
GET /vault/{wallet_name}/transactions
now takes anaddress
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.
- 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 themeta
tag where users can choose a withdrawal fee. amount
field is now optional and can be omitted or set to0
to indicate a maximum withdrawal.
GET /vault/{wallet_name}/transactions
- Added
address
query parameter that filters transactions by address.
- 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.
- Endpoint Changes
/vault/transaction/status && /dash/vault/transaction/status
- Added a new query parameter
is_testnet
. It is aboolean
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.
- 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 atag
value. Users can send thistag
within themeta
attribute.- Example:[{"address": "string","amount": 0.1,"meta": {"tag": 901224830}}]
- 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 thecurrency
,transaction_id
, andaddress
of the deposit as query parameters. Vault will check the blockchain to confirm the deposit and sweep the funds to the master address.
- 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.
api-key
andapi-secret
are now calledkey
andsecret
, 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.
Last modified 1yr ago