# DALP-1100 to DALP-1199

Source: https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-1100-1199
Cause, fix and retry flag for every on-chain contract error with a code from DALP-1100 to DALP-1199.

This page lists the 38 errors in the contract error reference with a code from DALP-1100 to DALP-1199. Match the error's `id`, or its `dalpCode` on a contract error or a failed deployment step, for example `DALP-1100`, to the DALP Code column, then read Retryable and Suggested Fix. The [contract error reference](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference#how-to-use-this-reference) explains each column, including Severity, and the [DALP error index](https://docs.settlemint.com/docs/api-reference/errors) lists the page for every code range.

| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | Solidity Error |
| --- | --- | --- | --- | --- | --- | --- |
| DALP-1100 | This wallet is not associated with the expected identity. | The identity registry storage contract checked whether the given wallet is currently registered under the specified identity contract. The wallet's on-chain record points to a different identity, so the contract blocked the operation to prevent an incorrect lost-wallet marking. | Confirm your wallet is linked to the correct identity, or contact your administrator for assistance. | error | No | `WalletNotAssociatedWithIdentity(address,address)` |
| DALP-1101 | The account does not have enough tokens. Available: `{{available}}`, required: `{{required}}`. | The ERC-20 contract requires the account to hold at least the requested amount before a transfer or burn can proceed. For tokens with custodian controls, `{{available}}` can exclude a frozen portion of the balance. | Check the token balance and try again with a smaller amount, or acquire more tokens. | error | No | `ERC20InsufficientBalance(address,uint256,uint256)` |
| DALP-1102 | The token allowance is too low. Current allowance: `{{allowance}}`, required: `{{required}}`. | The ERC-20 contract requires a spender to have an approved allowance of at least the requested amount before it can transfer tokens on behalf of the owner. The current allowance is `{{allowance}}`, which is below the `{{required}}` needed for this transfer. | Approve a sufficient token allowance before retrying the operation. | error | No | `ERC20InsufficientAllowance(address,uint256,uint256)` |
| DALP-1103 | Contract paused. | An administrator paused this contract, which can be a token sale, a yield schedule or a dividend feature. It rejects purchases, claims and withdrawals until resumed. | Ask an administrator to resume the contract, then submit the operation again. | warning | No | `EnforcedPause()` |
| DALP-1104 | The account `{{account}}` does not have a registered identity on this platform. | The identity registry storage has no identity for `{{account}}`. Reading, updating or removing that account's identity needs one. | Register an identity for `{{account}}` first, or check the account address. | error | No | `IdentityDoesNotExist(address)` |
| DALP-1105 | The approved spending amount is not enough. Current: `{{currentAllowance}}`, required: `{{requiredAllowance}}`. | During settlement approval, the contract checks that the caller has approved enough of the asset token for the settlement contract to pull. The current allowance (`{{currentAllowance}}`) is less than the amount the settlement flow requires (`{{requiredAllowance}}`), so the contract cannot lock the tokens. | Increase the token allowance to cover the required amount, then try again. | error | No | `InsufficientAllowance(address,address,address,uint256,uint256)` |
| DALP-1106 | The amount exceeds the currently frozen token balance. Available: `{{available}}`, requested: `{{requested}}`. | The unfreeze request asks for more tokens (`{{requested}}`) than are currently held in the frozen balance for this address (`{{available}}`). The contract blocks the operation to prevent the frozen balance from going below zero. | Reduce the amount to at most the currently frozen balance, or freeze additional tokens first. | error | No | `InsufficientFrozenTokens(uint256,uint256)` |
| DALP-1107 | Identity contract address is zero. | The identity registry storage contract requires a non-zero identity contract address. The `_identity` argument passed to `addIdentityToStorage` or `updateIdentityToStorage` was the zero address. | Provide the deployed on-chain identity contract address for the wallet being registered. | error | No | `InvalidIdentityAddress()` |
| DALP-1108 | Settlement flow asset is not a valid ERC-20 token. | Each settlement flow must reference a non-zero token address that exposes the ERC-20 `decimals()` selector. | Set each flow's asset to a deployed ERC-20 token contract address and confirm the contract exposes `decimals()`. | error | No | `InvalidToken()` |
| DALP-1109 | The token's pause state does not allow this operation. | The token contract raises this error in two cases. The token is paused, and its whenNotPaused guard blocks transfers, mints and burns until an administrator resumes it; forced custodian operations are exempt. Or a halt (pause) was requested while the token is already paused. A token on an older implementation raises it for a resume (unpause) requested while the token is already active instead. | Read the token's pause state. If it is paused, submit the operation again after the token administrator resumes the token. If you asked to halt or resume it and it is already in that state, there is nothing to change. | warning | No | `TokenPaused()` |
| DALP-1110 | The compliance rules blocked this mint: the recipient does not meet the token's requirements. | One of the token's compliance rules blocked the mint. | Check the recipient's identity registration and claims, then retry. | error | No | `MintNotCompliant()` |
| DALP-1111 | Stale feed. | The price resolver read a feed whose last update timestamp is older than the configured maximum staleness window. The error returns the subject address, topic id, the feed's last updatedAt timestamp and the configured maxAge. | Wait for the price feed to receive a fresh update, then retry the operation. If the feed is consistently stale, contact the feed provider or your platform operator to investigate the oracle update frequency. | error | Yes | `StaleFeed(address,uint256,uint256,uint256)` |
| DALP-1112 | Token compliance creation failed. | The token factory called the token compliance factory to create a per-token compliance contract, but the factory returned the zero address instead of a deployed contract address. The token deployment cannot proceed without a valid compliance contract. | This is a system configuration failure. Contact your platform operator to verify that the token compliance factory is correctly deployed and that the directory points to it. | error | No | `TokenComplianceCreationFailed()` |
| DALP-1113 | Not factory token. | The migration call passed a token address that was not originally deployed by this factory. The factory tracks every token it created, and the provided address is absent from that record. | Ensure the token address belongs to this factory by checking the factory's token list. Only tokens this factory originally deployed can be migrated through it. | error | No | `NotFactoryToken(address)` |
| DALP-1114 | Only compliance engine. | An address other than the bound compliance engine called a configuration update on this module. The module restricts this operation to the engine contract it governs. | Configuration updates to this compliance module must be sent through the compliance engine that governs it. Call updateConfig via the engine, not directly on the module. | error | No | `OnlyComplianceEngine()` |
| DALP-1115 | Token registries already exist. | The registry factory already deployed per-token identity and storage registries for this token address. The registry factory enforces one set of per-token registries per token to prevent duplicate deployments. | The registry factory creates per-token registries only once per token. Retrieve the existing registries from the registry factory instead of attempting to create new ones. | error | No | `TokenRegistriesAlreadyExist(address)` |
| DALP-1116 | Token registry implementations missing. | Deploying the per-token registry factory requires all three registry implementations (token identity registry, token storage registry, and identity registry) to be present in the directory. At least one is missing. | A system administrator must register all three per-token registry implementations in the directory before the registry factory can deploy. | error | No | `TokenRegistryImplementationsMissing()` |
| DALP-1117 | Compliance module type mismatch. | Updating a compliance module implementation requires the new contract's typeId() to match the module slot being updated. The new implementation reports a different typeId (actualTypeId) than the slot's registered identifier (expectedTypeId), indicating you provided the wrong implementation. | Deploy or supply a compliance module implementation whose typeId() matches the module slot identifier you are updating. Verify the correct implementation address against the module registry. | error | No | `ComplianceModuleTypeMismatch(bytes32,bytes32)` |
| DALP-1118 | Unsupported compliance module. | The address provided as a compliance module implementation does not support any recognized compliance module interface. The directory validates the interface via ERC-165 before accepting an implementation, and this address failed all three probes. | Supply an implementation address that correctly implements a supported compliance module interface. Verify you have deployed the contract and that it exposes the expected ERC-165 interface identifiers. | error | No | `UnsupportedComplianceModule(address)` |
| DALP-1119 | Token scope not supported. | The compliance module you are installing belongs to a token-level compliance engine. Token-level engines do not support per-token inclusion or exemption scope filters; only the system compliance engine accepts those dimensions. The contract reverts whenever the scope passed to installScopedModule contains a non-empty tokenInclusion or tokenExemption list. | Remove the tokenInclusion and tokenExemption entries from the scope before calling installScopedModule on a token-level compliance engine. If you require per-token scoping, use the system compliance engine instead. | error | No | `TokenScopeNotSupported()` |
| DALP-1120 | Compliance check failed: `{{reason}}`. | A compliance rule on the token refused this transfer or mint. The reason after the colon names the check that failed, for example a blocked address or a blocked country. | Change the recipient or the amount so it meets that rule, or ask a compliance officer to review the token's compliance rules, then try again. | error | No | `ComplianceCheckFailed(address,bytes32,bytes32,string)` |
| DALP-1121 | Identity v2 not supported. | The identity factory targets V2 identity proxy deployment, but the underlying implementation contract does not expose the IDALPIdentityV2 interface. The factory checks supportsInterface at deploy time and reverts when the implementation predates V2. | Ask the platform administrator to point the factory at an implementation that supports IDALPIdentityV2, then retry. | error | No | `IdentityV2NotSupported()` |
| DALP-1122 | Authorization deadline expired. | The signed authorization included a deadline timestamp, and the current block time is past that deadline. The contract validates the authorization before creating the identity with management keys and reverts when the deadline has elapsed. | Request a new signed authorization with a deadline that has not passed, then resubmit the identity creation call with the updated signature and deadline. | error | No | `ExpiredIdentityManagementKeyAuthorization(uint256)` |
| DALP-1123 | Identity authorization signature does not match the wallet. | The EIP-712 signature for `createIdentityWithManagementKeyAuthorization` is malformed or recovered to an address other than the wallet. `recovered` holds the recovered address. | Re-sign the authorization digest with the private key of the wallet address passed as `_wallet`. Confirm the domain separator matches the identity factory contract and chain. | error | No | `InvalidIdentityManagementKeyAuthorization(address,address)` |
| DALP-1124 | The scheduled maturity date has passed; early maturity is not applicable. | The emergency early maturity call is only available before the scheduled maturity date. The current time (`{{currentTime}}`) has reached or passed the maturity timestamp (`{{maturityDate}}`), so the early maturity path is no longer applicable. | Use the regular maturity operation (governance role) to mature this bond. The emergency window applies only before the scheduled date. | error | No | `MaturityDateAlreadyReached(uint256,uint256)` |
| DALP-1125 | Fee rate too high. | The fee rate supplied in the feature configuration exceeds 10,000 basis points (100%). The contract enforces that no fee rate can be set above 100 percent of the transaction amount. | Set feeBps to a value of 10,000 or less in the feature configuration and resubmit. | error | No | `FeeRateTooHigh(uint16)` |
| DALP-1126 | Fee token required when fees non zero. | The external transaction fee feature configuration sets at least one of mintFee, burnFee, or transferFee to a non-zero value but leaves the fee token address as the zero address. The contract requires a fee token whenever any fee amount is non-zero. | Supply a valid fee token address in the configuration alongside the non-zero fee amounts, or set all fee amounts to zero if no fee token is available. | error | No | `FeeTokenRequiredWhenFeesNonZero()` |
| DALP-1127 | Conversion feature target token address is zero. | The conversion feature configuration requires a non-zero `targetToken` address. The value supplied in the config was the zero address. | Set `config.targetToken` to the deployed address of the token to be received after conversion. | error | No | `InvalidTargetToken()` |
| DALP-1128 | Maturity date zero. | The maturity date value in the maturity redemption feature configuration is zero. The contract requires a non-zero Unix timestamp for the maturity date before it will accept the configuration. | Provide a valid future Unix timestamp as the maturityDate in the feature configuration and resubmit. | error | No | `MaturityDateZero()` |
| DALP-1129 | Native recovery failed. | The paymaster refund splitter sent native currency to the target address and the low-level call returned false. Either the recipient contract rejected the transfer or it ran out of gas. | Verify that the recipient address can accept native currency transfers. If the recipient is a contract, confirm it has a payable fallback or receive function, then retry the recoverNative call. | error | No | `NativeRecoveryFailed()` |
| DALP-1130 | Token not system registered. | The system identity registry does not record the token address you provided. The token sale factory requires all tokens to be registered in the system registry before a sale can be created for them. | Confirm the system has registered the token in its identity registry before you create a token sale. | error | No | `TokenNotSystemRegistered()` |
| DALP-1131 | Current-holder counting needs a token that has no holders yet; choose lifetime counting for this rule. | A current-holder count starts from zero, so the module refuses a scope it cannot prove is empty. A token rule is refused when its token (`{{token}}`) already has supply. A global control is refused with the zero address, because a system-wide scope has no single token whose supply the module can check. | Install the rule with lifetime counting. For a token rule, current-holder counting can be installed before the token is minted; for a global control it is not available. | error | No | `CountingScopeHasHoldings(address)` |
| DALP-1132 | The counting policy is fixed at installation. | The configuration named a counting policy different from the one this rule was installed with. Changing it would recount existing holders under different rules. | Resubmit the configuration with the installed counting policy. To count differently, remove the rule and install a new one. | error | No | `CountingPolicyImmutable()` |
| DALP-1133 | Country limits are unavailable on this rule. | This rule was upgraded from Investor count, and wallets counted before the upgrade carry no country, so per-country counts would be wrong. The maximum still applies. | Resubmit the configuration without country limits. | error | No | `CountryAccountingIncomplete()` |
| DALP-1134 | Holder is not registered. | A holder lock is keyed on the holder's identity, and the wallet named for the lock is not registered in the token's identity registry. | Register the holder's wallet with an identity first, or name a wallet of the holder that is already registered. | error | No | `HolderNotRegistered(address)` |
| DALP-1135 | Holder lock amount is invalid. | A holder lock must lock a non-zero amount that fits the module's stored width. | Lock a positive amount in base units; to remove a lock, clear it instead. | error | No | `InvalidHolderLockAmount(uint256)` |
| DALP-1136 | Unlock time must be in the future. | A holder lock's unlock time is not later than the current block time, so the lock would never refuse a transfer. | Choose an unlock time after the current time. | error | No | `UnlockTimeNotInFuture(uint256)` |
| DALP-1137 | Holder lock not found. | The holder's identity has no lock on this token to clear. | Read the holder's lock before clearing it; nothing needs clearing when no lock is set. | error | No | `HolderLockNotFound(address)` |

The previous page is [DALP-1050 to DALP-1099](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-1050-1099). The next page is [DALP-2000 to DALP-2999](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-2000-2999).
