🔔Webhook notification

Below are the details of the webhook requests are sent from CoinsDo to webhook URL.

Setup

  1. In your merchant account, go to API Access.

  2. Toggle on the webhook event you want and insert webhook URL.

  3. Click confirm once done.

Webhook Request

POST /{webhookURL}

Parameter
Required
Value

Content-Type

Yes

application/json

Body

Parameter
Required
Type
Description

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.

Module
Event
Trigger

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.

Parameter
Type
Description

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.

Parameter
Required
Type
Description

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.

Parameter
Required
Type
Description

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

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.

To turn on 3rd-party verification, go to CoinGet > CoinGet client > Transaction check

Checkcode

checkCode
Address checking
3rd-part trx checking
Description

-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

Parameter
Required
Type
Description

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
}

To view webhook request log, you can add callback notification column in receiving / dispatch record table by clicking into the gear icon > customize form as shown below. and click into the callback status

Last updated

Was this helpful?