Account Funding Transaction Updates

Platform’s leveraging the Account Funding endpoints can subscribe to webhooks to receive real-time updates. There are the following scenarios:

Webhook ScenarioDescriptionExact reason text
CompleteThe Fund Event has completed successfully. The deposited crypto has been automatically and successfully converted to fiatn.a
Not complete - Asset not supported by the Account Funding productThe Fund Event was not completed successfully. The crypto asset deposited is no longer supported by the productasset deposited is not supported by the fund workflow. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Asset not supported by the PlatformThe Fund Event was not completed successfully. The crypto asset deposited is no longer supported by the product.asset deposited is not supported by your Platform. The deposit has not been converted to fiat and the crypto has been credited to the customer's account.
Not complete - Platform not enabledThe Fund Event was not completed successfully. The Platform is no longer configured to use the product.deposit to an account associated with a platform not enabled on the fund workflow. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Customer not in an approved statusThe Fund Event was not completed successfully. The participant_code associated with the Fund Event is not in an approved status.the customer was not in an approved state at the time of deposit. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Deposit above maximumThe Fund Event was not completed successfully. zerohash offers the ability for platforms to define a maximum deposit amount. If that's exceeded upon a deposit, the Platform will receive a webhook.deposit above maximum threshold. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Deposit below minimumThe Fund Event was not completed successfully. zerohash offers the ability for platforms to define a minimum deposit amount. If the deposit is below that figure, the Platform will receive a webhook.deposit below minimum threshold. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Deposit not converted due to depegStablecoins are only auto-converted to fiat when the stablecoin is properly pegged to it's reference asset. If a stablecoin is received and it is deemed depegged, the auto-conversion will not take place and the Platform will receive a webhook.conversions are currently halted. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Deposit not converted due to compliance reasonsThere are certain compliance-related scenarios that will lead to a failed fund event. If they are triggered, funds will not sit in the Customer's account, but will instead be converted to a zerohash-controlled holding accountFor Zero Hash Compliance reasons, the deposit has not been converted to fiat and the crypto has been credited to a Zero Hash holding account
Not complete - Currency mismatchThe Fund Event was not completed successfully. Currency deposited is different from the one requested.deposit currency does not match the fund's underlying currency. The deposit has not been converted to fiat and the crypto has been credited to the customer's account
Not complete - Fund event expired - No deposit receivedThere was not a successful fund event within 30 minutes of JWT generationdeposit session has expired.
Pending - Waiting for Name MatchApplicable to the Travel Rule-Based Account Matching "Processing" feature only.Deposit received, but the PII name match process has not been conducted yet.deposit received, however the Travel Rule-based account match has not completed yet
Not complete - Name Match Failed

Applicable to the Travel Rule-Based Account Matching "Processing" feature only.

Deposit received, but the Travel Rule-based account match failed, preventing conversion to fiat.

Travel Rule-based account match failed
Not complete - Name Match Time Out

Applicable to the Travel Rule-Based Account Matching "Processing" feature

Deposit received, but the Travel Rule-based account match timed out.

Travel Rule-based account match timed out

Field Definitions:

FieldDescriptionAlways Present?Type
participant_codeEnd customer's participant codeYesstring
fund_assetThe crypto asset that was sent by the end customer in order to fund an accountYesstring
rateThe rate at which the fund_asset was liquidated atNo - only present if the Fund Event was successful and the asset was convertedstring
quoted_currencyThe asset that the provided rate was denominated in, and will ultimately be converted into automatically upon a depositNo - only present if the Fund Event was successful and the asset was convertedstring
source_addressThe address that the end customer deposited the crypto asset fromYesstring
deposit_addressThe address that the end customer deposited the crypto asset toYesstring
quantityThe amount, denominated in the fund_asset, that was fundedNo - only when a deposit is receivedstring
notionalThe conversion amount denominated in the quoted_currency, lessNo - only present if the Fund Event was successful and the asset was convertedstring
fund_idThe zerohash-generated unique identifier associated with a fund eventYesstring
fund_timestampThe UNIX timestamp of when the fund event was completedNo - only present if the Fund Event was successful and the asset was convertednumber
deposit_timestampThe UNIX timestamp of when the deposit is confirmedYesnumber
transaction_idThe on-chain transaction id associated with the depositYesstring
account_labelThe account_label where the deposit was credited toYesstring
successA boolean field to indicate the success of the transactionYesstring
reasonReason that the fund event failedNo - empty if success = true. Populated only if success = false with failure reason.string
reference_idplatform provided id for the transaction

No - only present if:
1 - a reference_id is supplied when invoking the Account Funding SDK

or

2 - a client_fund_id is supplied when calling the POST /fund/rfq endpoint

string
raw_fee_bpsInitial fee rate expressed in basis pointsNo - only present if the Fund Event was successful and the asset was convertedstring
raw_fee_notionalActual fee amount calculated directly from the RawFeeBPSNo - only present if the Fund Event was successful and the asset was convertedstring
deposit_fee_bpsEffective fee rate in basis points that was actually applied after minimum floors were consideredNo - only present if the Fund Event was successful and the asset was convertedstring
deposit_fee_notionalFinal fee amount that will actually be charged to the participantNo - only present if the Fund Event was successful and the asset was convertedstring
deposit_fee_typeThe fee model applied to this transaction. Values: flat and tiered.No - only present upon a successful Fund Event and asset conversion, provided a fee type is configuredstring
deposit_intent_idThe identifier for the deposit session/intentNo - only present upon a successful Fund Event and asset conversion, provided a the deposit intent feature is configuredstring
fee_tier_breakdownBreakdown of how the fee was calculated across tiersNo - only present upon a successful Fund Event and asset conversion, provided the deposit_fee_type is tieredarray
fee_tier_breakdown\[].tierThe tier number (1-based)No - only present upon a successful Fund Event and asset conversion, provided a the Platform is configured for Tiered Feesnumber
fee_tier_breakdown\[].amount_in_tierThe deposit amount (in quoted_currency) that fell into this tierNo - only present upon a successful Fund Event and asset conversion, provided a the Platform is configured for Tiered Feesstring
fee_tier_breakdown\[].fee_bpsThe fee rate in basis points applied for this tierNo - only present upon a successful Fund Event and asset conversion, provided a the Platform is configured for Tiered Feesnumber
fee_tier_breakdown\[].fee_amountThe fee amount calculated for this tierNo - only present upon a successful Fund Event and asset conversion, provided a the Platform is configured for Tiered Feesstring

Payloads

Complete Example

{
   "participant_code": "CUST01",
   "fund_asset": "USDC.ETH",
   "rate": "1",
   "quoted_currency": "USD",
   "source_address": "0x3A45a60c62EE6cD616B1C4510404Eba88116044I",
   "deposit_address": "0x34f53Aea3ba8b60B0ed19106baF43A4f3F73f248",
   "quantity": "10000",
   "notional": "9940.35",
   "fund_id": "5155f7c9-95cb-4556-ab89-c178943a7111",
   "fund_timestamp": 1750404905186631445,
   "deposit_timestamp": 1750404905037719568,
   "transaction_id": "a07407e8f98c21b037b4aa0cbc852b8489c5e122fcc3d4b33b7827d0605ad8ff",
   "account_label": "general",
   "success": true,
   "reference_id": "d098e59b-8023-4477-8b63-68fda3c53a30",
   "raw_fee_bps": "35",
   "raw_fee_notional": "34.65",
   "deposit_fee_bps": "35",
   "deposit_fee_notional": "34.65",
   "deposit_intent_id": "a6a39fb8-4089-4d85-ab19-52eacd096d23",
   "deposit_fee_type": "tiered",
   "fee_tier_breakdown":[
      {
         "tier": 1,
         "amount_in_tier": "5000",
         "fee_bps": 40,
         "fee_amount": "19.80"
      },
      {
         "tier": 2,
         "amount_in_tier": "5000",
         "fee_bps": 30,
         "fee_amount": "14.85"
      }
   ]
}

Not complete - Asset not supported by the Account Funding product

{
    "participant_code": "5OPRCP",
    "fund_asset": "USDC.ARBITRUM",
    "source_address": "external",
    "deposit_address": "0xa298a16a78654F4D8567169833987a54caCf144e",
    "quantity": "1.000000",
    "fund_id": "a393631e-7b7f-4a76-a99a-bb467df9960f",
    "deposit_timestamp": 1777998929579466581,
    "transaction_id": "0xbe890f510797d12da67fc6f71bc786cba27c54239511c80e9865f0a7012b81ba",
    "account_label": "general",
    "success": false,
    "reason": "asset deposited is not supported by the fund workflow. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
    "reference_id": "a293f8a8-495f-45f4-880e-d4d30aef5659",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "c635e835-84a3-48aa-99f1-7ede9d9a0f0e"
  }

Not complete - Asset not supported by the Platform

{
  "participant_code": "CUST01",
  "fund_asset": "SOL",
  "quoted_currency": "USD",
  "source_address": "0x3A45a60c62EE6cD616B1C4510404Eba88116044I", 
  "deposit_address": "0x34f53Aea3ba8b60B0ed19106baF43A4f3F73f248",
  "quantity": "100",
  "fund_id": "5155f7c9-95cb-4556-ab89-c178943a7111",
  "deposit_timestamp": 1750412525409770895,
  "transaction_id": "a07407e8f98c21b037b4aa0cbc852b8489c5e122fcc3d4b33b7827d0605ad8ff",
  "account_label": "general",
  "success": false,
  "reason" : "asset deposited is not supported by the fund workflow. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
  "raw_fee_bps": "0",
  "deposit_fee_bps": "0",
  "raw_fee_notional": "0.00",
  "deposit_fee_notional": "0.00"
}

Not Complete - Platform not enabled

{
  "participant_code": "CUST01",
  "fund_asset": "USDC.ETH",
  "quoted_currency": "USD",
  "source_address": "0x3A45a60c62EE6cD616B1C4510404Eba88116044I", 
  "deposit_address": "0x3A45a60c635E6cD616B1C4510404Eba88116050C",
  "quantity": "100",
  "fund_id": "5155f7c9-95cb-4556-ab89-c178943a7111",
  "deposit_timestamp": 1750412525409770895,
  "transaction_id": "a07407e8f98c21b037b4aa0cbc852b8489c5e122fcc3d4b33b7827d0605ad8ff",
  "account_label": "general",
  "success": false,
  "reason" : "deposit to an account associated with a platform not enabled on the fund workflow. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
  "raw_fee_bps": "0",
  "deposit_fee_bps": "0",
  "raw_fee_notional": "0.00",
  "deposit_fee_notional": "0.00"
}

Not complete - Customer not in an approved status

{
  "participant_code": "CUST01",
  "fund_asset": "SOL",
  "quoted_currency": "USD",
  "source_address": "0x3A45a60c62EE6cD616B1C4510404Eba88116044I", 
  "deposit_address": "0x34f53Aea3ba8b60B0ed19106baF43A4f3F73f248",
  "quantity": "100",
  "fund_id": "5155f7c9-95cb-4556-ab89-c178943a7111",
  "deposit_timestamp": 1750412525409770895,
  "transaction_id": "a07407e8f98c21b037b4aa0cbc852b8489c5e122fcc3d4b33b7827d0605ad8ff",
  "account_label": "general",
  "success": false,
  "reason" : "the customer was not in an approved state at the time of deposit. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
  "raw_fee_bps": "0",
  "deposit_fee_bps": "0",
  "raw_fee_notional": "0.00",
  "deposit_fee_notional": "0.00"
}

Not Complete - Deposit above maximum

{
    "participant_code": "VJ98BP",
    "fund_asset": "USDC.ETH",
    "source_address": "external",
    "deposit_address": "0x907063d3E932d4B8dE71e8a608f02232DC994062",
    "quantity": "6000.000000",
    "fund_id": "3a025abf-e6ef-4969-b52d-fef114159ac3",
    "deposit_timestamp": 1777998962686403916,
    "transaction_id": "0x8294eb714c302c7051e625133156448f8379d67cbb8dd499de2b8732e4979390",
    "account_label": "general",
    "success": false,
    "reason": "deposit above maximum threshold. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
    "status_reason_code": "AMOUNT_ABOVE_MAXIMUM",
    "reference_id": "cf9a16d1-3f34-4a57-9c29-cbfd7aab6786",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "d83f0a87-bded-48fc-a5b7-f6b18507289c"
  }

Not Complete - Deposit below minimum

{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "0.000010000",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "deposit below minimum threshold. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Not Complete - Deposit not converted due to depeg

{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "0.000010000",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "USDC conversions are currently halted. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Not Complete - Deposit not converted due to compliance reasons

{
    "participant_code": "2A0BGG",
    "fund_asset": "SOL.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "0.000010000",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "For Zero Hash Compliance reasons, the deposit has not been converted to fiat and the crypto has been credited to a Zero Hash holding account",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
}

-- Note: "USDC" from the `reason` above is variable depending on the fund_asset

Not Complete - Currency mismatch

{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "0.000010000",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "deposit currency does not match the fund's underlying currency. The deposit has not been converted to fiat and the crypto has been credited to the customer's account",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Fund event expired - No deposit received

{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "-",
    "deposit_address": "-",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "",
    "account_label": "general",
    "success": false,
    "reason": "deposit session has expired.",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Pending - Waiting for Name Match


{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "3500.00",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "deposit received, however the Travel Rule-based account match has not completed yet",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Not complete - Name Match Failed


{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "10.00",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "Travel Rule-based account match failed",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "74f49473-5675-4df8-80a3-6cd15395acfa"
  }

Not complete - Name Match Time Out


{
    "participant_code": "2A0BGG",
    "fund_asset": "USDC.SOL",
    "source_address": "QVtWcAX3R7Cr51VhAxFSYntoCAmTQzK8Hf4R1TrKNQ4",
    "deposit_address": "6ff9BsmQQbQt3B8nZM7GgYZqjrJs5VCwuTG5dm4W1iFf",
    "quantity": "10.00",
    "fund_id": "b7e449a1-3535-4255-ae02-30b1fee99087",
    "deposit_timestamp": 1777998906294736142,
    "transaction_id": "23WxFBBxg2ByhrCCvfd8NXUh3Gxs8Bh7dMYfcP7PppssUt4CkwYM7HeYJQ7wXdiKPue1DrKA5NyrQqkZUEfGCTPv",
    "account_label": "general",
    "success": false,
    "reason": "Travel Rule-based account match failed",
    "raw_fee_bps": "0",
    "deposit_fee_bps": "0",
    "raw_fee_notional": "0.00",
    "deposit_fee_notional": "0.00",
    "source": {},
    "deposit_intent_id": "`Travel Rule-based account match timed out`"
  }