Payout Webhooks
Click the tabs below to see what webhooks you will receive from Coindirect while processing payout requests.
The scenario in this example is the following:
The Customer requests a payout in cryptocurrency in the Merchant's platform
The Merchant makes a
POST
/api/v1/pay/summary
call to request a payoutCoindirect receives the API call and creates a payout with the status of
PENDING
and then immediately updates the status toPROCESSING
Once the payout status is updated to
PROCESSING
, Coindirect sends a relevant webhook - see examples belowAs soon as Coindirect sends a cryptocurrency transaction to a destination address, the payout updates its status from
PROCESSING
toCOMPLETE
- Coindirect sends a relevant webhookIf the payout status updates from
PROCESSING
toCANCELLED
instead of being updated toCOMPLETE
, it means that the payout request has been failed and no cryptocurrency transaction has been sent
Once you finalize the payment on your side, please ensure that no more transactions will appear on the customer's balance in case you receive further webhooks with the same payment UUID from us - this is to avoid potential issues with duplicate balance transactions.
No under circumstances should you completely rely only on webhooks when finalizing the payment on your side.
Once a webhook is received, we highly recommend making an additional API call to retrieve the payment details via GET /api/pay/v1/:uuid/summary
(link) to check both the status
and displayCurrency.actual
field values.
Webhook Payload Data
Parameter
Type
Description
source
string
Webhook source e.g. a payment
event
string
Can be statusChanged
only
data
object
An object that contains the payment data
data.uuid
string
Payment UUID
data.merchantId
string
Merchant ID
data.dateCreated
long
Payment creation date and time
data.expiryDate
long
Payment expiry date
data.quoteExpiryDate
long
Quote expiry date
data.reference
string
Payment external ID
data.type
string
IN
for inbound payments. OUT
for outbound payments
data.status
string
data.displayCurrency
object
Contains data about the payment price currency and amount
data.displayCurrency.currency
string
Payment price currency e.g. JPY
data.displayCurrency.amount
big decimal
Payment price amount
data.displayCurrency.actual
big decimal
The actual payment amount in price currency that the payment resulted in
data.walletCurrency
object
Contain data about both the payment's source wallet currency and the amount
data.walletCurrency.currency
string
The merchant's target wallet currency that the cryptocurrency payment was converted and debited from
data.walletCurrency.amount
big decimal
The amount that was debited from the merchant's wallet
data.walletCurrency.actual
big decimal
The amount that was debited from the merchant's wallet
data.paidCurrency
object
Contains data about the amount
of cryptocurrency that the customer is supposed to receive into their wallet. It also contains both the currency
code and the actual
amount of received cryptocurrency
data.paidCurrency.currency
string
Cryptocurrency code e.g. ETH
data.paidCurrency.amount
big decimal
The amount of cryptocurrency that is supposed to be sent to the payment address
data.paidCurrency.actual
big decimal
The actual amount of received cryptocurrency
data.feeCurrency
object
Contains data about payment fees
data.feeCurrency.currency
string
Fee currency code
data.feeCurrency.amount
big decimal
Fee amount that was debited from the merchant's wallet balance
data.feeCurrency.actual
big decimal
Fee amount that was debited from the merchant's wallet balance
data.displayRate
object
An object that contain data about the display rate.
data.displayRate.base
string
Base currency type
data.displayRate.counter
string
Couter currency type
data.displayRate.rate
big decmal
Rate
data.exchangeRate
object
An object that contains data about the paymen exchange rate
data.exchangeRate.base
string
Base currency code
data.exchangeRate.counter
string
Counter currency code
data.exchangeRate.rate
big decimal
Rate
data.address
object
Contains data about the cryptocurrency address and destination tag (in case of XRP)
data.address.protocol
string
The protocol type supported by the payment. If there are multiple protocols supported, see the data.address.alternatives
array below
data.address.address
string
The payment address. This is the address that the customer specified as their wallet address
data.address.tag
string
This is a payment destination tag. This fields isn't null
when the paidCurrency.currency
vlau is XRP
. A destination tag should be viewable to the customer as destination tags indicate the beneficiary or destination for a payment. For example, a payment to an exchange or gateway address can use a destination tag to indicate which customer to credit for the amount of the payment in that business's own systems. A payment to a merchant could indicate what item or cart the payment is buying
data.address.uri
string
The destination address URI
data.address.alternatives[]
array
Fields are the same as in the case of the data.address
array
data.redirectUrl
string
URL to the payment page that you can redirect your customers to
data.returnUrl
string
URL that the customer will be redirected to if they click a "Back to Merchant" button on the payment page
data.transactions[]
array
Contains data about cryptocurrency transactions and exchange rates
data.transactions[].dateCreated
long
Cryptocurrency transaction detection timestamp
data.transactions[].dateConfirmed
long
Cryptocurrency transaction confirmation timestamp
data.transactions[].hash
string
Cryptocurrency transaction hash
data.transactions[].amount
big decimal
Cryptocurrency transaction amount
data.transactions[].risk
object
Cryptocurrency transaction risk details
data.transactions[].risk.level
string
Cryptocurrency transaction risk levl. Can unknonw
, low
, medium
or high
data.transactions[].resourceName
string
Cryptocurrency transaction resource name
data.transactions[].risk.resourceCategory
string
Cryptocurrency transaction resource category
data.transactions[].netwokFeeCurrency
string
Cryptocurrency transaction network fee details
data.transactions[].networkFeeAmount
big decimal
Network fee amount
data.transactions[].sources
array, string
The wallet addresses that the cryptocurrency transaction was sent from
data.transactions[].exchangeRate
object
The exchange rate that was used to convert cryptocurrency to the wallet currency
data.transactions[].exchangeRate.base
string
Base currency
data.transactions[].exchangeRate.counter
string
Counter currency
data.transactions[].exchangeRate.rate
big decimal
Exhange rate
data.transactions[].displayRate
object
The display rate
data.transactions[].displayRate.base
string
Base currency
data.transactions[].displayRate.counter
string
Counter currency
data.transactions[].displayRate.rate
big decimal
Rate
Last updated