Key Dates
What This Means for You
New Wallets
- A wallet created with
POST /v2/users/{userId}/wallets/externalstarts inactive (active: false,screeningStatus: UNDER_REVIEW). - It turns on only when it is
CLEARED. Wait forCLEAREDbefore using it as a transfer destination or as theexternalWalletIdof a virtual account. - Any transfer to a wallet that isn’t active is rejected.
Existing Wallets
- They keep working as usual until Wednesday, November 11, 2026.
- Re-submit each one you still use before then (see below). It stays active while under review.
- From Wednesday, November 11, 2026, any wallet that isn’t
CLEAREDis deactivated. To use it again, register it with a newreferenceIdand wait for it to clear.
Flagged Wallets
- A
FLAGGEDwallet is deactivated immediately, at any time, including existing wallets before November 11. - It is blocked from all transactions and can’t be linked to a virtual account.
Raw Addresses
- From Wednesday, November 11, 2026, every destination must be a registered external wallet.
- Crypto transfers and bridging that send to
destination.walletAddresswill be rejected. Register the address as an external wallet, wait for it to clear, and send todestination.externalWalletIdinstead.
Re-submitting an Existing Wallet
Send the original registration request again, unchanged. The wallet keeps itsid and keeps working while it is screened.
1
Call the external wallet endpoint
Call
POST /v2/users/{userId}/wallets/external for the same user.2
Send the original values
Send the same
referenceId, address, chain and name as the original registration.3
Confirm the wallet is under review
The response returns the same wallet
id with screeningStatus: UNDER_REVIEW and active: true.4
Wait for the webhook
Wait for the
WALLET.EXTERNAL_WALLET.UPDATE webhook. CLEARED means you’re done; FLAGGED means the wallet is now deactivated.Changing the address, chain or name returns a
400 EXTERNAL_WALLET_ALREADY_EXISTS error. Deleted wallets can’t be re-submitted; register them again with a new referenceId.Screening Status and Webhooks
The external wallet response now includesscreeningStatus next to active. Use active to decide whether a wallet can be used.
When a wallet’s status changes, we send a
WALLET.EXTERNAL_WALLET.UPDATE webhook with the updated wallet (id, userId, chain, name, address, referenceId, active, screeningStatus, createdAt, updatedAt).
No webhook is sent when wallets are deactivated on November 11. Check
active on your wallets after that date.Virtual Accounts
A virtual account created with anexternalWalletId follows that wallet’s status. If the wallet is blocked, deposits are not delivered.
- You can only set
externalWalletIdto an active wallet. For a new wallet, wait forCLEARED. - If the linked wallet is later flagged, deactivated on November 11, or deleted, new deposits fail instead of being delivered.
- A failed deposit’s onramp ends as
FIAT_FAILEDwith errorEXTERNAL_WALLET_INACTIVE(“External wallet is not active”), and you’ll get the usual onramp status webhook. No crypto is sent. - To keep receiving deposits, update the virtual account to point to a wallet that has cleared.
- Virtual accounts that deliver to the user’s HIFI wallet (
destinationChainwith noexternalWalletId) are not affected.
Testing and Common Errors
You can test the full flow in sandbox now. The walletname picks the result:
Getting Help
- 📧 Email: support@hifi.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Wallets - Wallet provisioning, balances, and transfers
- Wallet Events - Wallet webhook notifications
- Virtual Accounts - Set up fiat onramps to wallets
- Transfers - Send stablecoins between wallets