> ## Documentation Index
> Fetch the complete documentation index at: https://custodydocs-en.chainup.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Integration Testing

To facilitate clients in quickly and conveniently integrating the system, ChainUp has outlined the core processes based on past client integration experiences, focusing on the integration solutions for \[**Get Receiving(Deposit) Address**] , \[**User Receiving(Deposit)**] and \[**User Transfer (Withdrawal)**]. The details are as follows:

## Get Receiving Address

* Create a wallet `/api/mpc/sub_wallet/create`

* Create a coin address for the wallet `/api/mpc/sub_wallet/create/address`

* ChainUp callbacks Co-Signer for signing, and Co-Signer collaborates with ChainUp node to complete the signing

* Successfully signed, return the address created for the coin

> [!WARNING]
>
> Addresses support two types: system addresses and user addresses. The `system address` is used for auto sweep or is used as change address, cannot be assigned to users.

![](https://mintcdn.com/zhp-9d4bf690/AEZfbc6Vzsw1ahFp/images/apis/mpc-get-address_en.png?fit=max\&auto=format\&n=AEZfbc6Vzsw1ahFp\&q=85\&s=7264f8b7eef3869cba5755ad7a2a0048)

## User Receiving (Deposit)

* Users complete registration within the client system.

* When users view the coin receiving address in the frontend, the client system assigns a coin address to the user.

* Users deposits assets to the assigned address.

* ChainUp monitors the blockchain address for incoming transactions. After detecting a deposit, ChainUp notifies the client's business system of the receiving notification (the client's system actively retrieves `/api/mpc/billing/sync_deposit_list`).

* The client obtains the current block height of the corresponding blockchain for the coin (`/api/mpc/chain_height`).

* The client system credits the user's account after confirming the required number of secure confirmations.

* User receives the coin (deposits successful).

![](https://mintcdn.com/zhp-9d4bf690/AEZfbc6Vzsw1ahFp/images/apis/mpc-user-deposit_en.png?fit=max\&auto=format\&n=AEZfbc6Vzsw1ahFp\&q=85\&s=6d9cc89f816bf084575b7595b2ee5d34)

## User Transfer (Withdrawal)

* Users initiate a transfer in the client system.

* After the client system approves the Transfer, it initiates a Transfer request to the ChainUp system via API `/api/mpc/billing/withdraw`.

* Co-Signer periodically retrieves withdrawal transactions. If Co-Signer has configured a callback program, it confirms with the client's business system. If Co-Signer has configured signature verification, it verifies the signature and collaborates with the ChainUp node to sign.

* Once signed, ChainUp broadcasts the transaction to the blockchain and monitors its status.

> [!TIP]
>
> Supported blockchains for acceleration can be obtained through the API `/api/mpc/wallet/open_coin`.

* After blockchain confirmation, ChainUp notifies the client's business system of the transfer notification (the client's system actively retrieves `/api/mpc/billing/sync_withdraw_list`).

* The client system updates the order status.

* User transfer out successful.

![](https://mintcdn.com/zhp-9d4bf690/AEZfbc6Vzsw1ahFp/images/apis/mpc-user-withdraw_en.png?fit=max\&auto=format\&n=AEZfbc6Vzsw1ahFp\&q=85\&s=1c117495186d2257f3ad8edbc937f07a)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.