# DALP-15000 to DALP-19999

Source: https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-15000-19999
Cause, fix, HTTP status and retry flag for every Platform API error with a code from DALP-15000 to DALP-19999.

This page lists the 18 errors the Platform API can return with a code from DALP-15000 to DALP-19999. Match the `id` in the error envelope to the DALP Code column, then read Retryable and Suggested Fix. The [Platform API error reference](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-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 | Machine name | Category | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| DALP-16806 | `dapi.assets.TOKEN_ACCESS_ZERO_ADDRESS_HOLDER` | client | The zero address cannot hold a role. | The zero address belongs to no wallet, so a role granted to it can never be used or reversed by its holder. | Grant the role to a wallet that can sign. | info | No | 400 |
| DALP-17440 | `WALLET_VERIFICATION_HELD` | permission | Signing is held after a recent wallet security change. | A wallet PIN, authenticator, recovery-code set or identity-provider authenticator of this account changed recently. Signing waits out the longest cooling-off period among the account's organisations. The platform stored nothing. | Wait until the instant in `data.heldUntil` (or the number of seconds in `data.retryAfterSeconds`), then send the request again. | info | No | 403 |
| DALP-17457 | `WALLET_RESTRICTION_NOT_FOUND` | client | The restriction was not found. | No restriction matches this identifier in this organization, or the caller may not see restrictions. | Use the identifier from the request that created the restriction, or ask the organization owner to list the restrictions. | info | No | 404 |
| DALP-17458 | `WALLET_RESTRICTION_ALREADY_ACTIVE` | domain | The wallet is already restricted. | The wallet already has an active restriction with a different reason or scope. | Send the active restriction's reason and scope again to continue it, or lift it first. The organization owner can read them. | info | No | 409 |
| DALP-17459 | `WALLET_RESTRICTION_TOKENS_EMPTY` | domain | No token is available to restrict. | The wallet holds no token in this organization, or none of the tokens in the request exists in the active system. | List tokens that exist in the active system, or add the wallet to the address block list to stop it from receiving tokens later. | info | No | 422 |
| DALP-17460 | `WALLET_RESTRICTION_FREEZE_IN_FLIGHT` | domain | The restriction still has a freeze in flight. | A freeze on one of the restriction's tokens is queued and has not landed, so it cannot be lifted yet. | Read the restriction until no token is queued, then lift it again. | info | Yes | 409 |
| DALP-18113 | `CUSTODY_PROVIDER_CONFIG_NOT_FOUND` | client | Custody provider configuration not found. | No custody provider configuration visible to the caller in the active organization matches this identifier. | List the organization's provider configurations and use an identifier returned there. | info | No | 404 |
| DALP-18228 | `ACCOUNT_CLOSURE_PROOF_REFUSED` | permission | The account-closure request carried no accepted proof. | Filing an account-closure request needs the account password when the account signs in with one, otherwise a wallet factor (the transaction PIN, the transaction code, a recovery code or a code from the identity provider's authenticator); `data.reason` names which proof was missing or rejected. | Send the proof `data.reason` names, then retry. | info | No | 403 |
| DALP-18229 | `ACCOUNT_CLOSURE_REQUEST_OPEN` | domain | An account-closure request is already open. | The account already has an open account-closure request that waits for an administrator, and one account holds at most one open request. | Read the open request from `GET /api/v2/users/me/account-closure-request`, or withdraw it before filing a new one. | info | No | 409 |
| DALP-18230 | `ACCOUNT_CLOSURE_REQUEST_NOT_FOUND` | client | No account-closure request was found. | The account has never filed an account-closure request. | File a request with `POST /api/v2/users/me/account-closure-request`, then read it. | info | No | 404 |
| DALP-18231 | `ACCOUNT_CLOSURE_REQUEST_NOT_OPEN` | domain | The account-closure request is no longer open. | The account has no open account-closure request: none was filed, it was withdrawn, or an administrator already deleted, closed or declined it. A closed request accepts no further transition or decision. | Read the current request to see its outcome; file a new request when one is still wanted. | info | No | 409 |
| DALP-18232 | `PLATFORM_ACCOUNT_CLOSURE_REQUEST_NOT_OPEN` | domain | The user's account-closure request is no longer open. | The request was withdrawn, or an administrator already deleted, closed or declined it, so it accepts no further decision. | Read the user's current request; a new request from the user opens a new decision. | info | No | 409 |
| DALP-18233 | `PLATFORM_ACCOUNT_CLOSURE_REQUEST_NOT_FOUND` | client | The user has no account-closure request. | The user has never filed an account-closure request, so there is nothing to read or decide. | Read the request again after the user has filed one. | info | No | 404 |
| DALP-18234 | `PLATFORM_ACCOUNT_CLOSURE_SELF_DECISION` | domain | You cannot decide your own account-closure request. | The request names the signed-in administrator as the user whose account-closure request is decided. | Ask another platform administrator to decide it. | info | No | 409 |
| DALP-18235 | `ROUTE_NOT_FOUND` | client | No API route matches this path. | The request's method and path match no route the Platform API publishes. | Correct the method and path against the API reference, then send the request again. | info | No | 404 |
| DALP-18236 | `TOKEN_PROJECTION_DATA_INVALID` | dependency | Indexed data cannot be read. | An indexed token or feature row does not match its declared shape, or the read of the indexed data is invalid, so the read cannot succeed. | Do not retry the request: it fails the same way until the indexed data or the read is repaired. Report the request identifier to the platform operator. | error | No | 500 |
| DALP-18237 | `MULTISIG_DRAFT_DUPLICATE_ADDRESS` | client | This signing address already holds a seat on the multisig draft. | Another seat on the draft already holds this address, and one address takes one seat. Nothing was changed. | Choose a signing address that holds no seat on the draft. | info | No | 409 |
| DALP-18238 | `TOKEN_FEATURE_STORED_ROW_INVALID` | operational | Stored token feature data cannot be read. | A stored record a token feature reads, such as a corporate action or its approval request, does not match its expected shape, or the read of that record is invalid, so the request cannot succeed. | Do not retry the request: it fails the same way until the stored record or the read is repaired. Contact support with the X-Request-Id response header. | error | No | 500 |

The previous page is [DALP-14500 to DALP-14999](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-14500-14999). The next page is [DALP-20000 to DALP-29999](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-20000-29999).
