中文
NAV
java

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:

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

  1. 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.

  2. After adding the currency, enter the wallet and click “Currency Management” to search for the currency.

  3. Go to the edit page and add the currency.

Obtain API information

  1. Create APIs (Currently only allows permission and support one set of API)
  2. 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;

  1. 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;
  2. 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;
  3. 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:

  1. 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.
  2. 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 addresshttps://github.com/HiCoinCom/java-sdk

PHP SDK addresshttps://github.com/HiCoinCom/php-sdk

Node SDK addresshttps://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
email 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
email 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
email String repuired email

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