🔔Webhook notification
Below are the details of the webhook requests are sent from CoinsDo to webhook URL.
Setup
In your merchant account, go to API Access.
Toggle on the webhook event you want and insert webhook URL.
Click confirm once done.

Webhook Request
POST
/{webhookURL}
Header
Content-Type
Yes
application/json
Body
sign
Yes
string
Signature
data
Yes
string
Content (JSON string), refer to Webhook Events section.
Example
{
"data": "{\"txTime\":\"1661336430\",\"businessId\":\"0x6305fb61_JDXqh_0_2\",\"mainnet\":\"TRX\",\"withdrawStatus\":\"1\",\"txMemo\":\"0\",\"feeSymbol\":\"TRX\",\"blockNumber\":\"29232059\",\"txFee\":\"8.34196\",\"coinName\":\"JST\",\"txHash\":\"b29e917066ed433b5d2753ae07a9b4bd71245509f8f9de51ec5a2e43425f91a8\"}",
"sign": "1b248bbf33dffb5004f4f179bb4b20e1a455e5c7d3be366c0b07e75ddc229d10"
}
Webhook Events
Below shows all the available events and its respective data content.
CoinSend
Dispatch
Upon approval or rejection of a transfer record.
CoinGet
Collection
When a token sweep event is recorded.
CoinGet
Collection receiving
When a new receiving record is confirmed by 1 block.
CoinGet
Confirmation count
When a receiving record is confirmed by a specific number of blocks defined in Currency Control.
Transfer record
Trigger upon approval / rejection / failure of a transfer record in CoinSend.
businessId
string
Business ID
withdrawStatus
string
Transfer status 1. Success 2. Rejected 5. Cancelled
txHash
string
Transaction hash
blockNumber
number
Block number where the transaction was recorded
txTime
timestamp
Transaction confirmation timestamp(seconds)
txFee
decimal
Gas/network fee
feeSymbol
string
Currency used for txFee
businessScene
string
Business scene string submitted via API request
txMemo
string
Transaction memo
mainnet
string
Network
coinName
string
Token symbol
{
"businessId": "SOL_SPL2025061315143701",
"txHash": "3p2iop22eHVfq59iz22rfMkagXyKrmiPurcDPJVtRv3vqgMLXmCUR14oDHJK63NJmyyUHzuHWFh3dmsZdipxBFBi",
"withdrawStatus": "1",
"blockNumber": "346485584",
"txTime": "1749802811",
"txFee": "0.000155",
"feeSymbol": "SOL",
"businessScene": "1",
"txMemo": "pymongo_withdraw_live",
"mainnet": "SOL",
"coinName": "USDT",
"deviceUuid": "2559DA72-696A-4CA9-ADE0-CFA537C9D09F"
}
Receiving record (confirmed by 1 block)
Triggered upon new incoming transaction recorded and confirmed by 1 block.
txHash
Yes
string
Transaction hash
txIndex
Yes
string
Default 0, could be other than 0 if the transaction has multiple transfer
fromAddress
Yes
string
Sender's address
toAddress
Yes
string
Receiving address
amount
Yes
decimal
Token amount
txFee
Yes
decimal
Gas/network fee
txTime
Yes
timestamp
Transaction confirmation timestamp(seconds)
txMemo
No
string
On-chain memo
deviceUuid
Yes
string
Wallet ID of the receiving address
currency
Yes
string
Token protocol (ERC20 / BEP20 / etc) or coin name if native token transfer
flag
Yes
string
Contract address or coin name if native token transfer
blockNumber
Yes
string
Block number where the transaction was recorded
isReachedConfirm
Yes
string
0. Has not been confirmed by the required blocks 1. Has been confirmed by the required blocks Default as 1
blockConfirm
Yes
string
Number of blocks confirmed
mainnet
Yes
string
Network
coinName
Yes
string
Currency name
coinsDoId
Yes
string
CoinsDo ID (refer to currency control)
protocol
Yes
string
Token's protocol (ERC20, BEP20 and etc)
tokenAddress
Yes
string
Token address (refer to currency control)
coinType
Yes
string
0. Coin 1. Token
Example
{
"txHash": "f0b9bc10e203573ac116929235cec213ca855e0c564a5f3ec23bf15752146f97",
"txIndex": "0",
"fromAddress": "EQBlee9uqqUqNNWjoS4JdYTMFkveceWQuZYAiR9j54jqOzQk",
"toAddress": "EQBtY8DtdKvkucg8CieDQgdr58B-X16DWJOVr1z3L8vQZoY0",
"amount": "77",
"txFee": "0.026167903",
"txTime": "1750667516",
"txMemo": "pymongo_withdraw_live",
"deviceUuid": "0B08AF6B-151C-4BBE-A152-F6496077CEAA",
"currency": "JETTON",
"flag": "EQCFcjD08uBGAKyEUmSc_J7qpCXexQQUsulQVlae8Eaon-Pp",
"blockNumber": "49131390",
"isReachedConfirm": "0",
"blockConfirm": "1",
"mainnet": "TON",
"coinName": "j7$",
"coinsDoId": "823",
"protocol": "JETTON",
"tokenAddress": "EQCFcjD08uBGAKyEUmSc_J7qpCXexQQUsulQVlae8Eaon-Pp",
"coinType": "1"
}
Receiving record (confirmed after required blocks)
Triggered upon new incoming transaction recorded and confirmed by 1 block.
txHash
Yes
string
Transaction hash
txIndex
Yes
string
Default 0, could be other than 0 if the transaction has multiple transfer
fromAddress
Yes
string
Sender's address
toAddress
Yes
string
Receiving address
amount
Yes
decimal
Token amount
txFee
Yes
decimal
Gas/network fee
txTime
Yes
timestamp
Transaction confirmation timestamp(seconds)
txMemo
No
string
On-chain memo
deviceUuid
Yes
string
Wallet ID of the receiving address
currency
Yes
string
Token protocol (ERC20 / BEP20 / etc) or coin name if native token transfer
flag
Yes
string
Contract address or coin name if native token transfer
feeSymbol
Yes
string
Gas fee unit/symbol
blockNumber
Yes
string
Block number where the transaction was recorded
checkSign
Yes
string
Verification signature, refer to checkSign section below
addressRemark
No
string
Address remark added in receiving address record
isReachedConfirm
Yes
string
0. Has not been confirmed by the required blocks 1. Has been confirmed by the required blocks Default as 1
blockConfirm
Yes
string
Number of blocks confirmed
mainnet
Yes
string
Network
coinName
Yes
string
Currency name
coinsDoId
Yes
string
CoinsDo ID (refer to currency control)
protocol
Yes
string
Token's protocol (ERC20, BEP20 and etc)
tokenAddress
Yes
string
Token address (refer to currency control)
coinType
Yes
string
0. Coin 1. Token
checkCode
Yes
string
Transaction check result code (refer to Checkcode table below)
recordId
Yes
string
Unique record ID
manualCallback
Yes
string
0. Request was triggered automatically 1. Request was triggered manually
Tips
To identify the token received correctly, we strongly recommend to verify using mainnet, coinsDoId, and tokenAddress
CheckSign
checkSign is a signature generated by the CoinSend client for verification by a third party from the client device.
The webhook request will only be triggered after the verification is successfully completed.
If the verification fails, the CoinSend client will retry up to 10 times before sending the request.
Signed data is a concatenation of checkCode + recordId + txHash.
Checkcode
-1
Checking error
Checking error
Unknown error
0
Checking success
Checking success
Checking success
1
Checking error
Check pending
Address does not exists
2
Checking success
Checking success
Data not match
3
Checking success
Checking error
Transaction failed
4
Checking success
Checking error
Transaction checking failed
5
Checking success
Checking error
Transaction not found
6
Checking success
Checking disabled
Checking disabled
7
Checking error
Check pending
Address not found
Example
{
"txHash": "a0b2e575f033d460b6b5f8c0c4268d47e6b3c70d127c8ccdbc1bdd3b80a336a2",
"txIndex": "0",
"fromAddress": "EQBlee9uqqUqNNWjoS4JdYTMFkveceWQuZYAiR9j54jqOzQk",
"toAddress": "EQBtY8DtdKvkucg8CieDQgdr58B-X16DWJOVr1z3L8vQZoY0",
"amount": "0.27",
"txFee": "0.002859258",
"txTime": "1748568966",
"txMemo": "pymongo_withdraw_live",
"deviceUuid": "0B08AF6B-151C-4BBE-A152-F6496077CEAA",
"currency": "TON",
"flag": "TON",
"feeSymbol": "TON",
"blockNumber": "48317552",
"checkSign": "ovk1JUpIAx6yVlICMSm9/RehchWuLnvT+KE6roBn+Ad1YGRVfQPklDkdt1nKmIJkVb+iM7EoCUa4B+kskJyMZpba0lOx9LUT/Y+5UYodagyMQjZ/cDIypTeVNrHe21jNuCheimH+kwsgZ0XnvvLVOxDJqGopcRgYEfgPeMJYB7Q=",
"addressRemark": "CUST_123456",
"isReachedConfirm": "1",
"blockConfirm": "1",
"mainnet": "TON",
"coinName": "TON",
"coinsDoId": "781",
"protocol": "",
"tokenAddress": "",
"coinType": "0",
"checkCode": "6",
"recordId": "1928264349282017282",
"manualCallback": "0"
}
Collection / Token Sweep
txHash
Yes
string
Transaction hash
fromAddress
Yes
string
Sender's address
toAddress
Yes
string
Receiving address
amount
Yes
decimal
Token amount
txFee
Yes
decimal
Gas/network fee
txTime
Yes
timestamp
Transaction confirmation timestamp(seconds)
txStatus
Yes
string
Token sweep status, default to 1
txMemo
No
string
On-chain memo
deviceUuid
Yes
string
Wallet ID of the receiving address
currency
Yes
string
Token protocol (ERC20 / BEP20 / etc) or coin name if native token transfer
flag
Yes
string
Contract address or coin name if native token transfer
feeSymbol
Yes
string
Gas fee unit/symbol
blockNumber
Yes
string
Block number where the transaction was recorded
blockConfirm
Yes
string
Number of blocks confirmed
mainnet
Yes
string
Network
coinName
Yes
string
Currency name
coinsDoId
Yes
string
CoinsDo ID (refer to currency control)
protocol
Yes
string
Token's protocol (ERC20, BEP20 and etc)
tokenAddress
Yes
string
Token address (refer to currency control)
recordId
Yes
string
Unique record ID
Example
{
"txHash": "605bf33c0dddcebb7125663796f012ce164797fb977e986bdba953cd0d3ca774",
"fromAddress": "EQBtY8DtdKvkucg8CieDQgdr58B-X16DWJOVr1z3L8vQZoY0",
"toAddress": "EQBlee9uqqUqNNWjoS4JdYTMFkveceWQuZYAiR9j54jqOzQk",
"amount": "77",
"txFee": "0.103249624",
"txTime": "1750667717",
"txStatus": "1",
"deviceUuid": "0B08AF6B-151C-4BBE-A152-F6496077CEAA",
"currency": "JETTON",
"flag": "EQCFcjD08uBGAKyEUmSc_J7qpCXexQQUsulQVlae8Eaon-Pp",
"feeSymbol": "TON",
"blockNumber": "49131472",
"mainnet": "TON",
"coinName": "j7$",
"coinsDoId": "823",
"protocol": "JETTON",
"tokenAddress": "EQCFcjD08uBGAKyEUmSc_J7qpCXexQQUsulQVlae8Eaon-Pp",
"coinType": "1",
"recordId": "1937066913330962433"
}
Handling Webhook
Make sure to respond with a "code": 200 as below, otherwise the system will retry request every 5 seconds up to 5 times, and can be triggered manually after that.
{
"code": 200, // Status code
"msg": "Success", // Remarks
"data": null // Response
}
Last updated
Was this helpful?