# DALP-14500 to DALP-14999

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

This page lists the 54 errors the Platform API can return with a code from DALP-14500 to DALP-14999. 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-14501 | `TOKEN_FEATURES_YIELD_TOP_UP_INSUFFICIENT_BALANCE` | domain | Your wallet does not hold enough of the denomination asset for this yield treasury top-up. | A top-up transfers the denomination asset from your wallet to the yield treasury. Your wallet holds `{{available}}` base units and the top-up asks for `{{required}}`, so the transfer would fail. | Reduce the amount to at most your balance, or add the denomination asset to your wallet, then retry. | info | No | 409 |
| DALP-14502 | `TOKEN_FEATURES_YIELD_TOP_UP_FROM_TREASURY` | domain | Your wallet is the yield treasury, so a top-up cannot change its coverage. | A top-up transfers the denomination asset from your wallet to the yield treasury. Your wallet is that treasury, so the transfer would only move funds to itself. | As the treasury, hold the denomination asset in your wallet and approve the yield feature to pay claims from it (approve yield treasury allowance). A top-up is for wallets other than the treasury. | info | No | 409 |
| DALP-14503 | `TOKEN_FEATURES_YIELD_TREASURY_UNDERFUNDED` | domain | The yield treasury cannot pay this claim yet. | The claim pays the holder's owed yield from the yield treasury. The treasury's balance, or the allowance it gave the yield feature, cannot cover it, so the payout would fail. | Ask the issuer to fund the yield treasury and, when the treasury is a wallet, to approve the yield feature for at least the owed amount. Retry the claim after that. | info | No | 409 |
| DALP-14504 | `MATURITY_INSUFFICIENT_BALANCE` | domain | Your wallet does not hold enough of the denomination asset for this maturity treasury top-up. | A top-up transfers the denomination asset from your wallet to the maturity treasury. Your wallet holds `{{available}}` base units and the top-up asks for `{{required}}`, so the transfer would fail. | Reduce the amount to at most your balance, or add the denomination asset to your wallet, then retry. | info | No | 409 |
| DALP-14505 | `MATURITY_TOP_UP_FROM_TREASURY` | domain | Your wallet is the maturity treasury, so a top-up cannot change its funding. | A top-up transfers the denomination asset from your wallet to the maturity treasury. Your wallet is that treasury, so the transfer would only move funds to itself. | As the treasury, hold the denomination asset in your wallet and approve the maturity feature to pay redemptions from it. A top-up is for wallets other than the treasury. | info | No | 409 |
| DALP-14506 | `MATURITY_TREASURY_UNDERFUNDED` | domain | The maturity treasury cannot pay this redemption yet. | The redemption is paid from the maturity treasury `{{treasury}}` in the denomination asset `{{denominationAsset}}`. The treasury holds `{{treasuryBalance}}` base units and this redemption requires `{{required}}`, so the payout would fail. | Ask the issuer to fund the maturity treasury with at least the required amount, then retry the redemption. | info | No | 409 |
| DALP-14701 | `market-data.price-source.VERSION_CONFLICT` | client | Price source `{sourceId}` changed since you read it. | The price source changed after this request read it, so the edit was not applied. | Read the source again, review the current settings and send the edit again. | info | No | 409 |
| DALP-14702 | `market-data.price-source.HOST_KEY_CHANGED` | client | The SFTP host key of price source `{sourceId}` changed to `{fingerprint}`. | The SFTP server presented a host key other than the one accepted for this source, so the scheduler refused to connect. | Compare the fingerprint with the one the provider publishes, then accept it on the source. | info | No | 409 |
| DALP-14703 | `market-data.price-source.HEARTBEAT_EXCEEDS_BOUND` | client | The heartbeat needs `{requiredSeconds}` seconds but the staleness bound is `{boundSeconds}` seconds. | The heartbeat plus the expected delivery interval plus the expected lag is not shorter than the staleness bound, so the feed would go stale between publishes. | Shorten the heartbeat, the expected interval or the expected lag, or raise the source's stale-after time. | info | No | 422 |
| DALP-14704 | `market-data.price-source.ENDPOINT_REFUSED` | client | Host `{host}` is not an allowed price source endpoint. | The host is a loopback, link-local, metadata, private or unspecified address that this deployment does not allow price sources to reach. | Use the provider's public host name, or ask an operator to add the address range to the deployment's endpoint allow list. | info | No | 422 |
| DALP-14705 | `market-data.price-source.PLAINTEXT_REFUSED` | client | A FIX session to `{host}` needs TLS. | A FIX session without TLS is allowed only to an address inside the deployment's endpoint allow list. | Turn TLS on and name the certificate's server name, or use an address the deployment's endpoint allow list covers. | info | No | 422 |
| DALP-14706 | `market-data.price-source.CREDENTIAL_KIND_REFUSED` | client | A `{kind}` credential does not fit a `{protocol}` price source. | This kind of credential does not fit the source's protocol. | Send the credential kind the protocol uses: a password or private key for SFTP, a logon for FIX, client credentials for Bloomberg, a password for LSEG. | info | No | 422 |
| DALP-14707 | `market-data.price-source.PROTOCOL_FIXED` | client | Price source `{sourceId}` cannot change protocol from `{protocol}`. | A price source keeps the protocol it was created with, so an edit cannot switch it. | Edit the settings for the source's own protocol, or create a new source for the other protocol. | info | No | 422 |
| DALP-14708 | `market-data.price-source.instrument.FEED_DESCRIPTION_UNPARSEABLE` | client | The price feed `{feedAddress}` is not described as BASE / QUOTE. | A price feed names its currency in a description of the form BASE / QUOTE, and this feed's description does not follow that form. | Map an ISIN to a token whose price feed is described as BASE / QUOTE, or let the mapping create the feed. | info | No | 422 |
| DALP-14709 | `market-data.price-source.instrument.FEED_NOT_ISSUER_SIGNED` | client | The price feed `{feedAddress}` is not issuer-signed. | A price source publishes through the organisation's signer, which only an issuer-signed feed accepts. | Map the ISIN to a token whose price feed is issuer-signed, or replace the token's feed with one. | info | No | 422 |
| DALP-14710 | `market-data.price-source.instrument.FEED_ALREADY_MAPPED` | client | The price feed of token `{tokenAddress}` is already mapped to price source `{mappedSourceId}`. | A token's price feed has at most one active source, and another mapping already feeds it. | Unmap the token from its current source first, then map it here. | info | No | 409 |
| DALP-14711 | `market-data.price-source.instrument.PAR_AMOUNT_REQUIRED` | client | ISIN `{isin}` is quoted as a percentage of par but has no par amount. | A price quoted as a percentage of par becomes a token price only when the token's par amount is known. | Enter the token's par amount, or map the ISIN with a per-unit price basis. | info | No | 422 |
| DALP-14712 | `market-data.price-source.instrument.CURRENCY_MISMATCH` | client | ISIN `{isin}` is mapped in `{currency}` but its price feed is quoted in `{feedCurrency}`. | The mapping's currency differs from the currency the token's price feed is quoted in. | Map the ISIN in the feed's currency. A price in another currency is never converted or published. | info | No | 422 |
| DALP-14713 | `market-data.price-source.instrument.TOKEN_REPEATED` | client | Token `{tokenAddress}` appears more than once in the list. | A token's price feed has one live mapping, so a list cannot map the same token twice. | Keep one item per token in the list. | info | No | 422 |
| DALP-14714 | `market-data.price-source.instrument.TOKEN_NOT_FOUND` | client | Token `{tokenAddress}` is not in the token catalog. | The token is not in the organisation's token catalog, so its price feed cannot be named or created. | Use the address of a token the organisation holds in its catalog. | info | No | 422 |
| DALP-14715 | `market-data.price-source.instrument.NOT_FOUND` | client | Price source instrument `{instrumentId}` not found. | The source has no live mapping with this id, either because it never existed or because it was unmapped. | Use an id from the source's list of live instruments. | info | No | 404 |
| DALP-14716 | `market-data.price-source.instrument.LIST_TOO_LARGE` | client | The list holds `{received}` instruments and one request maps at most `{maximum}`. | One request maps a bounded number of instruments, because each new feed is its own chain workflow. | Split the list into requests of no more than the maximum. | info | No | 422 |
| DALP-14717 | `market-data.price-source.instrument.LIST_REFUSED` | client | Some instruments in the list cannot be mapped. | At least one item of the list cannot be mapped, so none was mapped and no feed was created. | Correct the items named in the refusal and send the whole list again. | info | No | 422 |
| DALP-14720 | `market-data.held-price.NOT_FOUND` | client | Held price `{heldPriceId}` does not exist. | The organisation has no held price with this id that the caller may see. | Use an id returned by the held price list. | info | No | 404 |
| DALP-14721 | `market-data.held-price.SUPERSEDED` | client | Held price `{heldPriceId}` was superseded. | A newer price for the feed has been published since this price was held. | Read the feed's current price. A held price that a newer price replaced needs no decision. | info | No | 409 |
| DALP-14722 | `market-data.held-price.CHANGED_SINCE_REVIEW` | client | Held price `{heldPriceId}` changed after it was reviewed. | The price or its evidence moved beyond the hold tolerance since the approver reviewed it, so the approval would publish a price nobody reviewed. | Reload the held price, review the current price and its evidence, then decide again. | info | No | 409 |
| DALP-14723 | `market-data.held-price.STALE` | client | Held price `{heldPriceId}` is stale. | The held price is older than the feed's staleness bound, so publishing it would put a stale price on chain. | Reject the held price and wait for the source's next delivery. | info | No | 409 |
| DALP-14724 | `market-data.held-price.ALREADY_DECIDED` | client | Held price `{heldPriceId}` is already `{status}`. | The held price is no longer waiting for a decision. | Read the held price to see how it was settled. | info | No | 409 |
| DALP-14725 | `market-data.held-price.VERSION_MOVED` | client | Held price `{heldPriceId}` was decided by someone else first. | Another decision landed on this held price first. | Read the held price again and decide only if it still waits. | info | No | 409 |
| DALP-14726 | `market-data.held-price.APPROVER_EXCLUDED` | permission | You cannot decide held price `{heldPriceId}`. | The caller configured the source, accepted its host key or queued the delivery that produced this price, so a second person must decide it. | Ask another feeds manager, or the governor of the token, to decide the held price. | info | No | 403 |
| DALP-14728 | `market-data.held-price.SOURCE_PAUSED` | client | Price source `{sourceId}` is not active. | A price source that is not active publishes nothing, so its held price cannot be approved. | Activate the source, or reject the held price. | info | No | 409 |
| DALP-14729 | `market-data.held-price.SESSION_REQUIRED` | permission | Held price `{heldPriceId}` needs a signed-in decision. | A held price is decided by a signed-in person with a wallet verification, never by an API key. | Sign in to the Console and decide the held price there. | info | No | 403 |
| DALP-14730 | `market-data.held-price.EVIDENCE_UNAVAILABLE` | client | The evidence for held price `{heldPriceId}` is not available. | The raw message behind this price is no longer stored, or no longer matches its recorded hash. | Reject the held price and wait for the source's next delivery. | info | No | 404 |
| DALP-14731 | `market-data.held-price.DECISION_REFUSED` | client | The decision on held price `{heldPriceId}` was refused (`{violation}`). | The approvals service refused the decision for a reason the held price has no dedicated message for. | Read the held price and its approval, then decide again if it still waits. | info | No | 409 |
| DALP-14732 | `market-data.price-source.observation.NOT_FOUND` | client | Observation `{observationId}` does not exist. | The price source has no observation with this id that the caller may see. | Use an id returned by the source's observation list. | info | No | 404 |
| DALP-14733 | `market-data.price-source.observation.EVIDENCE_UNAVAILABLE` | client | The evidence for observation `{observationId}` is not available. | The raw message behind this observation is no longer stored, or no longer matches its recorded hash. | Read the observation's outcome instead, or wait for the source's next delivery. | info | No | 404 |
| DALP-14734 | `market-data.price-source.SESSION_REQUIRED` | permission | Price source `{sourceId}` needs a signed-in session to `{action}`. | This change steers what the scheduler signs and publishes unattended, so it needs a signed-in person with a wallet verification, never an API key. | Sign in to the Console and make the change there. | info | No | 403 |
| DALP-14735 | `market-data.price-source.NOT_FOUND` | client | Price source, connection test, instrument operation or delivery operation `{resourceId}` not found. | The organisation has no price source, connection test, instrument operation or delivery operation with this id. | Use an id returned by the price source list, the connection test request, the instrument mapping request or the fetch request. | info | No | 404 |
| DALP-14736 | `market-data.price-source.TRANSITION_REFUSED` | client | Price source `{sourceId}` cannot `{action}` while it is `{state}`. | The price source is in a state that does not allow this change. | Read the source's current state and request a change that state allows. | info | No | 409 |
| DALP-14737 | `market-data.price-source.CREDENTIAL_MISSING` | client | Price source `{sourceId}` has no credential. | The price source has no stored credential, so the scheduler could not connect with it. | Set the source's credential, then activate it again. | info | No | 409 |
| DALP-14738 | `market-data.price-source.CREDENTIAL_CONFLICT` | client | Price source `{sourceId}` credential changed since you read it. | Another operator replaced the source's credential after this request read its version, so nothing was stored. | Read the source again to get its current credential version, then replace the credential if it is still needed. | info | No | 409 |
| DALP-14739 | `market-data.price-source.instrument.FEED_WORK_FAILED` | operational | The feed work for this instrument ended without a result. | The work that attaches the instrument or creates or adopts the price feed of the token stopped on a fault the platform does not publish. | Map the instrument again, unmapping it first if the source lists it as mapped. Contact support with the X-Request-Id of the mapping request if it fails again. | error | No | 500 |
| DALP-14740 | `market-data.price-source.CREDENTIAL_IN_USE` | client | Price source `{sourceId}` is active, so its credential cannot be removed. | An active price source connects with its credential on every run, so the credential cannot be removed. | Pause the source, then remove the credential, or replace it with a new one while the source runs. | info | No | 409 |
| DALP-14741 | `market-data.price-source.RETIRED` | client | Price source `{sourceId}` is retired. | A retired price source is closed for good: retirement deleted its secrets, and a credential stored on it afterwards would never be deleted. | Create a new price source and set the credential on it. | info | No | 409 |
| DALP-14742 | `market-data.price-source.FETCH_NOT_SUPPORTED` | client | Price source `{sourceId}` streams over `{protocol}` and cannot be fetched on request. | A FIX source streams prices over its open session, so there is nothing to fetch on request. | Read the source's latest delivery, or fetch from an SFTP, Bloomberg or LSEG source. | info | No | 422 |
| DALP-14743 | `market-data.price-source.FETCH_PENDING` | client | Price source `{sourceId}` already has fetch `{operationId}` queued. | A fetch for this source is queued and the scheduler has not picked it up yet, so a second request would only repeat it. | Read the queued fetch until it finishes, then request another if it is still needed. | info | No | 409 |
| DALP-14744 | `OUTSIDE_PUBLICATION_WINDOW` | client | The announcement goes live outside the publication windows. | The venue blocks issuer announcements outside its publication windows, and this one goes live outside a window of an instrument trading the security. | Set displayFrom to a time inside the publication windows, or submit or approve during a window. | info | No | 422 |
| DALP-14745 | `market-data.held-price.SOURCE_STOPPED` | client | Price source `{sourceId}` has stopped. | The price source stopped after a credential or configuration failure, so it publishes nothing until a feeds manager clears the stop. | Ask a feeds manager to fix the cause and restart the source (pause, then activate), then approve again; or reject the held price. | info | No | 409 |
| DALP-14746 | `CORPORATE_ACTION_CHILD_INELIGIBLE` | domain | Spin-off requires a child token that can carry the new instrument's capital. | A spin-off issues capital in a new instrument, so the child token has to carry share or unit capital and be an instrument of its own. The named child carries neither capability, or it is a class of an existing multi-class instrument. | Issue a standalone share or unit token for the child, then declare the spin-off again. | info | No | 409 |
| DALP-14747 | `TRANSACTION_QUEUE_RETRIES_EXHAUSTED` | dependency | Transaction could not be sent before its retries ran out. | A transient fault, such as a chain node that could not be reached, outlasted every retry the transaction queue allows. The queue released the transaction's nonce, so this request cannot land. | Submit the write again with a new idempotency key. Reusing the same key returns this request's recorded failure. For a write of several chained steps, read `transactionId` first, because an earlier step can have completed. | error | Yes | 503 |
| DALP-14748 | `VENUE_ONCHAIN_APPROVAL_REQUIRED` | domain | The venue requires on-chain approval for this action. | The venue's access manager has an approval count above 0 for this action, so the venue contract accepts the call only with an approved on-chain proposal. The platform has no on-chain proposal step, so it sent nothing and no transaction was queued. | Ask the venue's default admin to set the action's approval count to 0 on the venue's access manager, then repeat the request. | info | No | 409 |
| DALP-14749 | `FUND_SUBSCRIPTION_REQUESTS_CHANGED` | domain | The open requests changed while the settlement was prepared. | An investor created or cancelled a request, or another settlement took one, between the moment the platform read the open requests and the moment it recorded the plan. The platform recorded nothing. | Send the same call again. The platform reads the open requests again and settles the list as it stands. | info | Yes | 409 |
| DALP-14750 | `FEED_ISSUER_NOT_TRUSTED` | permission | The feed does not trust the organisation's issuer identity. | The feed accepts values only from a trusted issuer for its topic, and the organisation's issuer identity is not one, or the feed names no trusted issuers registry the platform can read. | Add the organisation's issuer identity to the feed's trusted issuers registry for the topic, then submit again. | info | No | 403 |
| DALP-14751 | `TRANSACTION_QUEUE_OUTCOME_IN_FLIGHT` | client | Another request for this outcome is still running. | An earlier request for the same one-time outcome, such as this claim, refund, withdrawal, maturity or redemption, is still running. The transaction queue did not send this one, so nothing moved because of it. | Wait for the running request to finish, then read its result. Send this request again only if the running one failed. `data.transactionId` names the running request when the queue could read it. | info | No | 400 |

The previous page is [DALP-14400 to DALP-14499](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-14400-14499). The next page is [DALP-15000 to DALP-19999](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-15000-19999).
