An emergency halt stops every holder transfer, mint, burn and redeem on one asset until an authorised operator resumes token operations. A custodian's forced transfer and a lost-wallet recovery still run while it is halted. The contract and API call this state paused. A partial freeze holds back a stated amount at one address so those units cannot move, while transfers continue everywhere else. Halt when the concern is with the asset itself, for example a suspected issue with the contract. Freeze when the concern is with one holder's position and the rest of the market should keep trading.
Forced transfer sits in the same menu and moves tokens out of a holder's address without consent. It cannot be undone, and Transfers covers it. To stop one wallet on every token it holds, use Restrict a wallet. It freezes the address on each token where you hold the custodian role with one request, stores a reason, and lifts the freezes together. Each token it freezes then lists the wallet on its Blocklist tab.
The “Emergency halt token operations” page shows the “State change” card, with the “Current state” “Active” next to the “Target state” “Halted”.
The Emergency halt button on that page submits the change after wallet verification.
Steps
Open the control
Open “All assets”, select the asset, and open Actions. Each action opens on its own page under the asset, with a breadcrumb back to the asset, and “Cancel” returns you to where you came from. Pick the control that fits the intervention:
- Choose Emergency halt or “Resume token operations” for the whole asset. The menu shows whichever one the current state allows.
- Choose Freeze partial balance or “Unfreeze partial balance” for a specified amount at one address.
- To freeze or release part of several balances at once, tick the holders on the “Holders” tab and choose Freeze or “Unfreeze”, as Holder register describes.
On a live asset, “Actions” lists “Emergency halt” for the whole asset and “Freeze partial balance” and “Unfreeze partial balance” for one address, among the other controls.
Halt or resume the asset
There is no address or amount to enter. Read the State change card, which shows the asset's current state next to the state your change produces, both drawn from what the Console knew when the page opened. The comparison cannot see a change a colleague makes after the page opens, so the page also asks the platform whether the change would be refused now and shows the reason, for example that your wallet does not hold the Emergency role. When a colleague has already halted or resumed the asset, the card shows the asset's actual state on both sides and the page says so plainly, for example “Bond A is already halted, so there is nothing to change.” The submit button stays disabled until the check passes. When the check cannot run, the page says so and the change is still checked when you confirm.
Select Emergency halt or “Resume token operations” and confirm with your wallet verification. The contract changes only the halt state and moves no tokens.
Freeze part of a balance
Enter the target address and amount, choose the reason and optionally add a note, then select Review and confirm with your wallet verification. The platform records the reason and note in the audit trail. Under the amount, a line shows its fiat equivalent at the token's price, for example “≈ $2,000.00”. When the token has no price, the line says that no price is set for the token, so there is no fiat equivalent.
The “Details” step shows the required “Address to freeze”, “Amount to freeze” and “Reason” fields, then the optional “Note” field with its 500-character limit.
Review stays disabled until the required fields are filled.
The amount you can freeze is capped at that address's available balance, its total balance minus whatever is already frozen there. The contract rejects a freeze that asks for more than that remainder instead of freezing what it can. To freeze everything the address holds, enter its available balance. The part already frozen stays frozen. An unfreeze is capped at what is frozen at that address, and you can release any amount up to that total in one request. Releasing a freeze does not increase the holder's total balance.
An emergency halt does not block the freeze controls: freeze and unfreeze carry no halt check in the Console or in the contract, so a custodian can still freeze or release a balance while the asset is halted. When the intervention needs both, the order does not matter.
The “Block” and “Unblock” sheets on the asset's Blocklist tab, which freeze or unfreeze every token of one address, check the change before the PIN. While you fill in the address, the sheet asks the platform whether the change would be refused now, for example because your wallet does not hold the Custodian role on the asset, and shows the reason and the fix. “Review” stays disabled until the check passes. “Unblock” is refused while an active wallet restriction covers the address on this asset, because unfreezing one token would undo part of the restriction. Lift the restriction instead. The Platform API answers the same request with 409 TOKEN_.
Through the Platform API, these routes require a reason, which is a reason code and a note of up to 500 characters:
- An address freeze,
PUT /api/.v2/ tokens/ {asset Id}/ address- freezes - A partial freeze,
POST /api/.v2/ tokens/ {asset Id}/ partial- freezes - A partial unfreeze,
POST /api/.v2/ tokens/ {asset Id}/ partial- unfreezes - A batch partial freeze or unfreeze,
POST /api/.v2/ tokens/ {asset Id}/ partial- freezes/ transitions
The note is optional, except for the code other, which needs one. A request without a reason is refused. The platform stores it with the freeze or unfreeze and records it in the audit trail, and Reason codes lists the seven codes.
Reverse a control or force a transfer
A halt, resume, freeze or unfreeze is reversed by its opposite transaction: resume undoes a halt and unfreeze releases a frozen amount. The opposite transaction needs the same role, your wallet verification and gas, and the contract enforces no cooldown. Transfers that reverted while the asset was halted stay reverted.
Forced transfer is the one control in the menu that moves tokens. It runs while the token is halted, ignores a block on the sending address and skips the compliance modules. It still checks the receiving wallet's identity and refuses a blocked receiving address. A freeze does not block it either: if the free balance is too small, the operation unfreezes enough units to cover the shortfall, then moves the tokens, and the remaining frozen balance stays frozen. The forced transfer form shows the sender's frozen amount in the pre-check and, on the review step, how much of the freeze the transfer releases, before you enter your wallet verification. A lost-wallet recovery also runs while the token is halted. Use freeze to hold a balance in place, and use forced transfer only when tokens must move out of a wallet regardless of who holds them or what is frozen there.
Freeze and forced transfer both need the custodian role: a freeze restricts a balance until unfrozen, and a forced transfer moves it with no undo control.
What a halt and a freeze leave unchanged
A halt and a resume leave every recorded balance unchanged. The halt check runs when a transfer executes on chain, not when it is submitted. A transfer that is still unmined when the halt lands reverts. It does not queue or wait for operations to resume. A partial freeze does not stop the frozen address from receiving new tokens, only from moving the frozen portion out. Every confirmed halt, resume, freeze and unfreeze appears as its own entry on the asset's Activity tab with the transaction hash and the sending wallet. Auditors with access to the asset, and anyone reading the chain, can see when a control changed and which wallet changed it.
Troubleshooting
The control is missing
Freeze and unfreeze only appear on an asset that carries the custodian capability, and forced transfer needs the same capability. A DALP asset always carries these controls in its contract, and only a token of an older asset family can lack them. A control is also absent when none of your wallets holds its role on this asset: the emergency role for emergency halt and resume, the custodian role for freeze, unfreeze and forced transfer. Confirm the asset's configured capabilities and your roles before you assume the control has moved somewhere else.
The control cannot be selected
The role for the control sits on another of your wallets. The menu names that wallet: “The role for this action sits on wallet”, the address, then “Switch to that wallet to use it.” Switch the wallet that signs your actions, which is the wallet of the participant you are working as, to the one the menu names. Roles are asset-scoped, so a role on one asset does not carry to another.
Two operators change the emergency state at once
If a colleague halts or resumes the asset after you open the page, the page still shows the state it read when it opened. The platform refuses your change before anything is queued with DALP-9488, HTTP 409. A request that reaches the chain anyway fails there: a halt that finds the asset already halted fails with DALP-1109, and a resume that finds it already active fails with DALP-9059. An asset on an older token implementation reports the two codes the other way round. The Console shows the same message for every case: the asset's name followed by “is already halted. Nothing was changed.” or “is already active. Nothing was changed.” There is nothing to undo. Refresh the token page and check that the status badge shows the state you wanted.
A partial freeze fails
The requested amount exceeds the address's available balance, its total balance minus whatever is already frozen there. Check the Holders tab for the address's current available amount before you retry, and freeze that amount or less. To freeze the whole current balance, freeze its available portion. The existing frozen portion already remains blocked.
An unfreeze fails
The requested amount exceeds what is frozen at that address. Open Holders and read the address's frozen amount before you retry. You can only unfreeze up to that figure, never more, even if the total balance is larger.
Frequently asked questions
Can I halt transfers for one holder instead of the whole asset?
An emergency halt applies to the whole asset. To restrict one holder, use a partial freeze. If that holder then tries to move more than the freeze left free, the refusal does not mention the freeze. The platform refuses the transfer before signing with an ordinary insufficient-balance error, DALP-9482, and a transfer that reaches the chain reverts with DALP-1101. Both report an available balance that already has the frozen amount subtracted, so it reads lower than the units the holder has. To stop the holder's whole wallet on every asset it holds, restrict the wallet instead.
Can I freeze balances at more than one address in a single request?
Yes. On the “Holders” tab, tick the holders and choose Freeze or “Unfreeze”. Every selected holder needs a balance that is not frozen for a freeze, or a frozen balance for an unfreeze, and the action needs the custodian role. The “Freeze partial balance” entry in “Actions” targets one address and one amount. The reverse case, one wallet on many tokens, has its own control, Restrict a wallet.
Who can unfreeze tokens that another administrator froze?
Any holder of the Custodian role on that asset can unfreeze, including a different account from the one that froze. The role is scoped to the asset, not to the operator who acted first, so a second custodian-role holder can review and reverse a colleague's freeze without needing the first operator's wallet or involvement. Check Holders for the current frozen amount before you unfreeze, since another operator may have already changed it.
Does a partial freeze stop a burn or redemption?
A partial freeze stops a holder's own redemption but not an administrative burn. A redemption the holder submits, including a redemption at maturity, reverts like an ordinary transfer if it needs more than the free balance: the frozen amount stays exactly as it was, and the redemption fails rather than reaching into it. The underlying administrative burn behaves like a forced transfer: short on free balance, it draws down enough of the frozen amount to cover the difference and completes anyway, leaving less frozen than before. The Console's burn form works the same way: it offers the holder's total balance, frozen units included. A full freeze, which lists the address on the Blocklist tab, does stop the administrative burn: the chain refuses to burn from a frozen address with DALP-1076. To take the units, a custodian forced-transfers them out of the frozen address first, or lifts the freeze.