Environment: Fireblocks Sandbox / testnet (Sepolia)
I’m integrating Fireblocks transaction‑creation webhooks (transaction.created and transaction.status.updated) into my backend to automatically credit user balances for incoming ERC‑20 deposits. However, I’m seeing inconsistent assetId values for ERC‑20 transfers on testnet, which makes it impossible to reliably identify the correct token on my side.
Setup
-
Workspace: Sandbox / testnet.
-
Blockchain/network: Ethereum Sepolia / Arbitrum Sepolia testnet.
-
Vault account: One ETH‑based vault with three different ERC‑20 tokens configured on top of the same base chain.developers.
-
All tokens in this vault share the same deposit address, derived from the underlying ETH wallet (standard Fireblocks behavior for EVM tokens).
-
Example token configuration:
-
One wallet uses
USDC_ARB_SEPOLIA_V84S(USDC on Arbitrum Sepolia). -
Other ERC‑20 tokens are configured on the same vault and share the same deposit address.
-
Observed behavior
When I send an ERC‑20 transaction to the vault (e.g. to the USDC_ARB_SEPOLIA_V84S wallet), the webhook payload I receive from Fireblocks shows a different asset ID in the transaction details than the token that was actually used:
-
The webhook event is
transaction.createdortransaction.status.updated. -
In the
data.transactionDetailsobject, theassetIdfield is notUSDC_ARB_SEPOLIA_V84Sas expected, but insteadUSDC_ETH_TEST5_0GER(or another base‑chain/test asset ID). -
This
assetIdvalue appears to correspond to a different ETH‑based USDC test asset rather than the concrete Arbitrum Sepolia token that was sent.
Because all three ERC‑20 tokens share the same vault deposit address, I cannot distinguish which token was actually deposited based only on:
-
The destination address (same for all ERC‑20 tokens on that vault).
-
The returned
assetIdwhen it points to the base asset or to the wrong testnet variant.
In my backend, the only reliable way to credit the correct currency is to know the precise Fireblocks asset ID of the ERC‑20 token that was sent (e.g. USDC_ARB_SEPOLIA_V84S vs USDC_ETH_TEST5_0GER vs other tokens configured in the same vault). If the webhook’s assetId does not match the token that actually arrived on‑chain, then my internal asset mapping breaks.
Questions
-
In this testnet setup, which field in the webhook payload should be used as the authoritative Fireblocks asset ID for the deposited ERC‑20 token:
data.assetId, or another property? -
Is the behavior where
transactionDetails.assetIdreturnsUSDC_ETH_TEST5_0GERinstead ofUSDC_ARB_SEPOLIA_V84Sexpected on testnet, or is this a misconfiguration / bug? -
Is there any additional configuration required (per‑token vault setup, network connection settings, token linking, etc.) to ensure that ERC‑20 deposits in a multi‑token vault always expose the correct token‑level asset ID in webhooks?
-
What is the recommended best practice for mapping incoming ERC‑20 deposits to specific Fireblocks asset IDs in a scenario where several tokens share the same EVM address on testnet?