ChainUp Custody V2
Welcome to ChainUp Custody! Our platform leverages deep underlying wallet technology and a secure blockchain wallet architecture to provide powerful asset custody functions to our third-party partners through various API. With our assistance, our partners can focus on core business development while we ensure the safety and security of their assets.
With ChainUp Custody API, you can:
Submit transfers and receive real-time information on transfers;
Benefit from security checks for all transaction types and messages;
Establish a withdrawal policy with the co-managed wallet;
Manage your wallet and sub-wallet accounts, address book, and internet connection;
Using features such as anti-money laundering mechanisms.
All transfers made through our API are reflected in your transaction records, security policies, and reconciliation center, ensuring full transparency and accountability.
Overview
ChainUp Custody is a comprehensive set of digital asset custody services provided by ChainUp Group. We have served more than 300 clients for over the past 4 years, leveraging our extensive experience in digital asset custody and the development of 200+ coins. Our services include mainchain asset custody, node services, customized mainchain development, easy inclusion for new coins and tokens, co-managed wallets, asset management and many others.
Exchanges, Asset Management Platforms, and other Crypto Institutions can secure their digital assets efficiently and quickly with cloud hosting via API and SDK. At the same time, clients can carry out their asset management operations through our web-based user interface (custody.chainup.com), with numerous financial products available for client usage.
At present, ChainUp Custody has 500 over clients from various industries such as blockchain industry like exchanges, miners, OTC, lending etc and traditional industries like games, real estate, live broadcasting, e-commerce, supply chain and media, etc. Our benefits include zero transaction fees and instantaneous real-time transfer.
Vision
ChainUp Custody aims to build an open bank in the blockchain field by building a global financial clearing system across the main chain and relevant projects within a shared network which helps to reduce cost and improve asset utilization.
Access Guidelines
Follow the instructions below to access ChainUp Custody
For any questions, please contact your dedicated business manager or send email to custody@chainup.com for assistance.
Create Account
Download Custody Wallet
Method 1:Open the link in your mobile browser:https://custody.chainup.com/download
Method 2: scan the QR code for download:
Register Custody Account
Open the app and register a new account using email OR mobile phone number.
Complete Identity Verification
Please note that our authentication system only supports one identity and does not allow for replacement of that identity after authentication.
Complete identity verification and google authentication. (For security level 2, please kindly contact customer support for verification).
Build Enterprise wallet
Login
Open ChainUp Custody platform using any browser, scan the QR code using 【ChainUp Custody】APP to login.
Create a wallet
Enter the 【ChainUp Custody】 page and create a wallet.
Please fill in the name carefully because you are unable to change the name once the wallet has been created.
Add Currency
Before adding a currency, please contact the platform admin to add the main chain first. The corresponding token can only be used for free once the main chain currency has been added by the platform admin.
After adding the currency, enter the wallet and click “Currency Management” to search for the currency.
Go to the edit page and add the currency.
Obtain API information
- Create APIs (Currently only allows permission and support one set of API)
- The API creation is completed and the public key information is available now.
Development and Testing
API documentation integration with the system based on the platform’s capabilities and solutions.
Merchant signing
Formal signing
Support online and offline signing
Payment
Subscription payment for system, installation, and other costs. (Specific types of fees are subjected based on client’s contract)
Support
Online Assistance
Assist merchants with operations
Technical support
The platform provides 7* 24 technical support
Docking Solutions
To allow customers more convenient and quicker access to Custody service, our platform has a comprehensive set of docking solutions based on previous clients’ requirement.
The whole program is divided into four processes:
1.Obtain the deposit address
2.User deposit
3.User withdrawl
4.Financial reconciliation
Note: If the client’s project timeline is urgent, the necessary processes [obtaining the deposit address], [user deposit], [user withdrawal], and [financial reconciliation] can be developed in two weeks.
Obtain the deposit address
1)Customer registers with Custody system (email address is recommended)
2)After successful registration, the address can be obtained through the UID of the Custody system
Note: Obtaining the address in advance helps to ensure efficient address allocation after user registration; If the user registers and then obtains the address through the interface, it may fail due to reasons such as network issue, resulting in users’ inability to use the services.
User deposit
1)The user completes registration in their system;
2)When the user checks the currency deposit address on the user interface, the system will assign a currency address to the user;
3)Users send coins to the address;
4)The Custody system monitors and accounts for the transaction of coins in the blockchain address on behalf of the clients, and notifies the client actively or automatically obtaining it within the system.
5)After the system confirms the validity of the information for coin deposit, the coins will be credited into the user’s account;
6)The system notifies the user that the coins are successfully deposited.
Note: The asynchronous callback of teh Custody system will be triggered when each order is final, and it can be sent up to 5 times per day;
Timed task: a total of five callbacks
Notification time: 1s for the first time, 2min for the second time, 8min for the third time, 32min for the fourth time, 128min for the fifth time
Callback logic:
If the callback is successful, update the callback status;
If the callback fails, continue the callback and update the interval between the next callback;
When the callback fails five times, the callback is stopped
User withdrawal
1)The user initiates withdrawal in their system;
2)After the customer’s system has been approved, it will notify the Custody system;
3)The Custody system provides two withdrawal conformation to the customer system;
4)After the customer system confirms that the withdrawal information is valid, the Custody system verifies the withdrawal information, and then the payment is initiated;
5)The Custody system monitors the status of withdrawal orders, and actively notifies the client upon completion of withdrawal or actively acquires it by the customer system;
6)The customer system informs the user that the withdrawal is successful.
Financial reconciliation
1)Perform checks on accounts between the customer system and Custody system periodically (daily is recommended)
2)At midnight the the next day, the system retrieves all the deposits and withdrawals for the previous day as well as the aggregated orders and collection of the miners’ fees
3)The customer system’s orders are reconciled against those in the Custody system
4)If the order quantity, amount and status are correct, the reconciliation will be successful; Otherwise contact Custody support to resolve the issue
Note:
In the Custody system, there are three kinds of cost expenses in the tripartite system: collecting miners’ fees, extracting miners’ fees, and profit-sharing commission;
- Collection of Miners’ Fee: With each currency’s account type, after depositing the coins, the funds on the address will be collected to the hot wallet address and the blockchain network. Part of the main chain blockchain transaction will consume the miner fee and the cost of which will be borne by the client. The client can contact us if they would like this capital expenditure will be handled by us;
- Miner’s fee: Miner’s fee (in some currencies) shall be borne by the three parties when withdrawing coins to the address of non-ChainUp Custody and using the blockchain network. This part of capital expenditure can be viewed directly in the coin withdrawal order;
- Distribution fee: temporarily not charged.
Getting Started
Development Notes
Two pairs of public and private key functions (API mode)
The first pair of public and private keys: The developer shall generate a pair of public and private keys in advance when opening the asset management account. The public key (rsa_third_pub) is provided to the platform and the private key is kept by itself. The private key is the only proof for the third-party application to call the wallet service and shall not be disclosed to anyone. When the third party requests the wallet service, the private key is used to encrypt the request parameters. When the platform receives the request, the public key (rsa_third_pub) is used to decrypt the request data.
The second pair of public and private keys: After the developer opens the asset management account, the platform will provide the wallet public key (rsa_wallet_pub) to the developer. When the third-party application receives the response data or asynchronous notification of the wallet, it needs to use the public key to decrypt.
Why is it necessary to confirm the withdrawal twice (API method)
When the wallet service receives a request from a third-party application, in confirm that the request is a legitimate request from a third-party application, it will call the interface provided by the third-party to confirm. To a certain extent, this process can avoid the influence caused by the loss of the third party’s private key, and also provides an effective barrier for the security of the wallet service.
Domain name and API key (API mode)
Production domain name(test environment not supported): | https://openapi.hicoin.vip |
---|---|
app_id: | Please get it after creating the wallet |
rsa_wallet_pub: | Custody system public key; Please create the wallet and get it from the Custody system |
rsa_third_prv: | Client private key; Independent generation and preservation |
rsa_third_pub: | Client public key; Autonomous generation; Please create the wallet and configure it to the Custody system |
RSA public/private key generated address http://www.metools.info/code/c80.html
Recommended password length:2048
Recommended key format:PKCS#8
Description:
- Rsa_third_prv is a private key for third-party applications and is used primarily to encrypt request parameters. In a production environment, rsa_third_prv is generated by the developer and the corresponding public key is provided to the platform. To simplify the docking process for developers, a set of third-party public and private keys is directly provided here to facilitate quick docking for developers.
- Test environment docking is not supported at present, please register to create a wallet according to Access Guidelines , and get the API related information of the production environment.
Account preparation
The developer prepares the following information:
1)Generate a pair of public and private keys and provide the public key to the platform;
2)IP of third-party application server;
3)deposit and withdrawal callback notification address;
4)Reconfirm the address for withdrawal;
5)Whether to enable the automatic collection function. After the function is enabled, the system will automatically transfer the user’s deposit funds to the merchant collection account.
Contact relevant personnel of the platform to provide the above five types of information. The platform prepares an asset management account for you and provides you with the following information:
1)Unique identification of the merchant:app_id
;
2)The wallet public key:rsa_wallet_pub
.
Interface Process
Documentation is the interface that the wallet service provides to third-party applications.
The interface providers in the following documents are referred to as wallet services,and the interface callers are referred to as third-party applications. When the third-party application requests the wallet service, it encrypts the request parameters through the RSA algorithm and decrypts the response data after receiving the wallet service
Interface rules
Transfer mode: | https(HTTP is temporarily used in the test environment) |
---|---|
Signature field: | All Required fields, except the Sign field, need to be signed |
The response status code is: | 0, indicating successful processing, and non-0 indicates request error or system exception |
Request address: | domain name + interface address |
Encryption algorithm: | RSA, See API List- Overview for details |
SDK
To meet the diverse business needs of customers, ChainUp Custody supports two docking methods: SDK and API;
SDK:Support for Java, PHP and node
Java SDK address:https://github.com/HiCoinCom/java-sdk
PHP SDK address:https://github.com/HiCoinCom/php-sdk
Node SDK address:https://github.com/HiCoinCom/js-sdk
API List
Overview
Common Request Parameters
Param | type | Required | Description |
---|---|---|---|
app_id | String | optional | merchant unique identifier |
data | String | optional | encrypted String, decrypted format is defined as Decrypted Request Parameters |
Request Example
HTTP Request
POST/api/v2/user/createUser
Request Example
POST/api/v2/user/createUser
app_id=baaceb1e506e1b5d7d1f0a3b1622583b&data=GCJBk77n7epyOexdGZ20qvukd321TpJ62lIAtlCinW6TzHx8SIbm6evXGulO87UgLTzIWCtgupgeLJKDdZmC7msuPNBGK--Ec27WZXjuhI0gNWXcOVk5RW_VRVcyfJ1Ml-DMW8XVxZRgA2U1bt9BztiyfryzMGj8_jl1IXd5sOQfPYXulCdm70WyTJpjsDkuMSov6QUmOn-C_-HUoZ7s715EMeZ60D09uUsF0i6mKLhFZTEQZPGPeJITYSJNddAw7nvqvX2KzNc6YUeCQhEmU1Dfxp65W4e3SVOgpd_2Q-dLN1MpOlkUKwbmbpb-gEh_s68yl7ox6WSgKfCK4i_uvA
Common Response Parameters
Param | type | Required | Description |
---|---|---|---|
data | String | optional | encrypted String decrypted format is defined as Decrypted Response Parameters |
Response Example
{
"data":"LK4D5mrtvTubDxCQM4lqyN2h8TTIkEBL_06FrrrzLrImyMO4Yuac-wdbk5VnGVfCKB5EFaUb162xXUJdTHhpA5CGBCAQKl64h_Dt10C-H8KIoap9dZI90qE4f-mAMAyjF1QzKXJ-f-R_3J3bRGqfHFBRXebh08R8MdRDssniopVOhsFUs4gBxUensKas3_ta15eFIqXPjIgJWfYQCD2DUi1gaKgmN-5Q_tgt-qXp5Y2uh3yfM4g4k71Ahyel3G8S_AktbWl2G9wU3cri3ZVQEo0faIpkX_CKsk9V1YoY5yRopvJbxNtkG9lBFxKnureAQo0KP3f1tsIMOzgcyEXPnA"
}
Decrypted Response Parameters
Param | type | Required | Description |
---|---|---|---|
code | String | Required | status code |
msg | String | Required | description of the response result |
data | String | optional | the specific response data, the data structure is defined as Response Data Parameters |
Encryption and Decryption Mode
The values of the request parameter DATA and the response field DATA are both encrypted by RSA and encrypted by base64urlsafe
Get the address
Please note that the default number of registered users is 50,000. If the number of users exceeds the upper limit, please contact the relevant operation personnel for assistance.
User Mobile Registration
Register to become a wallet user
HTTP Request
POST/api/v2/user/createUser
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
country | String | Required | country number, e.g. 86 for China |
mobile | String | Required | mobile number |
Response
{
"code":"0",
"data":{
"uid":3529218
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
uid | int | Required | the unique identity of the user in the wallet service |
User Email Registration
Register to become a wallet user, with email format (e.g. 123@111.com)
HTTP Request
POST /api/v2/user/registerEmail
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
String | Required | Email or Virtual Accounts, to ensure their uniqueness, up to 100 characters |
Response
{
"code":"0",
"data":{
"uid":3529218
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
uid | int | Required | the unique identity of the user in the wallet service |
Address of the user-specified currency
To obtain the user specified currency account address. If there is no address, the user is assigned an address, and the account should not be generated. The account is still generated on demand.
HTTP Request
POST/api/v2/account/getDepositAddress
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
vesion | String | Required | interface version number, no special case, pass parameter v2 |
uid | String | Required | user ID |
symbol | String | Required | currency |
Response
{
"code":"0",
"data":{
"uid":"3529218",
"address":"0x6956f9af53b22117f2fc94dfe7c74ff3893b2acd"
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
uid | int | Required | the unique identity of the user in the wallet service |
address | String | Required | the currency account address |
Account balance
Query User Information
Query user information
HTTP Request
GET/api/v2/user/info
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
country | String | optional | Country number, Mobile is not empty, this field is Required. Such as: 86 |
mobile | String | optional | Phone Number, Phone and Email must be made sure that one of them is not empty |
string | optional | Email, Phone, and Email must be made sure that one of them is not empty |
Response
{
"code":"0",
"data":{
"uid":3529218,
"nickname":""
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
uid | int | Required | the unique identity of the user in the wallet service |
nickname | String | Required | the nickname of the user |
List of supported currencies
Get a list of the currencies of the merchant
HTTP Request
GET/api/v2/user/getCoinList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
Response
{
"code":"0",
"data":[
{
"symbol":"BTC",
"icon":"http://chainup-oss.oss-cn-beijing.aliyuncs.com/saas/1565681771193.png",
"real_symbol":"BTC",
"decimals":"8",
"name":"Bitcoin",
"base_symbol":"BTC",
"contract_address":"",
"deposit_confirmation":"2",
"explorer":"https://btc.com/",
"address_regex":"^(1|3)[a-zA-Z0-9]{24,36}$",
"address_tag_regex":"",
"support_memo":"0",
"support_token":"0"
}
]
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
symbol | String | Required | currency(Be sure to use the value returned by this field when calling the interface to withdraw coins, and any query interface) |
icon | String | Required | currency icon |
real_symbol | String | Required | Cryptocurrency on-chain names |
decimals | String | Required | Decimals |
name | String | Required | Full name of coin |
base_symbol | String | Required | Main Chain Coin Name |
contract_address | String | Required | Contract Address |
deposit_confirmation | String | Required | Deposit confirmation |
explorer | String | Required | Explorer |
address_regex | String | Required | Address regex |
address_tag_regex | String | Required | Address tag regex |
support_memo | String | Required | Whether memo is supported, 0 not supported 1 supported |
support_token | String | Required | Whether to support token coins, 0 does not support 1 supports, only main chain coins have value, tokens are empty |
Account information for specified user
Search the user’s account according to the currency and user ID. In addition, if the merchant starts automatic collection, the user account will be transferred to the merchant’s collection account
HTTP Request
GET/api/v2/account/getByUidAndSymbol
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
vesion | String | Required | interface version number, no special case, pass parameter v2 |
uid | String | Required | user ID |
symbol | String | Required | currency |
Response
{
"code":"0",
"data":{
"normal_balance":"2.99400066",
"deposit_address":"0x6956f9af53b22117f2fc94dfe7c74ff3893b2acd",
"lock_balance":"0"
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
normal_balance | String | Required | normal account balance |
lock_balance | String | Required | freeze account balance |
deposit_address | String | Required | deposit_address |
Balance of merchant collection account
After opening the automatic collection of merchant funds, the merchant can obtain the balance of merchant collection account through this interface
HTTP Request
GET/api/v2/account/getCompanyBySymbol
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
vesion | String | Required | interface version number, no special case, pass parameter v2 |
symbol | String | Required | currency |
Response
{
"code":"0",
"data":{
"symbol":"ETH",
"balance":"64.97599802"
},
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
symbol | String | Required | currency name |
balance | String | Required | collection account balance |
User Deposit
Synchronize deposit records
Synchronized deposit records
HTTP Request
GET/api/v2/billing/syncDepositList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
max_id | int | Required | returns 100 records greater than id |
Response
{
"code":"0",
"data":[
{
"withdraw_fee":"0",
"symbol":"BTC",
"amount":"0.0001",
"real_fee":"0",
"fee":"0",
"address_to":"1CfYiePwcf3mWhLBQH2ac35C7jmE2udQqH",
"created_at":1539050731000,
"txid":"",
"confirmations":0,
"address_from":"",
"uid":10596,
"withdraw_fee_symbol":"BTC",
"fee_symbol":"BTC",
"saas_status":0,
"updated_at":1543483252000,
"company_status":2,
"id":45325,
"request_id":"",
"status":2
},
{
"withdraw_fee":"0.0000001",
"symbol":"BTC",
"amount":"0.0001",
"real_fee":"0",
"fee":"0.0000001",
"address_to":"17m2GM8aRrrnxPt5JhYPJd4qUFqF8rJDop",
"created_at":1539065092000,
"txid":"",
"confirmations":0,
"address_from":"",
"uid":10595,
"withdraw_fee_symbol":"BTC",
"fee_symbol":"BTC",
"saas_status":1,
"updated_at":1543851222000,
"company_status":2,
"id":45332,
"request_id":"",
"status":2
}
],
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
id | int | Required | deposit unique id |
uid | int | Required | deposit user id |
symbol | String | Required | currency |
amount | String | Required | deposit amount |
created_at | Long | Required | creation time |
updated_at | Long | Required | change time |
txid | String | Required | blockchain transaction ID |
confirmations | int | Required | number of blockchain confirmations |
address_from | String | Required | deposit source address |
address_to | String | Required | depositing account address |
status | int | Required | 0 to be confirmed, 1 success, 2 failed, 4 pending KYT verification, 5 pending manual review (KYT risk level too high), 6 Pending manual review (KYT Deposit Circuit Breaker) |
Batch access depositing records
Batch access deposit records
HTTP Request
GET/api/v2/billing/depositList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | current timestamp |
charset | String | Required | encoding format, no special case, pass parameter UTF-8 |
version | String | Required | interface version number, no special case, pass parameter v2 |
ids | String | Required | multiple top-up IDs separated by commas, up to 100 IDs |
Response
{
"code":"0",
"msg":"suc",
"data":[
{
"id":1,
"uid":11,
"symbol":"ETH",
"amount":"0.0002000000000000",
"created_at":1545273830000,
"updated_at":1545273830000,
"txid":"78d1edef3b3fd14365f88cf2d03e8c29ec49ac1a43cedde9e21d320b3268f4de",
"confirmations":11,
"status":1,
"address_to":"0xcb03bfdccb50c9f62ec1c728f264bf453e037132"
},
{
"id":2,
"uid":12,
"symbol":"ETH",
"amount":"0.0002000000000000",
"created_at":1545273830000,
"updated_at":1545273830000,
"txid":"0xd609e050c3d573fb715431edbd36cc08eaa475f813de921026a65c0a96e8113e",
"confirmations":11,
"status":1,
"address_to":"0xcb03bfdccb50c9f62ec1c728f264bf453e037132"
}
]
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
id | int | Required | depositing unique id |
uid | int | Required | depositing user id |
symbol | String | Required | currency |
amount | String | Required | depositing amount |
created_at | Long | Required | create time, timestamp |
updated_at | Long | Required | change time, timestamp |
txid | String | Required | blockchain transaction ID |
confirmations | int | Required | number of blockchain confirmations |
address_from | String | Required | deposit source address |
address_to | String | Required | depositing account address |
status | int | Required | 0 to be confirmed, 1 success, 2 failed, 4 pending KYT verification, 5 pending manual review (KYT risk level too high), 6 Pending manual review (KYT Deposit Circuit Breaker) |
Nonsync callback notification for user deposit
Description: | This interface only defines the interface specification, the specific interface needs to be implemented by the developer |
---|---|
Interface address: | The interface address is provided by the developer and can be configured on the platform by contacting the administrator |
Request method: | POST |
Decrypted Request Parameters
Deposit Notice:
Param | type | Required | Description |
---|---|---|---|
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
side | String | Required | Notice type, deposit notice: deposit, withdrawal notice: withdraw |
notify_time | string | Required | Notice time |
id | string | Required | Deposit id |
uid | string | Required | Deposit user ID |
symbol | string | Required | currency |
amount | string | Required | Deposit amount |
address_to | string | Required | Depositing address |
created_at | string | Required | Creation time |
updated_at | string | Required | Revision time |
txid | string | Required | Blockchain transaction ID |
confirmations | string | Required | Number of blockchain confirmations |
status | string | Required | 0 to be confirmed, 1 success, 2 failed, 4 pending KYT verification, 5 pending manual review (KYT risk level too high), 6 Pending manual review (KYT Deposit Circuit Breaker) |
Response:
Return string: SUCCESS
means SUCCESS, FAILURE
means FAILURE (note that the return parameter does not need to be encrypted here)
Collect miner fees
The currency of account type needs to be collected after deposit. UTXO has no fees for collecting miners’ fees.
HTTP Request
GET//api/v2/billing/syncMinerFeeList
Decrypted Request Parameters
Param | type | repuired | Description |
---|---|---|---|
time | long | repuired | Current timestamp |
charset | String | repuired | Coding format, no special case, transfer parameter UTF-8 |
version | String | repuired | Interface version number, no special case,transfer parameter v2 |
max_id | int | repuired | Return the data of 100 collected miner fee records greater than ID |
Response
{ "code":"0",
"data":[
{
"id":1,
"symbol":"BTC",
"amount":"11",
"fee":"0.00111",
"created_at":1539050731000,
"updated_at":1543483252000,
"txid":"",
"confirmations":0,
"status":2,
"address_from":"",
"address_to":"",
"txid_type":"1",
"base_symbol":"",
"contract_address":"123",
"email":""
}
],
"msg": "success"
}
Response Data Parameters
Param | type | repuired | Description |
---|---|---|---|
id | int | repuired | Collect unique ID |
symbol | String | repuired | currency |
amount | String | repuired | Collection amount |
fee | String | repuired | Collection fee |
created_at | Long | repuired | Creation time |
updated_at | Long | repuired | Revision time |
txid | String | repuired | Blockchain transaction ID |
confirmations | int | repuired | Number of blockchain confirmations |
status | int | repuired | 0 to be confirmed, 1 success, 2 failed, 4 pending KYT verification, 5 pending manual review (KYT risk level too high), 6 Pending manual review (KYT Deposit Circuit Breaker) |
address_to | String | repuired | depositing to account address |
address_from | String | repuired | depositing sending address |
txid_type | String | repuired | 0 chain transaction, 1 union transfer transaction |
base_symbol | String | repuired | Name of main chain currency |
contract_address | String | repuired | Currency contract address |
String | repuired |
User Withdrawal
Initiate a withdraw
If the withdrawal address is the internal address of the Alliance, it will not be linked; Otherwise, you need to chain up. In addition, in order to avoid illegal withdrawal requests, when the wallet service receives a withdrawal request from a third-party application, it will call the Withdrawal Reconfirmation Interface
provided by the third party.
HTTP Request
POST/api/v2/billing/withdraw
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
request_id | String | Required | Request unique identification, up to 64 bits |
from_uid | String | Required | Transfer out user ID |
to_address | String | Required | Transfer in the user address, memo type, use “_” For example:eos_24545 |
amount | String | Required | Withdrawal amount, including withdrawal service charge; The service charge needs to be configured in the background of the merchant |
symbol | String | Required | Withdrawal currency |
Response
{
"code":"0",
"data":{
"id":48680,
"status":0
},
"msg":"success"
}
Response Data Parameters
param | type | Required | Description |
---|---|---|---|
status | string | Required | 0 under review by risk control, 1 in payment, 2 audit rejection, 4 failed, 5 success, 6 cancelled , 7 pending KYT verification, 8 pending manual review (KYT risk level too high) |
Second confirmation of withdrawal information
Description: | After receiving a withdrawal request, the platform will call the secondary confirmation interface provided by the third party to confirm that the request is a withdrawal request normally initiated by the merchant. This interface only defines the interface specification, the specific interface needs to be implemented by the developer. |
---|---|
Interface address: | The interface address is provided by the developer and can be configured on the platform by contacting the administrator |
Request method: | POST |
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
request_id | String | Required | Request unique identity |
from_uid | String | Required | Transfer out user ID |
to_address | String | Required | Transfer in user address |
amount | String | Required | Withdrawal amount, including withdrawal service charge; The service charge needs to be configured in the background of the merchant |
symbol | String | Required | Withdrawal currency |
check_sum | String | Required | Random check code. The third party returns this field as it is. The platform considers it successful |
Response
{
"check_sum":"1234",
"time":"12345678"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
check_sum | String | Required | Check in request parameter check_sum |
time | String | Optional | time stamp |
Asynchronous callback notification of user withdrawal
Description: | This interface only defines the interface specification, the specific interface needs to be implemented by the developer |
---|---|
Interface address: | The interface address is provided by the developer and can be configured on the platform by contacting the administrator |
Request method: | POST |
Decrypted Request Parameters
Withdrawal notice:
Param | type | Required | Description |
---|---|---|---|
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
side | String | Required | Notice type, deposit notice: deposit, withdrawal notice: withdraw |
notify_time | String | Required | Notice time |
request_id | String | Required | The withdrawal request_id corresponds to the request in the withdrawal interface id |
id | String | Required | Withdrawal ID |
uid | String | Required | Withdrawal user ID |
symbol | String | Required | currency |
amount | String | Required | Withdrawal amount |
withdraw_fee_symbol | String | Required | Currency of withdrawal service deposit |
withdraw_fee | String | Required | Service fee for withdrawal |
fee_symbol | String | Required | Currency of Mining handling charge |
real_fee | String | Required | Miner’s fee |
address_to | String | Required | Depositing address |
created_at | String | Required | Creation time |
updated_at | String | Required | Revision time |
txid | String | Required | Blockchain transaction ID |
confirmations | String | Required | Number of blockchain confirmations |
status | String | Required | Withdrawal status: 0 under review by risk control, 1 in payment, 2 audit rejection, 4 failed, 5 success, 6 cancelled , 7 pending KYT verification, 8 pending manual review (KYT risk level too high) |
Response
Return string: SUCCESS
means SUCCESS, FAILURE
means FAILURE (note that the return parameter does not need to be encrypted here)
Synchronize withdrawal records
Batch access to withdrawal records
HTTP Request
GET/api/v2/billing/syncWithdrawList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
max_id | String | Required | Return 100 deposit record data greater than ID |
Response
{
"code":"0",
"data":[
{
"withdraw_fee":"0.4",
"symbol":"LTC",
"amount":"10",
"real_fee":"0",
"fee":"0",
"address_to":"LhFrA5ZJL15UdRV1uEfFxfdqWJUbBhXpRk1",
"created_at":1551429063000,
"txid":"",
"confirmations":0,
"address_from":"",
"uid":10739,
"withdraw_fee_symbol":"ETH",
"fee_symbol":"LTC",
"saas_status":0,
"updated_at":1551429063000,
"company_status":0,
"id":48393,
"request_id":"123",
"status":0
}
],
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
request_id | String | Required | Request ID |
id | int | Required | Withdrawal ID |
uid | int | Required | Withdrawal user ID |
symbol | String | Required | currency |
amount | String | Required | Withdrawal amount |
withdraw_fee_symbol | String | Required | Currency of withdrawal service deposit |
withdraw_fee | String | Required | Service fee for withdrawal |
fee_symbol | String | Required | Currency of Mining handling charge |
real_fee | String | Required | Miner’s fee |
created_at | Long | Required | Creation time |
updated_at | Long | Required | Revision time |
address_from | String | Required | Source address |
address_to | String | Required | Arrival address |
txid | String | Required | Blockchain transaction ID |
confirmations | int | Required | Number of blockchain confirmations |
saas_status | int | Required | Platform audit status: 0 not approved, 1 reviewed, 2 rejected |
company_status | int | Required | Merchant audit status: 0 not approved, 1 reviewed, 2 rejected |
status | int | Required | Withdrawal status: 0 under review by risk control, 1 in payment, 2 audit rejection, 4 failed, 5 success, 6 cancelled , 7 pending KYT verification, 8 pending manual review (KYT risk level too high) |
Batch access to withdrawal records
Batch access to withdrawal records
HTTP Request
GET/api/v2/billing/withdrawList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
ids | String | Required | Multiple requests_id are separated by commas, up to 100 requests_id |
Response
{
"code":"0",
"data":[
{
"withdraw_fee":"0.4",
"symbol":"LTC",
"amount":"10",
"real_fee":"0",
"fee":"0",
"address_to":"LhFrA5ZJL15UdRV1uEfFxfdqWJUbBhXpRk1",
"created_at":1551429063000,
"txid":"",
"confirmations":0,
"address_from":"",
"uid":10739,
"withdraw_fee_symbol":"ETH",
"fee_symbol":"LTC",
"saas_status":0,
"updated_at":1551429063000,
"company_status":0,
"id":48393,
"request_id":"123",
"status":0
}
],
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
request_id | String | Required | Request ID |
id | int | Required | Withdrawal ID |
uid | int | Required | Withdrawal user ID |
symbol | String | Required | currency |
amount | String | Required | Withdrawal amount |
withdraw_fee_symbol | String | Required | Currency of withdrawal service deposit |
withdraw_fee | String | Required | Service fee for withdrawal |
fee_symbol | String | Required | Currency of Mining handling charge |
real_fee | String | Required | Miner’s fee |
created_at | Long | Required | Creation time |
updated_at | Long | Required | Revision time |
address_from | String | Required | Source address |
address_to | String | Required | Arrival address |
txid | String | Required | Blockchain transaction ID |
confirmations | int | Required | Number of blockchain confirmations |
saas_status | int | Required | Platform audit status |
company_status | int | Required | Merchant audit status |
status | int | Required | Withdrawal status: 0 under review by risk control, 1 in payment, 2 audit rejection, 4 failed, 5 success, 6 cancelled , 7 pending KYT verification, 8 pending manual review (KYT risk level too high) |
Internal Transfer
Custody Merchant Transfer
ChainUp Custody merchants transfer money to each other
HTTP Request
POST/api/v2/account/transfer
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | Long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
request_id | String | Required | Request unique identification, up to 64 bits |
symbol | String | Required | Transfer currency, Custody get currency name |
amount | String | Required | Transfer quantity, including transfer fees |
to | String | Required | Transfer in merchant, fill in merchant APPID at present |
remark | String | Required | Remark Field |
Response
{
"code":"0",
"data":[
{
"receipt":"abcdesd",
}
],
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
receipt | String | Required | Unique voucher for transfer |
Asynchronous confirmation of transfer information
Transfer information is confirmed asynchronously
HTTP Request
POST/same-with-withdraw-check-sum
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | Long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
request_id | String | Required | Request unique identification, up to 64 bits |
symbol | String | Required | currency |
amount | String | Required | Transfer quantity, including transfer fees |
to | String | Required | fill in merchant appid at present |
check_sum | String | Required | Random check code. The third party returns this field as it is. The platform considers it successful |
remark | String | Required | Remark Field |
Response
{
"code":"0",
"data":[
{
"time":1551429063111,
"check_sum":"123124",
}
],
"msg":"success"
}
Response Data Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
check_sum | String | Required | Random check code. The third party returns this field as it is. The platform considers it successful |
Batch query transfer records
HTTP Request
POST/api/v2/account/transferList
Decrypted Request Parameters
Param | Type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
ids | String | Required | Request a unique identifier. Multiple identifiers are separated by English commas, up to 100 |
ids_type | String | Required | request_id:request ID (default); receipt: transfer voucher |
Response
{
"code":"0",
"data":[
{
"id":"123",
"symbol":"ETH",
"amount":"0.002",
"from":"0xc0ff095a9f1608f6873e74b84671640364107dc4",
"to":"0xc0ff095a9f1608f6873e74b84671640364107dc5",
"created_at":1551429063000,
"request_id":"123123",
"receipt":"4444444",
"remark":"remark"
}
{
"id":"124",
"symbol":"ETH",
"amount":"0.002",
"from":"0xc0ff095a9f1608f6873e74b84671640364107dc4",
"to":"0xc0ff095a9f1608f6873e74b84671640364107dc5",
"created_at":1551429063111,
"request_id":"123124",
"receipt":"4444445",
"remark":"remark"
}
],
"msg":"success"
}
Response Data Parameters
Param | Type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
id | String | Required | Request unique identification, up to 64 bits |
symbol | String | Required | currency |
amount | String | Required | Transfer quantity, including transfer fees |
from | String | Required | Transfer out merchant, transfer out merchant APPID |
to | String | Required | Transfer in merchant, transfer in merchant APPID |
created_at | Long | Required | Creation time |
request_id | String | Required | Tripartite ID |
receipt | String | Required | Transfer voucher |
remark | String | Required | Up to 32 characters |
Synchronous transfer record
Synchronize all transfer records (paging)
HTTP Request
POST/api/v2/account/syncTransferList
Decrypted Request Parameters
Param | type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
max_id | String | Required | Return the data of 100 transfer records greater than ID |
Response
{
"code":"0",
"data":[
{
"id":"123",
"symbol":"ETH",
"amount":"0.002",
"from":"0xc0ff095a9f1608f6873e74b84671640364107dc4",
"to":"0xc0ff095a9f1608f6873e74b84671640364107dc5",
"created_at":1551429063000,
"request_id":"123123",
"receipt":"4444444",
"remark":"remark"
}
{
"id":"124",
"symbol":"ETH",
"amount":"0.002",
"from":"0xc0ff095a9f1608f6873e74b84671640364107dc4",
"to":"0xc0ff095a9f1608f6873e74b84671640364107dc5",
"created_at":1551429063111,
"request_id":"123124",
"receipt":"4444445",
"remark":"remark"
}
],
"msg":"success"
}
Response Data Parameters
Param | Type | Required | Description |
---|---|---|---|
time | long | Required | Current timestamp |
charset | String | Required | Coding format, no special case, transfer parameter UTF-8 |
version | String | Required | Interface version number, no special case,transfer parameter v2 |
id | String | Required | Request unique identification, up to 64 bits |
symbol | String | Required | currency |
amount | String | Required | Transfer quantity, including transfer fees |
from | String | Required | Transfer out merchant, transfer out merchant APPID |
to | String | Required | Transfer in merchant, transfer in merchant APPID |
created_at | Long | Required | Creation time |
request_id | String | Required | Tripartite ID |
receipt | String | Required | Transfer voucher |
remark | String | Required | Up to 32 characters |
Error Code
code | msg |
---|---|
0 | success |
100001 | system error |
100004 | request parameter is not valid |
100005 | signature verification failed |
100007 | illegal IP |
100015 | merchant ID is invalid |
100016 | merchant information expired |
110004 | users are frozen and cannot withdraw money |
110023 | mobile phone number has been registered |
110037 | withdrawal address is at risk |
110055 | correct withdrawal address for |
110065 | user does not exist (used to obtain user balance, withdraw money, or transfer money) |
110078 | withdrawal or transfer amount less than the minimum transfer amount |
110087 | withdrawal or transfer amount is greater than the maximum transfer amount |
110088 | please do not repeat the request |
110089 | registered mobile phone number is incorrect |
110101 | user registration failed |
110161 | exceeds the maximum withdrawal support accuracy |
120202 | currency is not supported |
120206 | withdrawal second confirmation failed |
120402 | insufficient balance in withdrawal or transfer |
120403 | insufficient balance of withdrawal fee |
120404 | withdrawal or transfer amount is too small, less than or equal to the commission fee |
900006 | the user is at risk. Withdrawal is prohibited |
3040006 | cannot transfer money to itself |