# DALP-14000 to DALP-14049

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

This page lists the 48 errors the Platform API can return with a code from DALP-14000 to DALP-14049. 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-14001 | `VENUE_CONFIGURATION_REQUIRED` | domain | The venue configuration is missing. | The venue exists on-chain but its application configuration is missing. | Repeat creation with the same venue name to restore its configuration. | info | Yes | 409 |
| DALP-14002 | `VENUE_DEPLOYMENT_PENDING` | operational | The venue deployment is still being indexed. | The factory state or venue creation transaction cannot be confirmed yet. | Retry the same venue creation request after the chain and indexer are available. | error | Yes | 503 |
| DALP-14003 | `MARKET_LISTING_QUEUE_REFUSED` | domain | The instrument listing was refused. | The venue rejected the listing transaction, so no instrument was listed on-chain. | Use `data.errorName` and `data.selector`, when present, to find the venue rule the listing broke. Review the instrument sizes, fees, and fee account, then request the listing again. | info | No | 422 |
| DALP-14004 | `MARKET_LISTING_PENDING` | operational | The instrument listing outcome is not confirmed. | The listing request may have reached the chain, but its outcome cannot be confirmed yet. | Check the instrument list for this venue and token pair before sending another listing request. | error | No | 503 |
| DALP-14005 | `DISTRIBUTION_WATERFALL_FEATURE_NOT_FOUND` | domain | This token carries no distribution-waterfall feature. | This operation targets the distribution-waterfall feature, and this token has no such feature attached. | Run the operation on the share class that carries the distribution-waterfall feature, or attach the feature to this token first. | info | No | 404 |
| DALP-14006 | `DISTRIBUTION_WATERFALL_DENOMINATION_UNREADABLE` | operational | The distribution-waterfall feature did not answer which asset it pays in. | The allowance is granted on the pool's denomination asset, which is read from the feature on chain. That read returned no asset, so approving anything now risks approving the wrong token. | Restore chain access and confirm the feature is deployed, then grant the allowance again. | error | Yes | 503 |
| DALP-14007 | `DISTRIBUTION_WATERFALL_UNKNOWN_PRIORITY_ROW` | client | The waterfall has no priority row for this determination kind. | Distribution netting applies to a configured priority row. The supplied determination kind does not name one. | Use the determination-kind hash of a priority row configured on this waterfall. | info | No | 400 |
| DALP-14008 | `DISTRIBUTION_WATERFALL_UNKNOWN_CLASS_ROLE` | client | The waterfall has no class with this role. | Distribution netting applies to a configured share class. The supplied role does not name one. | Use a class role configured on this waterfall. | info | No | 400 |
| DALP-14009 | `DISTRIBUTION_WATERFALL_NETTING_LOCKED` | domain | Distribution netting terms are locked for this priority row. | A distribution has already been funded under this priority row, so its netting terms cannot change. | Keep the current netting terms for this row. Configure netting before funding a distribution under a new row. | info | No | 409 |
| DALP-14010 | `MARKET_LISTING_REFUSED` | domain | The venue already lists this security under another trading model. | The venue admits each security under one trading model, and an instrument for this security already runs in a different mode. | List the security in the mode its existing instrument uses, or delist that instrument first. A venue admin can also turn the rule off. | info | No | 409 |
| DALP-14011 | `VENUE_CREATION_REFUSED` | domain | The trading venue could not be created. | A creation precondition failed: the organisation has no deployed system or venue factory, no wallet is selected as the initial venue admin, or the organisation's operations signer is unbound or holds neither the system manager nor the venue manager role. The factory can also refuse the venue itself: it has no venue implementation set, the access manager addon is not registered, the venue key is already used, or its answer could not be read. The reason in the response names the failed check. | Resolve the named reason, then create the venue again. For a missing role, a system admin grants the venue manager role to the account in the response. | info | No | 409 |
| DALP-14012 | `CORPORATE_ACTION_INSTRUMENT_MISSING` | domain | This Corporate Action pays a whole multi-class instrument, and this token is not one class of one. | A coordinated distribution splits one pool across the share classes of one instrument, reading the split from the distribution-waterfall feature on the class that holds the pool. This token either belongs to no paired instrument or carries no waterfall. | Raise it on the share class that carries the distribution-waterfall feature. If the instrument was issued outside a paired run, or predates the waterfall, attach the feature first. | info | No | 409 |
| DALP-14013 | `CORPORATE_ACTION_POOL_UNFUNDABLE` | domain | The executing wallet cannot fund this pool. | Funding a coordinated distribution pulls the whole pool from the wallet that signs the confirm, so that wallet must hold the pool in the denomination asset and must have approved the distribution-waterfall feature to spend it. The executing wallet does not satisfy both. | Send the pool amount to the executing wallet in the denomination asset, approve the distribution-waterfall feature for at least that amount from the same wallet, then confirm again. | info | No | 409 |
| DALP-14014 | `VENUE_OPERATOR_ROLE_REQUIRED` | permission | The platform admin or organization owner role is required. | Creating a trading venue or listing an instrument is restricted to a platform admin or an owner of the organization, and this account holds neither role. | Ask a platform admin or an owner of the organization to make this request. | info | No | 403 |
| DALP-14015 | `MARKET_PAIR_ALREADY_LISTED` | domain | The venue already lists this pair. | An instrument for this base and quote token pair already exists on the venue, so listing it again would create a duplicate. | Use the existing instrument, or list a different pair. | info | No | 409 |
| DALP-14016 | `CORPORATE_ACTION_WATERFALL_CANNOT_RECEIVE` | domain | The denomination asset refuses to pay this pool into the distribution waterfall. | Funding a coordinated distribution transfers the pool from the executing wallet into the distribution-waterfall feature. A simulated transfer of the denomination asset into the waterfall reverts, so funding would revert too. A denomination that gates recipients by identity refuses a waterfall that has no identity, and a paused denomination refuses every transfer. | Read the contract error in the message. For TransferNotCompliant, call ensurePoolReceiver with the class token on the distribution-waterfall factory as the token's governance, which gives a waterfall deployed before that support its identity. Otherwise clear the denomination's refusal, for example by unpausing it, then preview or confirm again. | info | No | 409 |
| DALP-14017 | `MARKET_ADMISSION_REFUSED` | domain | The venue refused this listing or instrument change. | Only a private listing states its sponsorship, and it must. Where the venue sets admission minimums, a private listing also states the value and share count it makes available, at or above those minimums, and the date those figures were established, which cannot be in the future. A private instrument takes limit orders only, good-till-cancelled orders (plus good-till-date and day orders on the continuous book), and shows participants only the top of the book. An instrument group must be one the venue defines. A venue can also limit the order types and time in force every market on it accepts: a market states only entries inside that limit, and the venue cannot set a limit that leaves a live market with no order type or no time in force. The field in the response names what is missing, too low, or not allowed. | Complete the named field, drop the sponsorship from a public listing, raise the stated value or share count to the minimum in the response, state a past date for the figures, narrow a private instrument's order types, time in force, or depth to what a private instrument allows, or pick an instrument group the venue defines, then try again. For a venue limit, state only the order types and time in force the venue allows, widen the venue limit, or first change the market the message names. A venue admin can change the minimums. | info | No | 409 |
| DALP-14018 | `ASSET_TYPE_TEMPLATE_NOT_UNPUBLISHABLE` | domain | The asset type template is not published, so it cannot be unpublished. | The template is still a draft, or your organization already has it unpublished. Unpublishing applies only to a template your organization currently offers for issuance. | Read the template and check `isDraft` and `isPublished`. Publish a draft once it is ready; leave an unpublished template as it is. | info | No | 409 |
| DALP-14019 | `TOKEN_CREATE_TEMPLATE_UNPUBLISHED` | client | The instrument template is unpublished for your organization. | Your organization does not currently offer this instrument template for issuance. A DALP Library template stays unpublished until your organization publishes it, and a published template can be unpublished again. | Publish the template from the Instrument templates overview, or call `PUT /api/v2/settings/asset-type-templates/:assetTypeTemplateId/publication`, then create the token again. | info | No | 409 |
| DALP-14020 | `TOKEN_ISSUANCE_RUN_TEMPLATE_UNPUBLISHED` | client | An instrument template of this issuance is unpublished for your organization. | Your organization does not currently offer the instrument template of one member for issuance. A DALP Library template stays unpublished until your organization publishes it, and a published template can be unpublished again. | Publish the template from the Instrument templates overview, or call `PUT /api/v2/settings/asset-type-templates/:assetTypeTemplateId/publication`, then review and accept the issuance again. | info | No | 409 |
| DALP-14021 | `CORPORATE_ACTION_PAYOUT_INELIGIBLE` | domain | The payout token cannot be transferred to `{ineligibleCount}` of the parties that would receive it. | The payout token refuses a transfer from the treasury to one or more holders that would receive a payout: the holder is not verified in its identity registry or its compliance refuses the payout, the payout token's fee recipient cannot receive the transfer fee on that payout, or the treasury cannot pay the payout token's external transfer fee for that many claims. Those holders would fail when they claim. | Read the dividend's denomination eligibility to see which holders are refused and why, then make those holders or the payout token's fee recipient eligible to receive the payout token, fund the treasury's fee-token balance and allowance, or change the dividend's payout token, and declare again. | info | No | 409 |
| DALP-14022 | `PORTFOLIO_HOLDINGS_PROJECTION_INVALID` | dependency | Indexed holdings data validation failed. | A field in an indexed token row a portfolio read needs (holdings, price, metadata, account, policy, or ownership) does not match the expected format. | Do not retry. Contact support with the X-Request-Id response header so an operator can reindex the affected token data. | error | No | 500 |
| DALP-14023 | `ASSET_TYPE_TEMPLATE_USED_BY_PUBLISHED_STRUCTURE` | domain | A published instrument structure uses the asset type template, so it cannot be unpublished. | Your organization offers an instrument structure that issues this template as one of its members, and the structure stays issuable only while every member template is published. `data.structures` lists each such structure by `id` and `name`. | Unpublish the listed structures with `PUT /api/v2/settings/asset-type-template-structures/:structureId/publication`, then unpublish the template. | info | No | 409 |
| DALP-14024 | `TOKEN_ISSUANCE_RUN_STRUCTURE_UNPUBLISHED` | client | The instrument structure of this issuance is unpublished for your organization. | Your organization does not currently offer this instrument structure for issuance. A DALP Library structure stays unpublished until your organization publishes it, a published structure can be unpublished again, and a structure reads unpublished while one of its member templates is unpublished. | Publish the structure from the Structures tab of Instrument templates, or call `PUT /api/v2/settings/asset-type-template-structures/:structureId/publication`, then review and accept the issuance again. | info | No | 409 |
| DALP-14025 | `PAYER_NOT_FOUND` | client | `{payerAddress}` is not a wallet this organization pays gas from on this network. | Withdrawals move funds out of the organisation's relayer, bundler, operator wallet, bank-rail wallet or paymaster deposit on the request's network. The address is none of them. | Withdraw from a wallet listed under Organisation settings, Transaction funding, for this network. | info | No | 404 |
| DALP-14027 | `PAYER_WITHDRAWAL_EXCEEDS_AVAILABLE` | client | At most `{withdrawableWei}` wei can be withdrawn from this wallet now. | A wallet keeps enough to pay for the withdrawal itself, including a replacement at a raised fee, so a withdrawal cannot take its whole balance. A paymaster's sponsorship reserve can be withdrawn up to its current EntryPoint deposit. A withdrawal of zero is refused the same way. | Withdraw no more than the withdrawable amount, which the withdrawable read of the same wallet returns. | info | No | 422 |
| DALP-14028 | `PAYER_DESTINATION_REFUSED` | client | `{destination}` cannot receive this withdrawal. | The destination is the zero address, the wallet the funds would leave, or an address that reverts a plain native transfer. | Name a different destination address. | info | No | 422 |
| DALP-14029 | `TRANSACTION_WORKFLOW_OWNED` | client | This transaction is owned by a workflow, so an operator cannot retry it on its own. | The transaction request is a workflow status handle or a step of a role set. A status handle has no write to replay. A role-set step, including one that undoes an earlier step, belongs to a role change whose workflow owns its check, undo, and expiry, so sending it again alone could change a role with none of them. | Inspect the owning workflow. To repeat a role change, read the role set's transaction request, and once it has ended, send a new role set. For any other workflow, force-retry only its failed executable transaction request. | info | No | 409 |
| DALP-14030 | `CORPORATE_ACTION_CALL_PROTECTED` | domain | This instrument cannot be called before its first call date. | The instrument's metadata names a first call date, and the issuer may call every holder only on or after it, or from the instrument's long-stop date when that comes first. A long-stop date counts only when the token recorded it as unchangeable at issuance. A calendar date (YYYY-MM-DD) starts that day in UTC. A date in any other format also refuses the call, and so does more than one recorded first call date. | Confirm this call on or after the first call date, or the long-stop date when that comes first. | info | No | 409 |
| DALP-14031 | `TRANSACTION_PREPARATION_NOT_FOUND` | client | Transaction preparation not found. | The platform has no transaction preparation with that id for the calling user in this organization. A preparation another user created, or one that belongs to another organization, is reported the same way as a missing one to prevent enumeration. | Use the preparationId that the prepare call returned to you. If you no longer have it, prepare the operation again and authorize the new preparation. | info | No | 404 |
| DALP-14032 | `TRANSACTION_PREPARATION_ACCOUNT_INELIGIBLE` | client | This custody account cannot authorize a transaction preparation. | A preparation needs an active custody account that you hold in this organization, on the requested network, with a provider that lets you sign yourself. The account this request relies on does not meet those conditions. An account that does not exist, or that another user or organization holds, gets this same answer. | Prepare the operation with an externally signing custody account that you hold in this organization on the requested network. An account whose keys a managed custody provider holds does not use preparations: send its operations through their regular API routes, and the platform signs them. | info | No | 422 |
| DALP-14033 | `TRANSACTION_PREPARATION_BINDING_CONFLICT` | client | The request does not match how the transaction preparation is bound. | A preparation fixes its signing method, executor, custody account and operation when you create it, and every later call must match them. This request sends a claim, user operation or authorization artifact for a different signing method or executor, or an artifact kind this route never accepts. A create request gets this answer when its idempotency key already names a different preparation, or when the smart wallet already has an open operation its owner signs. The request is also refused when a smart wallet cannot prefund the operation, a later step of a chain carries value, or the transaction queue refuses the operation as input. | Read the preparation and send the claim, attachment or artifact that matches its `signingMethod` and `executor`. Use a new idempotency key for a different operation. Finish or let expire the open owner-signed operation before you prepare another on the same smart wallet. | info | No | 409 |
| DALP-14034 | `TRANSACTION_QUEUE_SMART_WALLET_GAS_REQUIRED` | domain | The smart wallet needs gas for this operation. | This wallet signs its own user operations, and nothing sponsors them, so its smart wallet pays the gas. It holds less native currency than the operation needs. | Send at least `shortfallWei` wei of the chain's native currency to `smartWalletAddress`, then submit the request again. | info | No | 422 |
| DALP-14035 | `TRANSACTION_CANCEL_CUSTODY_PARKED` | domain | A custody provider holds this transaction for approval. | A custody provider holds an approval request tied to this cancel. Either the provider held the replacement that the cancel signed and the platform withdrew it, or the provider holds this transaction and the platform could not withdraw it. The platform cannot withdraw a request when the provider does not support withdrawal, did not confirm it, or the request already ended. | Read the transaction status. When `custodyApproval.withdrawable` is true, send the cancel again after the platform next reads the request at the provider. Otherwise send the cancel again, which files a new request if the held replacement was withdrawn. If the provider still holds the request, reject it in the custody provider's approval console or wait for the approvers to decide. | info | No | 409 |
| DALP-14036 | `ORDER_SIGNING_PENDING` | domain | The order signature waits for a custody approval. | A custody approval rule holds the order signature until an approver decides. | Ask an approver to approve the request with this approval reference before it expires. Then sign the same order again with the same fields, salt and expiry. | info | No | 409 |
| DALP-14037 | `TOKEN_PERMIT_SIGNING_PENDING` | domain | The permit signature waits for a custody approval. | A custody approval rule holds the permit signature until an approver decides. | Ask an approver to approve the request with this approval reference before it expires. Then sign the same permit again with the same spender, value and deadline. | info | No | 409 |
| DALP-14038 | `TOKEN_PERMIT_CUSTODY_APPROVAL_CLOSED` | domain | The custody approval for the permit closed. | The custody approver rejected the permit signature, or its approval expired before an approver decided. | Ask the custody approver why the request closed. Then sign a new permit. | info | No | 409 |
| DALP-14039 | `TOKEN_CREATE_WORKFLOW_FAILED` | operational | Token creation workflow ended in a terminal failure. | A step of the token creation workflow failed for a reason other than a contract revert or a temporary outage, so the workflow stopped. Earlier steps may already have landed: the token can exist on chain even though the create did not finish. | Read data.step for the failed step (absent when it is not identified) and data.reason for the kind of failure (transaction-failed, data-invalid, workflow-check-failed, price-feed-not-authorized, price-feed-conflict, price-feed-unavailable, signing-failed or unknown), check the token on chain before creating again, then submit a new create with a new idempotency key. Send the request id to support if the cause is unclear. | error | No | 500 |
| DALP-14040 | `PAYMASTER_SPONSORSHIP_UNAVAILABLE` | client | Paymaster sponsorship is unavailable on this network. | Sponsorship needs the organization to use smart accounts, an active system on the network, a deployed paymaster, and a ready paymaster signing key; `data.blocker` names the first one that is missing. | Resolve the condition `data.blocker` names (enable smart accounts, wait for the network's system and paymaster to finish deploying, or let the paymaster signer finish provisioning), then retry. | info | No | 409 |
| DALP-14041 | `TREASURY_DISCLOSURE_WITHHELD` | permission | Redemption funding is not shared with holders. | This organisation has not allowed holders to see how the issuer funds redemptions, and the caller does not manage this token. | Ask the issuer to share redemption funding with holders in the organisation settings, or use a wallet that manages the token. | info | No | 403 |
| DALP-14042 | `TOKEN_CREATE_PAYOUT_TREASURY_IS_TOKEN` | domain | The `{feature}` treasury `{treasury}` is a token contract, not a wallet. | A token contract cannot pay out the payment currency, so every payout drawn from it reverts. | Pick the wallet that holds the payment currency. | info | No | 422 |
| DALP-14043 | `CORPORATE_ACTION_WATERFALL_CLASS_DIVIDEND` | domain | This share class pays through a distribution waterfall, so it takes no plain dividend. | A class of an instrument that carries a distribution waterfall is paid by the waterfall's coordinated distribution. A plain dividend on that class would pay its holders outside the waterfall's priority order. | Open a coordinated distribution on the instrument instead. It declares each class's dividend in waterfall order. | info | No | 409 |
| DALP-14044 | `CORPORATE_ACTION_COORDINATED_DIVIDEND_HELD` | domain | A coordinated distribution still holds this dividend. | An in-flight coordinated distribution declared this dividend as one of its class legs. Cancelling it alone would leave that run paying the other classes without this one. | Abort the coordinated distribution named in the message. Its abort cancels every dividend it declared. | info | No | 409 |
| DALP-14045 | `settlement.http.PROJECTION_INVALID` | operational | Indexed token data validation failed. | An indexed token row the settlement read needs does not match its expected shape, so the read cannot succeed as asked. | Ask an operator to reindex the affected token range, then request the read again. If it still fails, contact support with the X-Request-Id response header. | error | No | 500 |
| DALP-14046 | `CORPORATE_ACTION_CLASS_TREASURY_MISMATCH` | domain | A share class pays its dividends from a wallet other than the distribution waterfall. | A coordinated distribution pays each class's holders from the money the waterfall holds for that class. A class whose dividend-yield feature pays from another treasury would draw its claims from that treasury, and the money the waterfall holds for the class could never be paid out. | Give the named class a dividend-yield feature whose treasury is the instrument's distribution waterfall, then preview again. | info | No | 409 |
| DALP-14047 | `CORPORATE_ACTION_HOLDER_LIMIT_EXCEEDED` | domain | A share class had more holders on the record date than one dividend can pay. | A class dividend records at most 16,384 holders. The named class had more on the record date, so its dividend could not be recorded and the money funded for it could not be claimed. | Do not fund this distribution. Abort it and pay the class another way. | info | No | 409 |
| DALP-14048 | `CORPORATE_ACTION_UNDECLARED_LEG_UNRELEASED` | domain | An earlier distribution still holds money for a class dividend that was never declared. | One class's leg of an earlier distribution was funded, its dividend was never declared, and its money has not been released. Until it is released, that leg still counts toward the class's recovered capital, so a new priority distribution would pay the class less than it is owed. | Open the earlier corporate action named in the refusal, release that class's money, then preview this distribution again. | info | No | 409 |
| DALP-14049 | `CORPORATE_ACTION_MATURITY_DATE_NOT_REACHED` | domain | This bond matures at `{maturityDate}`, so its maturity redemption cannot be recorded yet. | Recording a maturity redemption matures the bond on chain. The bond accepts that only when the chain time has reached its maturity date, and the chain time is still before that date. | Record the maturity redemption again at or after the maturityDate in this response. | info | Yes | 409 |

The previous page is [DALP-13000 to DALP-13999](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-13000-13999). The next page is [DALP-14050 to DALP-14099](https://docs.settlemint.com/docs/api-reference/errors/platform-api-error-reference/dalp-14050-14099).
