For the complete documentation index, see llms.txt. This page is also available as Markdown.

Withdrawals

Withdrawal Completed

POST

Notifies the status of an outgoing withdrawal.

Allowed Values: WITHDRAWAL_COMPLETED

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

Field
Type
Description

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

Field
Type
Description

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:

  • tradeBalance is the complete, nominal balance remaining allocated to the account for active trading or market-making immediately after the withdrawal is debited.

  • availableToWithdraw is 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.

Allowed Values: WITHDRAWAL_FAILED

Body

Field Reference

Event: Notifies that an outgoing fiat withdrawal has failed and could not be completed.

message header

Field
Type
Description

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

Field
Type
Description

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