Withdrawals
Withdrawal Completed
POST
Notifies the status of an outgoing withdrawal.
Body
{
"messageId": "123e4567-e89b-12d3-a456-426614174000",
"messageType": "WITHDRAWAL_COMPLETED",
"messageTime": "2023-12-14T01:24:03.102Z",
"message": {
"transactionType": "WITHDRAWAL",
"status": "WITHDRAWAL_COMPLETED",
"withdrawalId": "a306b284-9467-4fdb-9096-9c5a1d38efda",
"customerId": "3a4dcd44-adb0-51e2-a360-1033487b8e3c",
"accountId": "79baa7ee-0f0c-4388-a0ba-1c17e1563df8",
"withdrawalCurrency": "USD",
"netWithdrawalQuantity": 180.00,
"withdrawalFeeType": "FIXED",
"withdrawalFeeRate": 0,
"withdrawalFeeQuantity": 0.00,
"withdrawalFeeCurrency": "USD",
"memo": "Converted 180.00 USD to 720.00 AED at rate of 4.",
"clientMemo": "client-sent-memo",
"grossWithdrawalQuantity": 180.00,
"tradeBalance": 193.9825,
"availableToWithdraw": 193.9825,
"requestedAt": "2025-08-13T19:52:52.317Z",
"completedAt": "2025-08-13T19:55:52.078Z"
}
}Field Reference
Event: Notifies the status of an outgoing withdrawal. This notification triggers across all supported transactional rails, specifically including:
Crypto Withdrawals: An outgoing transaction that transfers digital assets (such as native coins like BTC or stablecoins like USDC) from the platform over a public or private blockchain network to an external wallet address. (e.g. Transferring 0.5 BTC or 10 ETH to external blockchain wallets, or moving 50,000 USDC or USDT treasury stablecoins across networks).
Fiat Withdrawals: An outgoing transaction that moves traditional, state-issued currency (such as USD, EUR, or CAD) from the platform ledger back into corporate banking rails using institutional networks like Fedwire, SEPA, or EFT. (e.g. Payouts of $100,000 USD sent over corporate banking systems like Fedwire, or moving EUR and CAD using SEPA or EFT rails).
message header
messageId
UUID (string)
Unique identifier for this webhook message.
messageType
string
Event type identifier. Value: WITHDRAWAL_COMPLETED.
messageTime
ISO 8601 datetime
Timestamp when the webhook message was generated.
message
object
Payload containing withdrawal details (see below).
message object
transactionType
string
Type of transaction. Value: WITHDRAWAL.
status
string (enum)
Current status of the withdrawal. One of the following:
WITHDRAWAL_FAILED: Applicable to both. Crypto can fail due to gas/network errors; fiat can fail due to banking rejection or compliance holds.WITHDRAWAL_PROCESSING: Applicable to both. For crypto, it means it is broadcasted/confirming on-chain. For fiat, it represents bank wire processing windows.WITHDRAWAL_COMPLETED: Applicable to both. Signifies immutable settlement on the blockchain (crypto) or finalized bank clearance (fiat).
withdrawalId
UUID (string)
Unique identifier for the withdrawal transaction.
customerId
UUID (string)
Identifier of the customer requesting the withdrawal.
accountId
UUID (string)
Identifier of the account debited by the withdrawal.
withdrawalCurrency
string
Currency code of the withdrawal (e.g. USD).
netWithdrawalQuantity
number
Amount withdrawn after fees.
withdrawalFeeType
string
Type of fee applied. Value: FIXED.
withdrawalFeeRate
number
Fee rate applied (0 for fixed fees).
withdrawalFeeQuantity
number
Fee amount charged for the withdrawal.
withdrawalFeeCurrency
string
Currency code of the fee.
memo
string
System-generated memo describing the withdrawal (e.g. conversion details).
Note:
This reference is dynamically generated by the Aquanow core system ledger. From a client perspective, developers and treasury apps use this internal string for systemic, end-to-end reconciliation across API audit trails and webhooks.
clientMemo
string
Client-provided memo/reference tag for the withdrawal.
grossWithdrawalQuantity
number
Total withdrawal amount before fees.
tradeBalance
number
Account's total trade balance after the withdrawal.
availableToWithdraw
number
Amount available for withdrawal after this transaction.
By definition:
tradeBalanceis the complete, nominal balance remaining allocated to the account for active trading or market-making immediately after the withdrawal is debited.availableToWithdrawis the actual subset of remaining funds free to leave the platform. This amount may be lower than the tradeBalance if funds are temporarily locked due to active open orders, margin requirements, or risk holds.
requestedAt
ISO 8601 datetime
Timestamp when the withdrawal was requested.
completedAt
ISO 8601 datetime
Timestamp when the withdrawal was completed.
FIAT Withdrawal Failed
POST
Notifies that an outgoing fiat withdrawal attempt has failed and could not be completed, along with the reason and the resulting account balances.
Body

Field Reference
Event: Notifies that an outgoing fiat withdrawal has failed and could not be completed.
message header
messageId
UUID (string)
Unique identifier for this webhook message.
messageTime
ISO 8601 datetime
Timestamp when the webhook message was generated.
messageType
string
Event type identifier. Value: FIAT_WITHDRAWAL_FAILED.
message
object
Payload containing withdrawal failure details (see below).
message body
withdrawalId
UUID (string)
Unique identifier for the withdrawal transaction.
customerId
UUID (string)
Identifier of the customer who requested the withdrawal.
accountId
UUID (string)
Identifier of the account debited (or intended to be debited) by the withdrawal.
clientMemo
string | null
Client-provided memo/reference tag for the withdrawal, if any.
errorMessage
string
Human-readable description of the failure reason (e.g. "Withdrawal failed"). [CONFIRM: verify whether this field returns more specific failure reasons in other scenarios (e.g. insufficient funds, invalid destination), or if it is always this generic message.]
failedAt
ISO 8601 datetime
Timestamp when the withdrawal failed.
status
string (enum)
Current status of the withdrawal. Value: WITHDRAWAL_FAILED.
tradeBalance
number
Account's total trade balance after the failed withdrawal (funds returned/unreserved).
availableToWithdraw
number
Amount available for withdrawal after the failed attempt.
Last updated