Crypto Withdrawal

Create a crypto withdrawal

Creates a crypto withdrawal to one of the authenticated merchant's crypto address book entries, with status prepared. The network fee is calculated and the balance blocked; the merchant must confirm within the confirmation window or the withdrawal auto-expires and the balance is released.

Supports the optional Idempotency-Key header so a retry won't perform the operation twice - a fresh UUID per request is recommended. See <a href="#idempotent-requests">Idempotent requests</a> for more information.

post/v3/withdrawals/crypto

Request

  • Base URL
    https://confirmo.net/api
  • URL
    https://confirmo.net/api/v3/withdrawals/crypto
  • Auth
    HTTP bearer

Request body

balanceAssetIdstring required
balanceQuantitynumber required
cryptoAddressIdstring required

The entry must be ACTIVE and designated for WITHDRAWAL.

feePaymentMode'net' | 'gross' required
notifyEmailstring email
notifyUrlstring url
referencestring

Example request

{
  "balanceAssetId": "USDC",
  "balanceQuantity": 100,
  "cryptoAddressId": "cabT4hN8vZ0aWpL",
  "feePaymentMode": "net",
  "notifyEmail": "notifyEmail@email.com",
  "notifyUrl": "https://example.com/webhook",
  "reference": "invoice-4711"
}

Response

Crypto withdrawal successfully created

addressstring
balanceAssetIdstring
createdAtinteger
debitedBalanceQuantitynumber

In net mode this is the entered amount plus the total fee; in gross mode it equals the entered amount. The amount delivered on-chain is this value minus totalFeeQuantity. In the balance asset.

enteredBalanceQuantitynumber
expiresAtinteger
feePaymentMode'net' | 'gross'
idstring
networkFeeQuantitynumber

The on-chain gas is paid in the network's native token (e.g. SOL on Solana); this is that fee recalculated into the balance asset at the current rate — i.e. what the merchant is charged for it.

networkIdstring
notifyUrlstring url
referencestring
status'prepared' | 'confirmed' | 'sending' | 'done' | 'canceled' | 'expired'
substatusstring

Set on a canceled withdrawal: rejected — it could not be processed and will not be retried, and the blocked funds have been released — or manually_canceled when a person ended it. Not every cancellation has a reason to report, so its absence is not itself information — please ask us rather than reading one into it. Treat this as an open set: new values are added as they are announced, and your integration must tolerate ones it does not recognise.

totalFeeQuantitynumber

The sum of the processing fee and the network fee (the latter recalculated from the native gas token into the balance asset). Currently equal to the network fee (processing fee is 0 at launch). The amount delivered on-chain equals debitedBalanceQuantity minus this value.

Example response

{
  "address": "0x1111111111111111111111111111111111111111",
  "balanceAssetId": "USDC",
  "createdAt": 1712311200,
  "enteredBalanceQuantity": 100,
  "expiresAt": 1712311320,
  "feePaymentMode": "net",
  "id": "cwd7Ym1kPq3aWpL",
  "networkId": "ETHEREUM-BLOCKCHAIN-MAINNET",
  "notifyUrl": "https://example.com/webhook",
  "reference": "invoice-4711",
  "status": "prepared",
  "substatus": "manually_canceled",
  "transaction": {
    "hash": "0x5c504ed432cb51138bcf09aa5e8a410dd4a1e204ef84bfed1be16dfba1b22060"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.