Platform API Error Reference
Complete reference of all Platform API error codes returned by the DALP API, with HTTP status, retryability, and remediation guidance.
DALP returns Platform API error identifiers as stable, machine-readable values in API error responses. Use this page when a Platform API client receives a DALP-#### code and needs to decide whether to fix the request, refresh indexed state, or retry later.
Each error maps to an HTTP status, a retry flag, a public reason, and a recommended recovery step. SDK clients expose the same fields on DalpSdkError: id, category, status, retryable, message, why, fix, and optional redacted details. REST and RPC callers should read these fields from the public error envelope instead of matching on free-text messages.
Retry only when the row marks the error as retryable. For retryable dependency or indexing errors, retry with a short backoff and check the affected resource state before you resubmit a mutating operation. For a non-retryable client, auth, permission, domain, or contract error, change the request, the credentials, the permissions, the token state, or the upstream provider configuration before you try again.
If an error tells you to contact support, include the request id from the API response or the logs. Do not send secrets, raw signatures, private keys, or unredacted identity documents.
On-chain revert codes are documented separately in the error code reference, and the DALP error index lists every id from both pages in one lookup table. Compliance-provider errors may require provider-side checks: Sumsub, Elliptic, Notabene.
How to use this reference
- Match the
idin the error envelope to the table row. - Check the HTTP status and the category to separate request problems from permission, domain, dependency, contract, and operational failures.
- Use
Retryableas the retry gate.Yesmeans the condition may clear after indexing, dependency recovery, workflow completion, or another transient state change.Nomeans the caller must change something first. - Follow the row's suggested fix. For a mutating operation, verify the current resource or transaction state before you retry, so the client does not submit the same operation twice.
Do not parse the human-readable Message, Why, or Suggested Fix columns for program logic. Public copy can become clearer over time. Branch on the stable DALP-#### code together with the retry flag and the HTTP status from the API error envelope.
Contents
- Client request errors: 350 errors.
- Authentication errors: 17 errors.
- Permission errors: 77 errors.
- Domain rule errors: 91 errors.
- Operational errors: 100 errors.
- Dependency errors: 125 errors.
- Contract errors surfaced at the API: 3 errors.
- Vendor boundary errors: 1 error.
- Unclassified errors: 1 error.
Client request errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0001 | The request could not be read. | The request body, query, or headers did not match the published schema for this route. | Check the field names, types, and content type against the route schema, then send the request again. | info | No | 400 |
| DALP-0022 | Resource not found. | The requested resource could not be found. | Check the identifier and retry only if the resource should exist. | info | No | 404 |
| DALP-0023 | Resource already exists. | The request tried to create or register a resource that already exists. | Use the existing resource or choose a unique identifier. | info | No | 409 |
| DALP-0024 | The change conflicts with the current resource state. | Another write already changed this resource, or the resource is already in the requested state. | Read the current resource, resolve the difference, and send the request again. | info | No | 409 |
| DALP-0040 | No system deployment found for this organization. | The operation requires an indexed system deployment, but none is available for the active organization. | Deploy a system for the organization, wait for indexing, and retry. | info | No | 404 |
| DALP-0046 | Reindex request wasn't accepted. | The requested blockchain reindex range, target, or mode was rejected by the Ledger Index reindex admin. | Adjust the reindex request to a supported chain, range, and mode before retrying. | info | No | 400 |
| DALP-0048 | API monitoring log entry was not found. | No API monitoring log entry exists for the requested id in the active organization. | Verify the log entry id and organization, then retry. | info | No | 404 |
| DALP-0049 | API monitoring request type isn't recognized. | The request type filter does not match a request type known to API monitoring. | Use one of the documented request type values, or omit the filter. | info | No | 400 |
| DALP-0051 | Invitation not found. | No invitation matching the requested id exists for the caller. | Check the invitation link or ask the organization to issue a new invitation. | info | No | 404 |
| DALP-0052 | Invitation has expired. | The invitation exists but its expiry time has passed. | Ask the organization to send a fresh invitation. | info | No | 403 |
| DALP-0053 | Invitation revoked. | The invitation was explicitly revoked or is no longer in an accepted state for this flow. | Ask the organization to send a fresh invitation. | info | No | 403 |
| DALP-0054 | Deployment not found. | The requested deployment id is malformed, stale, or does not belong to a deployment the caller may observe. | Refresh deployment state and subscribe using the current deployment id. | info | No | 404 |
| DALP-0059 | Encrypted XvP secret was not found for this settlement. | The settlement exists but the encrypted secret payload is missing from XvP secret storage. | Verify the settlement address and ensure the secret was created before decrypting. | info | No | 404 |
| DALP-0060 | XvP secret uses an unsupported encryption method. | The stored secret payload was encrypted with a method this Platform API version does not support. | Recreate the settlement secret with the supported encryption method. | info | No | 400 |
| DALP-0061 | XvP hashlock must be a 0x-prefixed hex string. | A cross-chain XvP settlement was created with a hashlock that is not valid hex. | Send a 0x-prefixed hashlock or provide the secret so the API can derive it. | info | No | 400 |
| DALP-0062 | Cross-chain XvP settlements require a secret or hashlock. | The settlement includes an external flow, so a secret or precomputed hashlock is required to coordinate settlement. | Provide a settlement secret or a valid hashlock in the request. | info | No | 400 |
| DALP-0063 | XvP settlement factory addon was not found in the system registry. | The requested factory address is not indexed as an XvP settlement addon for the authenticated system. | Use an installed XvP factory address or retry after addon indexing catches up. | info | Yes | 404 |
| DALP-0064 | Country code required for V3 XvP settlement factories. | The selected XvP factory version requires an ISO 3166-1 numeric country code. | Include a valid country code in the XvP creation request. | info | No | 400 |
| DALP-0065 | XvP settlement addon missing from the current system. | The authenticated system does not have an indexed XvP settlement addon. | Install the XvP settlement addon or retry after indexing catches up. | info | Yes | 404 |
| DALP-0066 | Provided system addon does not belong to the authenticated system. | The request references a system addon address that is not part of the caller's active system. | Use an addon address from the authenticated system. | info | No | 404 |
| DALP-0067 | Participant wallet address required. | The XvP list request needs a participant wallet filter and the authenticated user does not have a wallet to use as the default. | Provide a participant wallet filter or complete wallet onboarding. | info | No | 400 |
| DALP-0068 | XvP settlement was not found. | The requested settlement address is not indexed for the authenticated system. | Verify the settlement address or retry after indexing catches up. | info | Yes | 404 |
| DALP-0070 | XvP approval was not found. | The caller has not approved the requested XvP settlement or the approval is not indexed. | Approve the settlement first or retry after indexing catches up. | info | No | 404 |
| DALP-0071 | Signature must be a valid hex string. | The XvP signature payload is not a 0x-prefixed hexadecimal value. | Sign the settlement message again and submit the hex-encoded signature. | info | No | 400 |
| DALP-0074 | Fixed yield schedule was not found. | The requested fixed-yield schedule is not indexed for the authenticated system or addon. | Verify the schedule address or retry after indexing catches up. | info | Yes | 404 |
| DALP-0078 | Yield schedule addon was not found in the system registry. | The authenticated system does not have the fixed-yield addon indexed. | Install the addon or retry after indexing catches up. | info | Yes | 404 |
| DALP-0080 | Input validation failed. | The request body or parameters did not match the API contract. | Check the request fields against the API documentation and retry with valid values. | info | No | 422 |
| DALP-0085 | JSON-RPC request processing failed. | The JSON-RPC request is missing required fields or uses an unsupported shape. | Send a valid JSON-RPC 2.0 request with the required method, id, and params fields. | info | No | 400 |
| DALP-0088 | Asset class definition not found. Verify the ID is correct and belongs to your organization or is a system class. | The platform looked up the asset class definition by the supplied ID and found no record visible to your organization. A definition is visible if your organization owns it or it is a platform-wide system class. | Confirm the ID matches an existing definition owned by your organization or a system class. Re-fetch the list of asset class definitions to verify the ID before retrying. | info | No | 404 |
| DALP-0089 | Asset class definition not found. Verify the ID is correct and belongs to your organization. | The platform searched for the asset class definition scoped to your organization and found no matching record. System class definitions are outside the delete scope and return this error when targeted. | Confirm the ID corresponds to a custom definition owned by your organization. Re-fetch your organization's asset class definitions to verify the ID before retrying. | info | No | 404 |
| DALP-0090 | Asset class definition not found; concurrent deletion may have removed the definition. | The platform verified the definition existed at the start of the update, but by the time it applied the change or re-read the result, the record was no longer present. A parallel delete request is the most likely cause. | Re-fetch the asset class definition to confirm it still exists before retrying the update. If the definition was deleted, recreate it or use a different definition ID. | info | No | 404 |
| DALP-0091 | Asset type template not found. | The platform searched for the asset type template by the supplied ID and found no record owned by your organization or available as a system template. | Confirm the ID matches an existing template owned by your organization or a published system template. Re-fetch the list of asset type templates to verify the ID before retrying. | info | No | 404 |
| DALP-0095 | Compliance template not found. | No compliance template matching the requested ID exists within the calling organization's scope. The platform queries both organization-owned and shared system templates; a mismatch on either the ID or the owning organization returns this error. | Confirm the template ID belongs to your organization or is a system template, then retry the request. | info | No | 404 |
| DALP-0096 | Contact not found. | No address-book contact with the given identifier exists for the authenticated user. The contact may have been deleted or the identifier belongs to a different user. | Verify the contact identifier against the contacts list for this user, then retry with a valid id. | info | No | 404 |
| DALP-0099 | Empty array in {fieldName}. | A batch operation received an empty array for {fieldName}. The platform requires at least one element to proceed. | Provide at least one element in {fieldName} and retry the request. | info | No | 400 |
| DALP-0100 | Array length mismatch in {fieldName}. | A batch operation received arrays of different lengths. All arrays supplied to the same batch call must have the same number of elements. | Ensure every array in the request has the same element count, then retry. | info | No | 400 |
| DALP-0101 | {fieldName} exceeds the allowed element count. | The array provided for {fieldName} contains more elements than this batch operation allows. | Split the request into smaller batches that each stay within the documented element limit, then retry. | info | No | 400 |
| DALP-0103 | No active claim found for topic {topicId} on identity {identityAddress}. | The platform found no non-revoked, non-expired claim for topic {topicId} on identity {identityAddress} in the claim registry. | Verify that the claim was issued and has not expired or been revoked, then retry. | info | No | 404 |
| DALP-0104 | No enabled topic scheme {topicId} found in registry {registryAddress}. | The platform could not find an enabled topic scheme named {topicId} in the registry at {registryAddress}. The topic scheme may not have been registered or may have been disabled. | Verify the topic name is correctly spelled and enabled in the system's topic scheme registry, then retry. | info | No | 404 |
| DALP-0105 | Wallet ID not found for claim issuance. | The signing wallet for the participant has no key identifier (walletId), which the platform requires to submit a claim issuance transaction. This typically means the user's wallet was not fully provisioned. | Complete wallet provisioning for this user, ensure the session includes walletId, and retry. | info | No | 404 |
| DALP-0106 | Wallet ID not found for claim revocation. | The signing wallet for the participant has no key identifier (walletId), which the platform requires to submit a claim revocation transaction. This typically means the user's wallet was not fully provisioned. | Complete wallet provisioning for this user, ensure the session includes walletId, and retry. | info | No | 404 |
| DALP-0107 | baseCurrency is not a valid fiat currency. | The value supplied for baseCurrency is not a recognized fiat currency code. The currency conversion helper only accepts standard fiat currency codes. | Supply a supported fiat currency code (for example USD, EUR, GBP) as baseCurrency and retry. | info | No | 400 |
| DALP-0109 | Feature "{featureName}" has a malformed address returned by the indexer. | The platform resolved feature {featureName} from the token's indexed configuration, but the stored address {address} is not a valid Ethereum address. This indicates a data integrity issue in the feature registry. | Contact support with the request id. The feature address stored in the indexer needs to be investigated. | info | No | 400 |
| DALP-0112 | System address wasn't accepted: {systemAddress}. | The system address from the request or the active system context did not pass Ethereum address validation. The value is either malformed or not a checksummed EVM address. | Provide a valid 0x-prefixed Ethereum address for the system address field and retry. | info | No | 400 |
| DALP-0114 | Sync queue execution returned no data; provide a readResult callback. | The transaction queue completed synchronously but the route did not supply a readResult callback, so no response data could be constructed from the confirmed transaction. | Contact support with the request id. This is a server-side integration issue, not a problem with the request itself. | info | No | 400 |
| DALP-0116 | Exchange rate not found. | No active FX feed covers the requested currency pair on the current chain, or the feed exists but has not yet recorded an observed rate. | Check the supported currencies list to confirm the pair is available. If the pair was recently added, retry after the feed publishes its first observation. | info | No | 404 |
| DALP-0117 | Base currency {baseCurrency} not found. | The requested base currency is not recognized as a supported fiat currency code for exchange rate operations. | Use the supported currencies endpoint to retrieve the list of accepted base currency codes, then retry with a valid value. | info | No | 404 |
| DALP-0119 | No manual exchange rate found for {baseCurrency}/{quoteCurrency}. | The platform looked for a manually configured exchange rate for the requested currency pair but found no entry. | Configure a manual exchange rate for the {baseCurrency}/{quoteCurrency} pair before retrying this operation. | info | No | 404 |
| DALP-0120 | Quote currency {quoteCurrency} not found. | The requested quote currency is not recognized as a supported fiat currency code for exchange rate operations. | Use the supported currencies endpoint to retrieve the list of accepted quote currency codes, then retry with a valid value. | info | No | 404 |
| DALP-0121 | External token registry not found in system. | The platform could not locate an ExternalTokenRegistry contract linked to this system. The registry must be deployed and registered before external tokens can be registered. | Verify that the system has an ExternalTokenRegistry deployed and that its address is registered in the system configuration. | info | No | 404 |
| DALP-0122 | External token registry not found in system. Ensure the system has an ExternalTokenRegistry deployed and registered. | The platform could not locate an ExternalTokenRegistry contract linked to this system. The contract must be deployed and its address registered before external tokens can be registered. | Deploy an ExternalTokenRegistry contract for the system and register its address in the system configuration, then retry the registration. | info | No | 404 |
| DALP-0124 | AdapterCreated event not found in transaction {transactionHash}. The adapter may have deployed but log extraction failed to yield an address. | The adapter creation transaction completed, but the platform could not find a matching AdapterCreated event in the transaction receipt logs for the requested subject and topic. The log may belong to a different factory or was not emitted. | Check the transaction on-chain to confirm the adapter was created for the correct subject and topic. If the adapter exists, retrieve its address directly from the transaction receipt. | info | No | 404 |
| DALP-0125 | Feed with address {feedAddress} not found. | The platform could not find a feed at the given address in the system index. The feed may not have been registered, or the indexer has not yet processed its registration event. | Confirm the feed address is correct and the feed has been registered in the system. If the feed was recently registered, wait for the indexer to catch up and retry. | info | No | 404 |
| DALP-0126 | Feed contract at {feedAddress} is not a valid AggregatorV3 feed. Verify the address and confirm the contract is deployed. | The platform attempted to call the AggregatorV3 interface on the given address and the call failed. The contract at that address does not implement the expected interface or is not deployed on the current network. | Verify the feed address is correct and that the contract is deployed on the target network. Confirm the contract exposes the AggregatorV3 interface. | info | No | 400 |
| DALP-0127 | FeedsDirectory not found for system {feedAddress}. Ensure V3 bootstrap completed and the indexer has caught up. | The platform could not find a FeedsDirectory address for this system in the index. This means the system has not completed its V3 bootstrap, or the indexer has not yet processed the bootstrap event. | Complete the V3 bootstrap for the system and wait for the indexer to process the event before retrying. | info | No | 404 |
| DALP-0128 | FeedCreated event not found in transaction {transactionHash}. The feed may have deployed but log extraction failed to yield an address. | The feed creation transaction completed, but the platform could not find a matching FeedCreated event in the transaction receipt logs for the requested subject and topic. The log may belong to a different factory or was not emitted. | Check the transaction on-chain to confirm the feed was created for the correct subject and topic. If the feed exists, retrieve its address directly from the transaction receipt. | info | No | 404 |
| DALP-0130 | Topic ID "{topicId}" must be a numeric string, but received "{topicId}": must be a numeric string. | The topicId value provided is not a numeric string. The platform requires topicId to contain only digit characters so it can be parsed as a number. | Supply topicId as a string of digits only (for example "42"), or provide topicName instead to let the platform derive the topic identifier. | info | No | 400 |
| DALP-0131 | Round {roundId} not found. | The feed contract does not have data for the requested round. The round may not exist, or the feed is configured to retain only the latest value and does not store historical rounds. | Verify the round ID is correct. If the feed is in LATEST_ONLY mode, historical round data is not available. | info | No | 404 |
| DALP-0132 | Transaction hash format wasn't accepted: "{transactionHash}". Expected 0x-prefixed hex string from transaction queue. | The transaction queue returned a hash value that is not a valid 0x-prefixed hexadecimal string. This indicates an internal state issue with the transaction result. | Retry the operation. If the error persists, contact support with the request ID and the transaction hash value shown in the message. | info | No | 400 |
| DALP-0134 | Identity factory address not found for the user's identity. This indicates a data integrity issue in the indexer, contact support. | The platform located an identity contract for the user but the identity factory address is missing from the index record. This points to an incomplete index entry for the identity. | Contact support with the request ID. This condition requires platform-side investigation to repair the index record. | info | No | 404 |
| DALP-0136 | No active recovery workflow found for user {value}. | The platform could not find a running or recently completed recovery workflow for the specified user. Either no recovery was initiated, or the workflow service could not be reached. | Confirm a recovery workflow was started for the user. If the recovery was just initiated, wait a moment and retry. Contact support with the request ID if the problem continues. | info | No | 404 |
| DALP-0137 | No wallet specified and user has no default wallet. Provide a wallet address in the request. | No wallet address was included in the request, and the platform could not resolve a default executor wallet for this user in the active organization. The user may not yet have a wallet provisioned. | Include a wallet field in the request body with a valid wallet address that belongs to the target user. | info | No | 400 |
| DALP-0138 | No wallet specified and user has no personal identity wallet. Provide a wallet address in the request. | No wallet address was included in the request, and the platform found no personal signing or smart wallet for this user. The user's personal wallet may not have been created yet. | Include a wallet field in the request body with a valid wallet address that belongs to the target user. | info | No | 400 |
| DALP-0140 | User not found. Verify the user ID exists in the system. | No user matching the provided ID was found within the caller's organization. The user may not exist or may not be a member of this organization. | Confirm the user ID is correct and that the user is a member of the active organization before retrying. | info | No | 404 |
| DALP-0150 | The wallet header value was not accepted. | A wallet header was present in the request but the value did not match the expected format or accepted set of values. | Check the wallet header value and ensure it is a valid, correctly formatted address or accepted token. | info | No | 400 |
| DALP-0159 | Asset class selection was not accepted: the asset class must belong to your organization or be a system class. | The assetClassId provided does not match any asset class visible to the requesting organization. The class either belongs to a different organization or does not exist. | Supply an assetClassId that belongs to your organization or is a platform system class. Retrieve the list of available classes from the asset class definitions endpoint. | info | No | 400 |
| DALP-0164 | Unrecognized typeId "{typeId}": provide a known typeId. | The typeId value supplied when creating the template does not match any type registered in the platform's asset type registry. | Provide a typeId from the list of recognized asset types. Check the asset type reference documentation for the set of supported values. | info | No | 400 |
| DALP-0171 | Organization not found. | The orgId supplied in the global theme request does not match any organization in the platform. The organization may not exist or may have been deleted. | Verify the orgId value and confirm the organization exists before setting it as the global theme source. | info | No | 404 |
| DALP-0172 | Setting not found. | No setting record with the requested key exists for the authenticated organization. The key may be misspelled or the setting may not have been created. | Verify the setting key and confirm it exists for your organization before attempting to delete it. | info | No | 404 |
| DALP-0173 | File size exceeds {value}MB limit. | The decoded logo file data exceeds the maximum permitted upload size. The platform enforces a per-upload file size ceiling on theme logo uploads. | Reduce the file size to within the stated limit and resubmit the request. | info | No | 400 |
| DALP-0175 | Theme payload exceeds supported limits. | One or more fields in the submitted theme configuration exceed the platform's size or structural constraints. This is checked before any data is stored. | Review the violations detail returned with this response and reduce the offending field values to within the stated limits, then resubmit. | info | No | 413 |
| DALP-0181 | Approval not found for the supplied user operation hash. | Platform API could not find a smart-wallet approval matching the user operation hash in the active organization scope. | Verify the userOpHash from the preview or approval creation response, then retry. | info | No | 404 |
| DALP-0183 | userOpHash needs to be a 0x-prefixed hex string. | The smart-wallet approval request included a user operation hash that is not valid hex, so Platform API cannot safely look up or sign the approval. | Send the exact 0x-prefixed userOpHash returned by the smart-wallet preview or approval creation response. | info | No | 400 |
| DALP-0188 | initData is not a 0x-prefixed hex string. | The smart-wallet creation request included initData that is not valid hex. | Send initData as a 0x-prefixed hex string, or omit it when the wallet does not need initializer data. | info | No | 400 |
| DALP-0189 | No bundler wallet provisioned for this organization. Complete system deployment first, the provisioning phase creates the bundler wallet. | The organization has no provisioned bundler wallet, so smart-wallet operations that depend on account abstraction cannot run. | Complete system deployment so the bundler wallet is provisioned, then retry. | info | No | 400 |
| DALP-0190 | No wallet ID available. Ensure the user session has a valid bundler wallet configured. | The user session has no bundler wallet configured for smart-wallet signing. | Configure a bundler wallet for the session, then retry the smart-wallet operation. | info | No | 400 |
| DALP-0207 | This wallet has no multisig threshold configured. Set a threshold before creating approvals. | The wallet exists but its multisig threshold is unset, so approval creation is blocked. | Set a multisig threshold on the wallet, then retry approval creation. | info | No | 400 |
| DALP-0208 | Wallet not found. Verify the address is correct and the wallet has finished indexing. | The platform could not find a smart wallet at the supplied address within the current organization scope. The wallet may not have been indexed yet, or the address may be from a different organization. | Confirm the wallet address is correct and belongs to this organization. If the wallet was recently created, wait for indexing to complete, then retry. | info | No | 404 |
| DALP-0209 | Smart wallet not found. Verify the address is correct and the wallet has finished indexing. | The platform could not find the smart wallet at the supplied address in the current organization scope. The wallet must be indexed and have a system scope assigned before approvals can be created. | Confirm the wallet address is correct and that the wallet has been indexed and assigned to a system. Wait for indexing to complete if the wallet was recently created, then retry. | info | No | 404 |
| DALP-0210 | Smart wallet not found. Verify the address is correct and the wallet has finished indexing. | The platform could not find a smart wallet at the supplied address in the current organization or system scope. The gas-status endpoint requires the wallet to be present in the indexer before it can check paymaster and balance data. | Confirm the wallet address is correct. If the wallet was recently created, wait for indexing to complete, then retry the gas-status request. | info | No | 404 |
| DALP-0211 | Smart wallet not found. Verify the address is correct and the wallet has finished indexing. | The platform could not find a smart wallet at the supplied address in the current organization scope. The wallet read endpoint requires the wallet to be present in the indexer. | Confirm the wallet address is correct and belongs to this organization. If the wallet was recently created, wait for indexing to complete, then retry. | info | No | 404 |
| DALP-0212 | Smart wallet not found. The indexer may not have reached this wallet yet. | The platform found the wallet on-chain but the indexer has not yet recorded it for this organization. Metadata updates require the indexed wallet record to be present. | Wait a short time for the indexer to process the wallet, then retry the update. | info | Yes | 404 |
| DALP-0213 | Smart wallet not found after indexing. The indexer may not have processed the AccountCreated event yet. | The wallet transaction completed, but the indexer has not yet reflected the AccountCreated event. | Retry after a short backoff while the indexer catches up. | info | Yes | 404 |
| DALP-0218 | Unexpected error: address configuration failed to apply. | The platform selected the grantMultipleRoles encoding path (one address, multiple roles) but the resolved address was unexpectedly absent after deduplication. This reflects an internal state inconsistency rather than a caller error. | Retry the request. If the problem persists, contact support with the request id. | info | No | 400 |
| DALP-0227 | Addon factory {factoryAddress} was not found in the indexer. | The platform looked up the addon factory by its on-chain address in the indexer and found no matching record. The factory may not yet be indexed or the address is not registered on this system. | Confirm the factory address is correct and that the indexer has processed the registration transaction. Retry after the indexer catches up. | info | No | 404 |
| DALP-0229 | Addon factory registration completed but no block number recorded; all transaction receipts lacked blockNumber. | All addon registration transactions completed and receipts were returned, but none of the receipts carried a blockNumber. The platform requires a block number to mark the registration as indexed and return a finalized result. | Contact support with the request id. This indicates an unexpected chain or receipt format issue. | info | No | 400 |
| DALP-0234 | System addon registry not found. | The system does not have a deployed addon registry. The platform requires an addon registry to be present before any addon can be created or registered. | Complete the system bootstrap to deploy the addon registry, confirm the indexer has caught up, then retry the addon creation request. | info | No | 404 |
| DALP-0242 | Topic "{topicId}" not found. | The platform queried the indexer's topic scheme registry and found no topic registered under the name {topicId}. The topic may not have been created, or the indexer may not have caught up with a recent creation transaction. | Verify the topic name is correct and that the topic was successfully created. If the topic was recently created, wait for the indexer to catch up and retry. | info | No | 404 |
| DALP-0245 | System compliance contract not found. | The platform checked the system's indexed state and found no compliance contract deployed. The compliance module uninstall operation requires a compliance contract to be present. | Confirm the system bootstrap completed successfully and that the compliance contract is deployed and indexed. Retry after the indexer catches up. | info | No | 404 |
| DALP-0246 | Compliance module implementations not found in indexer for: {moduleAddress}. | The platform looked up the compliance module type names in the indexed directory tables but found no registered implementation address for the requested type(s). This happens when the caller provides module types by name without an explicit implementation address and the on-chain directory has not yet been indexed. | Supply the implementation address directly in the request body, or wait for the directory indexer to catch up and retry. | info | No | 404 |
| DALP-0247 | Module {registryAddress} is not registered in the compliance module registry. | The platform checked the compliance module registry for the given module address and found no matching entry. The module must be registered before it can be uninstalled. | Confirm the module address is correct and that it appears in the system's compliance module registry before calling this operation. | info | No | 404 |
| DALP-0250 | System factory address not found in directory. | The platform queried the on-chain directory but no system factory address is recorded for this network. The directory may not yet be indexed or the factory was never registered. | Confirm the system factory contract is deployed and registered in the directory, and that the indexer has processed the registration block before retrying. | info | No | 404 |
| DALP-0251 | System address missing from request. | The platform could not resolve a system address for the organization because neither the request body nor the organization's stored configuration contains one. | Include a system address in the request, or ensure the organization has a system address configured before calling this operation. | info | No | 400 |
| DALP-0260 | Identity factory address not found. | The platform polled the indexed directory for the identity factory address and found none within the readiness window. The factory may not have been deployed or the indexer has not yet processed the registration block. | Confirm the identity factory is deployed and registered in the directory, wait for the indexer to catch up, then retry. | info | No | 404 |
| DALP-0261 | Address format not accepted for {address}. Expected a 0x-prefixed 40-character hex Ethereum address. | The platform attempted to normalize the provided address to lowercase and found it does not conform to the Ethereum address format. The value is not a valid 0x-prefixed 40-character hex string. | Provide a valid Ethereum address: a 0x-prefixed string of exactly 40 hexadecimal characters. | info | No | 400 |
| DALP-0263 | Identity {identityAddress} has no associated account. | The identity contract at the given address exists in the system but has no linked wallet account. Issuing a knowYourCustomer claim requires the identity to have an associated account so the platform can match it against the approved KYC profile. | Verify that the target identity was fully deployed and linked to a wallet before issuing this claim. Use the identity read endpoint to confirm the account field is populated. | info | No | 400 |
| DALP-0264 | No identity contract found for wallet "{identityAddress}". | The platform could not find an identity contract associated with the given wallet address. The wallet has not completed the identity creation step, or the indexer has not yet recorded the deployed contract. | Confirm the wallet has completed identity creation before calling the register-pending endpoint. If creation finished recently, wait a moment for the indexer to process the block and then retry. | info | No | 404 |
| DALP-0265 | No identity found for {identityAddress}. | The platform could not locate an identity contract for the requested address. This occurs when the wallet has no registered identity in the current system, or when the wallet resolver cannot find a signing or executor wallet for the authenticated participant. | Verify the identity address belongs to an onboarded participant in this system. If the participant was recently created, allow a moment for the indexer to process the registration before retrying. | info | No | 404 |
| DALP-0266 | System not found. | The platform looked up the requested system address in the indexer but found no matching system record. The address may be unknown or may belong to a different organization. | Confirm the system address is correct and belongs to your organization. If the system was recently deployed, wait for the indexer to process the deployment block and retry. | info | No | 404 |
| DALP-0267 | Identity not found after creation. Indexer did not process the block within the timeout. | The platform submitted the identity creation transaction and it was confirmed on-chain, but the indexer did not index the resulting identity record within the allowed read-back window. No on-chain identity address was returned by the workflow to use as a fallback. | Retry the request. The identity was created on-chain and should become visible once the indexer catches up. If the problem persists, contact support with the request id. | info | No | 404 |
| DALP-0268 | Identity {identityAddress} was not found in the registry. | The platform searched the identity registry for the given address but found no active registration. The identity may not exist, may have been removed, or may belong to a different registry. | Confirm the identity address is registered in the system's active identity registry. Use the identity read endpoint to check the registration status before retrying. | info | No | 404 |
| DALP-0269 | Identity {identityAddress} is not registered in this system's identity registry. | The platform found the identity contract but it is not registered in the current system's identity registry. A claim can only be revoked on an identity that is actively registered in the registry the system controls. | Register the identity in this system's identity registry before attempting to revoke claims. Use the identity registration endpoint if the identity contract already exists. | info | No | 404 |
| DALP-0270 | Identity for "{identityAddress}" is not registered yet. | The platform located an identity contract for the wallet but its on-chain registration in the identity registry has not completed. The registration transaction may still be pending, or the identity may have been created without being registered. | Wait for the identity registration to complete and confirm the identity shows as registered before retrying. You can check status via the identity read endpoint. | info | No | 404 |
| DALP-0272 | Topic {topicId} is not registered in the topic scheme registry. | The platform searched the registered topic schemes for the requested topic name and found no match. The topic may not exist in this system's claim-topics configuration. | Retrieve the list of registered claim topics via the claim-topics endpoint and use a topic name from that list. | info | No | 404 |
| DALP-0276 | Unexpected: claim missing after validation. | The platform confirmed exactly one active claim matched the revocation criteria, but the claim record was unavailable when the platform attempted to read it. This is a defensive guard against an unexpected internal state. | Retry the request. If the problem persists, contact support with the request id and the target identity address. | info | No | 400 |
| DALP-0277 | Identity for wallet "{identityAddress}" is not registered in the system. | The platform checked whether the wallet has an identity contract and found it does not, or found no active registration targets for the wallet in the system's identity registry. The wallet has not been onboarded. | Onboard the wallet by creating an identity for it before performing this operation. Use the identity creation endpoint to register the participant. | info | No | 404 |
| DALP-0278 | No system found for this organization. | The platform could not find a deployed system associated with the current organization. The organization may not have completed system deployment, or the system record may not yet be indexed. | Verify the organization has completed system setup and that the deployment has been indexed. Retry after the indexer processes the deployment. | info | No | 404 |
| DALP-0279 | System not found. | The platform resolved the requested system address but found no matching system record in the indexer, and the address does not match this organization's configured system. The system address may be incorrect or belong to a different organization. | Confirm the system address is correct and belongs to your organization. Use the system read endpoint with default to retrieve the active system address for your organization. | info | No | 404 |
| DALP-0282 | EntryPoint not found in indexer for this system. | The platform resolved the Directory contract address but found no EntryPoint registered in the indexer. The account abstraction deployment module registered an EntryPoint in the Directory, but the indexer has not yet processed that block. | Wait for the indexer to catch up with the chain, then retry. If the EntryPoint remains missing, verify that the AA deployment module completed registration in the Directory contract. | info | No | 404 |
| DALP-0283 | Paymaster {paymasterAddress} not found. Confirm the address and check that the indexer has processed it. List available paymasters via GET /v2/system/paymasters. | The platform could not find a paymaster with the given address in the indexed state for this system. The address may be incorrect, or the paymaster may not have been indexed yet. | Confirm the paymaster address is correct and that the indexer has processed the registration transaction. Use GET /v2/system/paymasters to list all paymasters currently indexed for this system. | info | No | 404 |
| DALP-0284 | Paymaster {systemAddress} not found. Confirm the address and check that the indexer has processed it. List available paymasters via GET /v2/system/paymasters. | The platform could not find a paymaster with the given address in the indexed state for this system. The address may be incorrect, or the paymaster registration may not yet be indexed. | Confirm the paymaster address is correct and that the indexer has processed the registration transaction. Use GET /v2/system/paymasters to list all paymasters currently indexed for this system. | info | No | 404 |
| DALP-0285 | Sponsorship paymaster not found with address {paymasterAddress}. | The platform could not find a signer-type paymaster at the given address in the indexed state for this system. The address may be incorrect, the paymaster may belong to a different system, or it may not expose the sponsorship signer type. | Verify the paymaster address belongs to the current system and has the signer paymaster type registered. Use GET /v2/system/paymasters to list available paymasters. | info | No | 404 |
| DALP-0288 | Token factory deployment completed but transaction receipts recorded no block number. | The token factory deployment workflow completed and all transaction receipts were collected, but none of them recorded a block number. This prevents the platform from confirming the on-chain inclusion block. | Retry the request. If the problem continues, contact support with the request ID and the transaction hashes involved. | info | No | 400 |
| DALP-0289 | Token factory for type {factoryAddress} not found. | The platform could not find a registered token factory matching the requested type or factory address in the current system context. The factory may not have been deployed for this system. | Verify the factory type or address is correct and that the factory has been deployed and indexed for this system. Use GET /v2/system/factories to list available factories. | info | No | 404 |
| DALP-0290 | No token factory found for {systemAddress}. Verify the factory address and that the system has completed bootstrapping. | The platform queried the indexer for the factory at the given address but found no matching record. The system may not have finished bootstrapping, or the factory address is incorrect. | Confirm the factory address is correct and that the system bootstrap process completed successfully. Use GET /v2/system/factories to list indexed factories. | info | No | 404 |
| DALP-0291 | No token factory found for {factoryAddress}. Contract type {factoryAddress} is not a recognized factory type. | The platform found a contract at the given address in the indexer but its type is not a recognized factory type. The contract may have been deployed with an unsupported or unknown type identifier. | Verify the factory address refers to a supported token factory type. Use GET /v2/system/factories to list recognized factory types for this system. | info | No | 404 |
| DALP-0294 | Trusted issuer "{issuerAddress}" not found. | The platform searched the trusted-issuer registry (and its parent chain) in the indexer but found no entry for the given issuer address. The issuer may not have been registered, or the address may be incorrect. | Verify the issuer address is correct and that the issuer has been registered in the system's trusted-issuers registry. Use GET /v2/system/trusted-issuers to list registered issuers. | info | No | 404 |
| DALP-0296 | Token access control not found. Ensure the token has an access manager configured. | The token's indexed state does not include an access control (access manager) record. Role operations require an access manager to be deployed and indexed for the token. | Verify that the token was deployed with an access manager and that the access manager address is indexed. Contact support if the token was recently deployed and the indexer may not have caught up. | info | No | 404 |
| DALP-0309 | Topic {topicId} is not registered in the topic scheme registry. | The topic name supplied in the claim request does not exist in the system's claim-topic scheme registry, so the platform cannot validate or issue the claim. | Query the list of registered claim topics for this system and resubmit with a topic name that appears in that list. | info | No | 404 |
| DALP-0310 | No binding found for module type {moduleAddress} on compliance contract {moduleAddress}. | The compliance contract returned an empty binding list for the requested module type, meaning no module instance of that type is attached to this token. | Verify that a compliance module of the specified type has been bound to this token before encoding compliance arguments. | info | No | 404 |
| DALP-0314 | Token factory for type {factoryAddress} not found. | The platform could not locate a registered token factory for the requested token type, so it cannot proceed with token deployment. | Verify that the token type and optional factory address are correct, and that the system has completed bootstrapping with a factory for that type. | info | No | 404 |
| DALP-0316 | templateId required for token creation. Select an instrument template first. | The dalp-asset token type requires an instrument template to define its structure, but no templateId was included in the request. | Query the available instrument templates, select the appropriate one, and include its templateId in the token creation request. | info | No | 400 |
| DALP-0319 | Access denied - token holder access required. | The requested document has holders visibility, and the authenticated participant holds no role on this token, so the platform cannot serve the download URL. | Request the document with credentials for a participant who holds at least one role on this token, or ask the token administrator to assign an appropriate role. | info | No | 400 |
| DALP-0322 | Document group not found for replacement. | The replaceGroupId supplied in the request does not match any existing document group for this token. No document with that group ID and isLatest=true exists in the platform records. | Confirm the replaceGroupId by listing the token's current documents, then resubmit with a valid group ID. | info | No | 404 |
| DALP-0323 | Document not found. | The document ID supplied does not match any non-deleted document record for this token. The document may have been deleted already or the ID may belong to a different token. | Verify the document ID against the token's active document list and resubmit with a valid ID. | info | No | 404 |
| DALP-0324 | Document type {value} is not valid for asset type {value}. | The requested document type is not permitted for the token's asset type. Each asset type (for example, bond, equity) has a specific set of allowed document types. | Check the list of permitted document types for this token's asset type and resubmit with a compatible document type. | info | No | 400 |
| DALP-0326 | File not found in storage. Upload may have failed. | The platform could not read the uploaded file at the expected storage location. The pre-signed upload may not have completed before the confirm step was called. | Re-upload the file using the pre-signed URL, confirm the upload completed successfully, then call the confirm step again. | info | No | 404 |
| DALP-0327 | Object key is outside the permitted path for this token. | The objectKey in the request does not start with the expected token-documents/:tokenAddress/ prefix, or contains path traversal sequences (.. or //). The platform rejects keys that fall outside the token's storage namespace. | Use the objectKey returned by the upload URL endpoint without modification. Do not alter the path prefix or add traversal sequences. | info | No | 400 |
| DALP-0328 | Token factory not found for current system. | The tokenFactory filter value supplied to the token list query does not match any factory registered in the current system's token factory registry. | Retrieve the list of valid factory addresses for this system and use one of those values as the tokenFactory filter. | info | No | 404 |
| DALP-0332 | No yield available to claim. The first yield period has not completed yet. | The platform confirmed from indexed schedule data that fewer than one full interval has elapsed since the yield schedule's start date. No yield periods have completed, so there is nothing to claim. | Wait until at least one full yield interval has elapsed from the schedule start date, then retry the claim. | info | No | 400 |
| DALP-0334 | Freeze amount exceeds available balance. | The requested freeze amount is larger than the holder's available (unfrozen) token balance. The platform checks the indexed balance before submitting the on-chain freeze. | Query the holder's current available balance and resubmit with an amount that does not exceed it. | info | No | 400 |
| DALP-0338 | Indexed PriceResolver registration is missing valid initialization calldata. | The platform found a PriceResolver registration event in the index but the initializationData field does not contain a valid hex-encoded calldata value. The indexed event data is malformed. | Contact support with the request ID. Resolving this requires re-indexing the PriceResolver registration event. | info | No | 400 |
| DALP-0340 | Token with address {address} not found. | The platform could not find an indexed token at the supplied address within the current system's factory scope. The token may not be deployed, not yet indexed, or belong to a different system. | Verify the token address, confirm the token is deployed and indexed in the current system, then retry. | info | No | 404 |
| DALP-0341 | Address "{address}" is not a valid Ethereum address. | An address value supplied to the token features chain helper is not a valid Ethereum address. A valid address must be 0x-prefixed and contain exactly 40 hexadecimal characters. | Supply a correctly formatted Ethereum address (0x followed by 40 hex characters) and retry. | info | No | 400 |
| DALP-0344 | Address format not accepted for {address}. | The address supplied in the request body or parameters is not a valid Ethereum address. The platform requires a 0x-prefixed, 40-character hex string. | Supply a checksummed or lowercase Ethereum address in the format 0x followed by 40 hex characters and resend the request. | info | No | 400 |
| DALP-0354 | Missing token permission context. | The caller specified a different owner address for the redemption, but the platform could not load the token permission context required to check delegation rights. | Retry the request. If the error persists, contact support with the request id. | info | No | 400 |
| DALP-0355 | Token sale addon not found in the current system. | The current system has no token sale addon registered. The list or read request requires at least one token sale addon to be installed on the system. | Install the token sale addon on the system before creating or querying token sales. | info | No | 404 |
| DALP-0356 | Token sale addon not found in system addons. | The system has no token sale addon registered in its addon registry. The create request requires the addon to be present before a sale contract can be deployed. | Install the token sale addon on the system through the system configuration, then retry the create request. | info | No | 404 |
| DALP-0360 | termsHash: expected hex string starting with 0x, got "{value}" wasn't accepted. | The termsHash value supplied in the request body is not a valid hex string. The platform requires it to be a 0x-prefixed hexadecimal value. | Supply a termsHash as a 0x-prefixed hex string, or omit it to use the default zero hash. | info | No | 400 |
| DALP-0361 | No registered identity found for token {identityAddress}. A token must have a registered identity to create a sale. | The token address does not appear as a registered identity in the system's identity registry. Token sale creation requires the token contract to be registered as an identity in the ERC-3643 registry. | Register the token as an identity in the system's identity registry before creating a sale for it. | info | No | 404 |
| DALP-0362 | Token sale {value} was not found in the indexer. | The platform queried the indexer for a token sale at the given address and found no record. The sale may not have been deployed yet or the address may be incorrect. | Verify the sale address and confirm that the sale creation transaction has been indexed, then retry. | info | No | 404 |
| DALP-0364 | The registered identity for token {identityAddress} is missing a country code. A country must be set to create a token sale. | The token's registered identity record in the identity registry has a null country field. The token sale contract requires a country code to enforce investor eligibility rules. | Update the token's registered identity to include a valid country code before creating the sale. | info | No | 400 |
| DALP-0368 | fromWallet {identityAddress} not in the identity registry. Onboard the wallet before initiating a transfer. | The platform looked up the fromWallet address in the identity registry and found no registered identity for it. A wallet must be onboarded and registered before it can be used as the sender in a transfer-approval operation. | Onboard the wallet through the identity registration flow, confirm the registry has indexed the new entry, then retry the request. | info | No | 404 |
| DALP-0370 | {address} address: "{address}". Expected a valid Ethereum address (0x-prefixed, 40 hex characters) wasn't accepted. | The platform parsed the address field in the transfer-approval request and found it was not a valid Ethereum address. A valid address starts with 0x followed by exactly 40 hexadecimal characters. | Supply the correct Ethereum address (0x-prefixed, 40 hex characters) for the address field and retry. | info | No | 400 |
| DALP-0371 | Missing 'from' address for transferFrom operation. | The platform processed a transferFrom transfer request but the first transfer item contained no from address. The from field is required for transferFrom so the platform knows which address to deduct tokens from. | Include the from address in the transfer item when using the transferFrom transfer type, then retry. | info | No | 400 |
| DALP-0372 | Missing transfer item. | The platform attempted to process a single-item transfer request but found no transfer items in the transfers array after passing the batch-size check. At least one transfer item is required. | Provide at least one transfer item in the transfers array and retry. | info | No | 400 |
| DALP-0374 | Token {address} not found. Verify the address, deployment, and indexing status. | The platform queried the indexer for the token at {address} but found no record. The token may not have been deployed, or the indexer has not yet processed the deployment block. | Confirm the token address is correct, that the token contract has been deployed, and that the indexer has processed the deployment block. Retry after indexing catches up if the deployment is recent. | info | No | 404 |
| DALP-0376 | toWallet {identityAddress} not in the identity registry. Onboard the wallet before initiating a transfer. | The platform looked up the toWallet address in the identity registry and found no registered identity for it. A wallet must be onboarded and registered before it can be used as the recipient in a transfer-approval operation. | Onboard the wallet through the identity registration flow, confirm the registry has indexed the new entry, then retry the request. | info | No | 404 |
| DALP-0379 | Wallet not found in identity registry. Onboard it before approving transfers. | The platform checked the identity registry for the sender's wallet and found no registered identity. The executing wallet must be onboarded before it can approve token transfers. | Onboard the wallet through the identity registration flow, confirm the registry has indexed the entry, then retry the approve-transfer request. | info | No | 404 |
| DALP-0380 | Wallet not found in identity registry. Onboard it before revoking transfer approvals. | The platform checked the identity registry for the sender's wallet and found no registered identity. The executing wallet must be onboarded before it can revoke token transfer approvals. | Onboard the wallet through the identity registration flow, confirm the registry has indexed the entry, then retry the revoke-transfer-approval request. | info | No | 404 |
| DALP-0383 | Transaction {transactionHash} not found. | The platform could not locate a transaction with that id in the queue or ownership scope. Transactions belonging to another organization's wallets are reported the same way as genuinely missing ones to prevent enumeration. | Verify the transaction id is correct and belongs to your organization's wallets. If the transaction was recently created, retry after a short delay to allow processing. | info | No | 404 |
| DALP-0384 | Transaction {transactionHash} not found. The transaction is not on-chain and has no stored queue record. Verify the hash is correct. | The platform checked both the queue store and the chain provider for {transactionHash} and found no record in either place. The hash does not match any pending or confirmed transaction visible to this organization. | Confirm the transaction hash is correct and that the transaction was submitted through this platform. If the hash came from an external source, check the chain explorer directly. | info | No | 404 |
| DALP-0385 | Transaction field {transactionHash} contains a value that could not be parsed as a datetime. | The platform read a timestamp field from the stored transaction record and could not parse it into a valid date. This indicates the stored value is malformed. | Contact support with the request id and transaction hash. This is a data integrity issue the platform must resolve. | info | No | 400 |
| DALP-0387 | KYC request has no associated version. | The KYC action request identified by requestId does not have a linked KYC version. The platform requires a version association to look up the participant and verify ownership before marking the request as fulfilled. | Verify the action request record is complete and that a KYC version was created for it. If the record appears correct, contact support with the request id. | info | No | 400 |
| DALP-0393 | Document not found. | The platform could not find a KYC document record matching the requested documentId for the given versionId. The document may have been deleted, or the document and version identifiers may not belong to the same KYC profile version. | Verify the documentId and versionId are correct and belong to the same version. List the documents on the version to confirm which records exist. | info | No | 404 |
| DALP-0409 | File not found in storage. Upload may have failed. | The legacy v1 document confirm-upload route tried to stat the object at the provided objectKey in the organization's storage bucket, but the object does not exist. The pre-signed upload to object storage did not complete before confirm-upload was called. | Re-upload the file to object storage using a fresh pre-signed URL, verify the upload succeeds, then call confirm-upload again with the same objectKey. | info | No | 404 |
| DALP-0410 | Object key was not accepted. | The provided objectKey does not start with the expected prefix kyc/<participantId>/<versionId>/ for this version. The legacy v1 confirm-upload route validates the key prefix against the locked version row before registering the document. | Use only objectKey values returned by the pre-signed upload endpoint for this version. Keys scoped to a different participant or version are rejected. | info | No | 400 |
| DALP-0411 | No KYC data found. The profile exists but has no version history, or the user has not completed KYC verification yet. | The platform found the KYC profile record for this user but the profile has no linked latestVersionId, so the join to kycVersions returned no row. The user has a profile container but has never created or submitted a KYC version. | Check whether the user has a KYC version in progress via GET /v2/kyc-profiles/:userId. If no version exists, create one before reading the KYC data. | info | No | 404 |
| DALP-0412 | No KYC profile found to delete. The profile may no longer exist. | The delete-returning query found no KYC profile row matching this user's participant identifier. The profile was either never created or has already been removed. | Confirm the user has a KYC profile before calling the delete endpoint. If the profile was already deleted, no further step is needed. | info | No | 404 |
| DALP-0413 | No version to clone from. Provide initialData for new users. | The create-version route was called without initialData and without a resolvable source version. The profile has no approvedVersionId or latestVersionId to clone from, and no cloneFromVersionId was supplied. | Pass initialData with the user's KYC fields when creating a first version for a new user, or supply a cloneFromVersionId that points to an existing version. | info | No | 400 |
| DALP-0416 | KYC profile not found for this user. | The platform found no KYC profile row for the requested userId. The user has not started the KYC process yet, or the profile was deleted. | Verify the userId is correct. If this is a new user, create a KYC version first (POST /v2/kyc-profiles/:userId/versions), which will initialize the profile automatically. | info | No | 404 |
| DALP-0417 | KYC profile not found for this request. | The fulfill handler resolved the KYC version linked to the action request but found no KYC profile for the participant who owns that version. The profile row is required to clear the pending-update flag after fulfillment. | Verify the action request ID and that the participant has a KYC profile. If the profile was deleted, create a new one before retrying. | info | No | 404 |
| DALP-0418 | Source version not found. Provide initialData for new users. | The version-create handler resolved a source version ID to clone from (via cloneFromVersionId, cloneFrom: approved, or cloneFrom: latest) but the referenced version row no longer exists in the database. | Pass initialData directly in the request body to seed the new draft, or provide a valid cloneFromVersionId that still exists. | info | No | 404 |
| DALP-0419 | KYC version not found. | The platform looked up the KYC version by the provided version ID and found no matching row. The version ID may be wrong or the version may have been deleted. | Verify the version ID. If the version was deleted, start a new upload flow with a valid draft version. | info | No | 404 |
| DALP-0420 | KYC version not found for this request. | The fulfill handler queried the KYC version linked to the action request's versionId and found no matching row. The version may have been deleted after the action request was created. | Verify the action request still has a valid associated KYC version. If the version no longer exists, the action request cannot be fulfilled. | info | No | 404 |
| DALP-0421 | KYC version not found. | The version read handler queried the KYC version by the provided version ID and found no matching row. The version ID may be wrong, belong to a different organization, or the version may not exist yet. | Verify the version ID and confirm the version belongs to the authenticated organization before retrying. | info | No | 404 |
| DALP-0423 | User has no email address configured. | The password-reset route looked up the target user within the authenticated organization and found that the user account has no email address stored. The platform needs an email address to send the reset link. | Ensure the user account has a verified email address before triggering a password reset. | info | No | 400 |
| DALP-0424 | User with ID {value} not found. | The platform could not find a participant with the given ID in the authenticated organization. The participant may not exist or may not be a member of this organization. | Verify the participant ID and confirm the participant is a member of the current organization. | info | No | 404 |
| DALP-0425 | User not found. | The platform searched for a participant whose wallet matches the provided address within the authenticated organization and found no match. The wallet may not be registered, or it belongs to a participant outside this organization. | Verify the wallet address and confirm the wallet is associated with a participant in the current organization. | info | No | 404 |
| DALP-0426 | User {value} not found. | The security read handler could not locate the target user within the authenticated organization. The user may not exist, may not be a member of this organization, or the session has no active organization context. | Verify the user ID and confirm the user is a member of the organization the admin session is scoped to. | info | No | 404 |
| DALP-0427 | User not found. | The platform searched the approved KYC versions in this organization for a participant with the given national ID and found no match. No participant has a currently approved KYC version carrying that national ID. | Verify the national ID value and confirm the participant has a KYC version in the approved state within this organization. | info | No | 404 |
| DALP-0428 | User {value} not found. | The password-reset handler could not locate the target user within the authenticated organization. The user may not exist, may not be a member of this organization, or the session has no active organization context. | Verify the user ID and confirm the user is a member of the organization the admin session is scoped to. | info | No | 404 |
| DALP-0429 | User {value} not found. | The MFA reset handler could not locate the target user within the authenticated organization. The user may not exist, may not be a member of this organization, or the session has no active organization context. | Verify the user ID and confirm the user is a member of the organization the admin session is scoped to. | info | No | 404 |
| DALP-0434 | Scoped compliance module configuration requires a V2 token compliance engine. | The token uses the legacy compliance model, which has no scoped module bindings and cannot atomically update module parameters with a scope. | Use configureComplianceModule for legacy tokens, or migrate the asset to a current compliance-engine token before configuring scoped modules. | info | No | 400 |
| DALP-0435 | Scoped compliance module install requires a V2 token compliance engine. | The token uses the legacy compliance model, which supports only the single-instance compliance-module install flow. | Use installComplianceModule for legacy tokens, or migrate the asset to a current compliance-engine token before installing scoped module instances. | info | No | 400 |
| DALP-0436 | Setting a compliance module scope requires a V2 token compliance engine. | The token uses the legacy compliance model, which has no per-instance scope state to update. | Use legacy compliance-module configuration routes for legacy tokens, or migrate the asset to a current compliance-engine token before setting module scope. | info | No | 400 |
| DALP-0449 | System address is not configured. | The migration comparison route needs the active system address before it can compare deployed component implementations. | Set the SYSTEM_ADDRESS setting or deploy a system, then retry the comparison. | info | No | 404 |
| DALP-0450 | Directory contract address is not configured. | The migration comparison route needs the directory contract address from the active network configuration. | Set networks.<name>.contracts.directory in config.yml for the default network, then retry the comparison. | info | No | 400 |
| DALP-0452 | No active organization selected. | The migration start route needs an active organization before it can resolve the system and workflow scope. | Select an organization, then start the migration again. | info | No | 400 |
| DALP-0453 | System address is not configured. | The migration start route needs the active system address before it can submit the migration workflow. | Deploy a system or set the SYSTEM_ADDRESS setting, then start the migration again. | info | No | 404 |
| DALP-0456 | Directory contract address is not configured. | The migration start route needs the directory contract address from the active network configuration. | Set networks.<name>.contracts.directory in config.yml for the default network, then start the migration again. | info | No | 400 |
| DALP-0459 | A connected wallet must be present to start a system migration. | The migration workflow needs a connected sender wallet and wallet id for the on-chain transactions. | Connect a wallet, then start the migration again. | info | No | 400 |
| DALP-0463 | A template with this name already exists in this organization. | The organization already has a non-system template with the submitted name. | Choose a unique template name or update the existing template instead. | info | No | 409 |
| DALP-0464 | Account not found. | Platform API could not find an account with native-balance state in the active system scope. | Verify the chain ID, address, system selection, and indexer freshness before retrying. | info | No | 404 |
| DALP-0465 | Treasury is a contract; the treasury contract must grant ERC-20 allowance directly. This route only supports externally-owned treasury wallets. | The configured maturity-redemption treasury is a smart contract. ERC-20 approve must be called from the contract that owns the funds, which this route cannot do on its behalf. | Call approve(spender, amount) directly from the treasury contract (e.g. via its admin or governance flow), or reconfigure the feature to use an externally-owned treasury wallet. | info | No | 400 |
| DALP-0466 | Maturity-redemption feature state not yet indexed for this token. | The maturity-redemption feature row for this token has not been created or the indexer has not processed the feature initialization yet, so denomination asset and treasury are still unset. | Verify the token has the maturity-redemption feature attached and wait for the indexer to catch up, then retry. | info | Yes | 404 |
| DALP-0467 | Caller wallet does not match the configured treasury wallet for the maturity-redemption feature. | ERC-20 approve must be called from the wallet that owns the funds. The authenticated caller is not the configured treasury wallet, so this route cannot proxy the approval. | Retry signed in as the configured treasury wallet. | info | No | 403 |
| DALP-0469 | History page size must be 100 or less. | The native-balance history endpoint limits each page to 100 rows to keep indexer queries bounded. | Request 100 or fewer history rows per page and use the pagination links for additional rows. | info | No | 400 |
| DALP-0470 | filter[since] is missing. | The native-balance history endpoint requires a lower block bound so history scans stay within the supported query window. | Include filter[since] with a block number using the gte or eq operator, then retry. | info | No | 400 |
| DALP-0471 | No active claim found for topic {topicId} on identity {identityAddress}. | Platform API could not find an active (non-revoked) claim matching the requested topic on the target identity. | Verify the topic and identity address, and confirm the claim has not already been revoked, before retrying. | info | No | 404 |
| DALP-0474 | PriceResolver addon missing on system {value}. | Compliance modules that price mint amounts in fiat (currently capital-raise-limit) require an IDALPPriceResolver addon registered on the system. The Platform API resolves the addon address server-side and injects it into the module's initialization payload. Without an installed addon there is no resolver to inject, so the deployment is refused before any on-chain transaction is queued. | Install the PriceResolver addon on this system (Addons → Price Resolver) before creating tokens whose compliance template includes capital-raise-limit, adding capital-raise-limit to an existing token, or updating its parameters. | info | No | 409 |
| DALP-0479 | Maturity-redemption feature has not yet matured; redemptions are not allowed. | The maturity-redemption feature's isMatured flag is still false and the on-chain maturityDate has not been reached, so _MaturityRedemptionFeatureLogic.redeem would revert with BondNotYetMatured. The preflight refuses up front so the redeemer is not charged gas for a doomed tx. | Wait until the configured maturityDate is reached and the bond is matured, or call mature(token) / matureEarly(token, actualMaturityDate) if you hold the maturity role and want to settle early. Retry once the feature is matured. | info | Yes | 422 |
| DALP-0480 | An asset class with this name or slug already exists in this organization. | The name or slug collides with an existing asset class for this organization. | Choose a different name or use the existing asset class. | info | No | 409 |
| DALP-0489 | Webhook timestamp is outside the accepted replay window. | The compliance webhook timestamp was more than five minutes away from the server clock. | Send a fresh provider event with a current timestamp and verify clock synchronization for the provider. | info | No | 400 |
| DALP-0501 | Compliance provider cannot transition to the requested state. | The provider is not in a state that permits the requested operation (for example, resume requires paused; revoke is terminal). | Refresh the provider and choose an operation that matches its current state. | info | No | 409 |
| DALP-0502 | Compliance provider not found. | No compliance provider matching the requested ID exists within the calling organization. Cross-organization lookups are concealed and return the same response as an unknown provider ID. | Confirm the provider ID was created by and belongs to your organization, then retry the request. | info | No | 404 |
| DALP-0503 | Compliance provider topic not found. | No active topic matching the requested identifier exists on this compliance provider. Revoked topics are excluded from the default view and will also return this error unless the revoked include flag is set. | Verify the topic name and provider ID, confirm the topic has not been revoked, or add a new topic through the provider webhook endpoint. | info | No | 404 |
| DALP-0504 | Compliance provider does not support the requested topic. | The selected vendor product cannot attest the requested claim topic. | Choose one of the provider's supported topics or select a different provider kind. | info | No | 400 |
| DALP-0505 | Cannot revoke the last webhook for a single-topic compliance provider. | Single-topic provider products have exactly one webhook; revoking it would leave the participant with no supported topics. | Revoke the compliance provider instead, or add another supported webhook before revoking this one. | info | No | 409 |
| DALP-0507 | Webhook replay rate limit exceeded. | The tenant has exhausted the replay-specific webhook rate-limit bucket. | Wait for the Retry-After interval before starting another replay. | info | Yes | 429 |
| DALP-0508 | Webhook replay range is too large. | The replay request spans more blocks or events than the API allows in a single replay job. | Split the replay into smaller ranges and retry. | info | No | 400 |
| DALP-0512 | Webhook endpoint URL is not allowed. | The endpoint URL resolves to a private, loopback, link-local, or otherwise disallowed network range. | Use a publicly reachable HTTPS endpoint that does not resolve to a private network address. | info | No | 400 |
| DALP-0514 | Idempotency key reused with a different request. | The same Idempotency-Key was previously used for a request with a different method, path, or body hash. | Reuse an Idempotency-Key only for the same request, or send a new key for a different request. | info | No | 409 |
| DALP-0515 | Idempotency key is already in flight. | Another request with the same Idempotency-Key is still being processed for this tenant. | Wait for the in-flight request to finish, then retry the same request. | info | Yes | 409 |
| DALP-0516 | Webhook endpoint has pending delivery attempts. | The endpoint URL change cannot proceed silently, there are pending delivery attempts the dispatcher would re-target to the new URL. | Re-send the request with ?acknowledgePending=true to confirm those deliveries should target the new URL, or wait for the queue to drain. | info | No | 409 |
| DALP-0517 | Fat-event acknowledgment is missing required field paths. | A fat endpoint delivers unredacted personal data for its active subscriptions. Every <eventType>.<fieldPath> that the thin shape would strip must be named in fatEventsAcknowledgment.fieldsAcknowledged for the resulting subscription set. The acknowledgment on this request (or the stored one, when the request omits it) does not cover that set, so the platform rejected the update rather than silently widening consent. | Resend the PATCH with fatEventsAcknowledgment.fieldsAcknowledged set to the full list returned by getWebhookFatAcknowledgmentFields for the subscriptions that will be active after the update. The Console's switch-to-fat dialog computes this list automatically. | info | No | 422 |
| DALP-0519 | Workflow Engine deployment was not found. | The Workflow Engine admin API does not currently report a deployment matching the configured service URL. | Confirm the durable service is registered with Workflow Engine (force-redeploy if needed) and retry. | info | No | 404 |
| DALP-0520 | Workflow state blocks retry. | The workflow has an active invocation, has already succeeded, or its prior invocations could not be purged. | Inspect the workflow with the doctor route and resolve the blocking invocation before retrying. | warning | No | 409 |
| DALP-0526 | Webhook endpoint not found. | No webhook endpoint with that identifier exists in the current tenant, or the endpoint has been deleted. Deleted endpoints remain as audit tombstones and are not available for new operations. | Verify the endpoint identifier belongs to the authenticated tenant. If the endpoint was deleted, create a new endpoint. | info | No | 404 |
| DALP-0527 | Webhook delivery not found. | No delivery record matches the combination of delivery identifier, endpoint identifier, and tenant. On the receipt-create path, this also surfaces when the delivery's own counterSignedReceipts snapshot is false, meaning the feature was not enabled on the endpoint when that delivery was dispatched. | Confirm the delivery identifier and endpoint identifier are correct and belong to the authenticated tenant. List deliveries for the endpoint to retrieve valid identifiers. | info | No | 404 |
| DALP-0528 | Webhook replay not found. | No replay job with that identifier exists in the current tenant scope. | Verify the replay identifier and confirm it was created within the authenticated tenant. List replays for the endpoint to retrieve valid identifiers. | info | No | 404 |
| DALP-0529 | Webhook receipt not found. | No receipt record with that identifier exists in the current tenant scope. | Verify the receipt identifier belongs to the authenticated tenant. Use the receipt list endpoint to retrieve valid identifiers. | info | No | 404 |
| DALP-0530 | Executor selection is not supported for this participant type. | The X-Executor header requested EOA execution for a participant type that cannot execute from an EOA. | Use X-Executor: smart-wallet or omit the header so the API selects the participant's supported executor. | info | No | 400 |
| DALP-0531 | Smart wallet not found for executor selection. | The X-Executor header requested smart-wallet execution, but no smart wallet is available for this participant and organization. | Wait for smart-wallet provisioning or indexing to complete, then retry. | info | Yes | 404 |
| DALP-0533 | Metadata not found. | Platform API could not resolve the metadata payload from IPFS or the configured object-storage mirror. | Verify the metadata hash and retry after the metadata source has replicated. | info | No | 404 |
| DALP-0534 | Webhook subscription pattern is not recognized. | The subscription pattern does not match any registered webhook event type or documented wildcard form, or it requests retracted events without a matching source subscription that can create the rows retractions are derived from. | Use an exact registered event name, a lifecycle wildcard (*.pending, *.provisional, *.final, *.retracted, .recalled), a prefix wildcard for a registered event family (token.transfer.), or *. Pair every retraction pattern with a pending, provisional, or final source subscription. | info | No | 400 |
| DALP-0535 | Webhook endpoint URL must use HTTPS. | The endpoint URL uses a scheme other than HTTPS. Untrusted destinations must be HTTPS so delivery traffic is encrypted and the SSRF guard can apply its public-address policy. | Register an https:// URL, or ask an operator to add this exact origin to DALP_WEBHOOKS_TRUSTED_DESTINATIONS on a private-network install that needs plain HTTP. | info | No | 400 |
| DALP-0601 | One or more target currencies are not supported by the configured exchange-rate provider. | The provider's supported-currency snapshot does not contain every requested code. | Pick currencies from the supported-currencies endpoint, or wait for the next provider refresh if you expect the code to appear. | info | No | 422 |
| DALP-0606 | No yield available to claim. A prior conversion consumed the yield for completed periods. | The claim-yield preflight found that quoteAccruedWad returned zero and the holder's consumedInterestWadExact is positive while accrual is still open. The yield that would have been claimable was offset by interest consumed during a prior token conversion. | Wait for the next yield period to complete after the conversion. Check the conversion history to see which periods were consumed. | info | No | 400 |
| DALP-0607 | No yield available to claim. Accrual for this holder has closed. | The holder's yield accrual was closed at the time of a token conversion. Once accrual closes, no further yield accumulates for this holder and past-closure periods are no longer claimable. | Yield accrual closure is permanent for this holder. No further claim is possible on this token for past-closure periods. | info | No | 400 |
| DALP-0608 | No yield available to claim for this holder. | The holder has no claimable yield. Periods may already be claimed, accrual may be closed after conversion, or consumed interest may have offset the accrued amount. | Verify holder eligibility (last claimed period, conversion state) before retrying. | info | No | 400 |
| DALP-0610 | File data processing failed. | The uploaded KYC document payload was not valid base64 document data. | Read the document bytes, base64-encode them without data URL prefixes, and retry. | info | No | 400 |
| DALP-0611 | Uploaded file size does not match the decoded file data. | The declared KYC document size did not match the bytes decoded from fileData. | Send the raw file byte length in fileSize and retry the upload. | info | No | 400 |
| DALP-0612 | Uploaded file type does not match the document bytes. | The KYC document MIME type did not match the file signature detected by Platform API. | Upload a JPEG, PNG, WebP, or PDF whose file extension and MIME type match the actual bytes. | info | No | 400 |
| DALP-0615 | Hashlock reveal not required for this XvP settlement. | Revealing a secret applies only to HTLC-enabled XvP settlements with external flows; the target settlement is local-only. | Skip the reveal call for local settlements, or target an HTLC settlement that has external flows. | info | No | 400 |
| DALP-0616 | smart-wallet executor not available. | The X-Executor header requested smart-wallet execution while platform Account Abstraction is disabled. | Use X-Executor: eoa or omit the header until platform Account Abstraction is enabled. | info | No | 403 |
| DALP-0618 | The global Directory registry is not configured or has no registered global TIR/TSR instance. | Every directory.* v2 route resolves the on-chain global Trusted Issuers Registry or Topic Scheme Registry via the per-network Directory address and the indexed directoryInstances table. The route returns 404 when either the Directory address is missing for the active chain or the indexed Directory has no GLOBAL_TRUSTED_ISSUERS_REGISTRY / GLOBAL_TOPIC_SCHEME_REGISTRY instance row. | Confirm the platform's Directory address is configured for the active chain and that the global registry instances have been indexed before retrying. | info | No | 404 |
| DALP-0619 | Directory topic scheme "{topicId}" not found. | The directory.topicSchemes.* route looked up a topic scheme on the resolved global Topic Scheme Registry but no row matched the supplied name. The indexer reflects the on-chain registry, so a missing row means the scheme has not been registered on the global tier (or has been removed) for the active chain. | Confirm the topic scheme name (case-sensitive, no normalization) and that the indexer has caught up with the latest on-chain register/remove events before retrying. | info | No | 404 |
| DALP-0620 | A topic scheme with the requested name already exists with a different signature. | Upserting a directory topic scheme is idempotent on (name, signature): submitting the exact same pair returns the existing row. When the name is already registered with a different signature, the registry would silently rewrite the on-chain claim shape and break every system that inherits the scheme, so the route refuses the request before touching the chain. | Delete the existing scheme (only safe if no child registry has surfaced a stale-signature warning) or pick a new name. To change the signature in-place, call the dedicated update path once the indexed signature has been confirmed compatible. | info | No | 409 |
| DALP-0621 | smart-wallet executor not available. | The X-Executor header requested smart-wallet execution while Account Abstraction is disabled for this organization. | Ask your organization administrator to enable Account Abstraction for this organization, or omit the X-Executor header to use the organization's default routing. | info | No | 403 |
| DALP-0622 | This token has no attached token-level Topic Scheme Registry. | Per-token topic-scheme writes target the token's own Topic Scheme Registry, resolved from the indexed identityRegistries.topicSchemeRegistryAddress column. The route returns 404 when that column is null or no identityRegistries row exists for the token, meaning the token inherits schemes only through the system → global chain and has nowhere to register a token-specific scheme. | Attach a token-level Topic Scheme Registry to the token before adding or removing token-specific schemes. Token-level schemes cannot be managed until the registry exists; inherited system and global schemes remain visible on the list in the meantime. | info | No | 404 |
| DALP-0623 | Token-level topic scheme not found for the requested topic id. | Removing a per-token topic scheme resolves the URL topicId to an indexed row on the token's own Topic Scheme Registry. The route returns 404 when the topic id matches no token-level row (it resolves to an inherited system or global scheme, to nothing in the resolved chain, or to a token-level scheme the indexer has not caught up to yet). Inherited schemes are not removable through this route. | Confirm the topic id belongs to a token-level scheme (inheritanceLevel token) on the resolved chain. If the scheme was just added, wait for the indexer to catch up with the on-chain register event before retrying the delete. | info | No | 404 |
| DALP-0624 | This token has no attached token-level Trusted Issuer Registry. | Per-token trusted-issuer writes target the token's own Trusted Issuer Registry, resolved from the indexed identityRegistries.trustedIssuersRegistryAddress column. The route returns 404 when that column is null or no identityRegistries row exists for the token, meaning the token inherits issuers only through the system → global chain and has nowhere to register a token-specific issuer. | Attach a token-level Trusted Issuer Registry to the token before adding or removing token-specific issuers. Token-level issuers cannot be managed until the registry exists; inherited system and global issuers remain visible on the list in the meantime. | info | No | 404 |
| DALP-0625 | Token-level trusted issuer not found for the requested issuer address. | Removing a per-token trusted issuer resolves the URL issuerAddress to an indexed row on the token's own Trusted Issuer Registry. The route returns 404 when the issuer address matches no token-level row (it resolves to an inherited system or global issuer, to nothing in the resolved chain, to an issuer in another token's registry, or to a token-level issuer the indexer has not caught up to yet). Inherited issuers are not removable through this route. | Confirm the issuer address belongs to a token-level issuer (inheritanceLevel token) on the resolved chain. If the issuer was just added, wait for the indexer to catch up with the on-chain add event before retrying the delete. | info | No | 404 |
| DALP-0632 | No attached feature instance matches the requested type id on this token. | The detach or rotate route resolves the live instance by typeId on the token; no isAttached = true row exists for that typeId. | Verify the typeId in the URL and that the feature was previously attached. Re-fetch the token's feature list and retry against an attached typeId. | info | No | 404 |
| DALP-0634 | This token has no attached token-level identity registry. | Reading or replacing a token's compliance expression resolves the token's own identity registry from the indexed identityRegistries row. The route returns 404 when no identityRegistries row exists for the token, meaning the token has no identity registry indexed and therefore no compliance expression to read or to write. | Confirm the token has a deployed identity registry and that the indexer has caught up with its deployment. The compliance expression cannot be read or replaced until the identity registry is indexed. | info | No | 404 |
| DALP-0639 | observedAt exceeds the chain time drift allowance. | The on-chain IssuerSignedScalarFeed.submit() guard ObservedAtTooFarInFuture() reverts the transaction when observedAt exceeds block.timestamp by more than the feed's driftAllowance. Accepting the request would queue a transaction that will revert and wedge the workflow. | Clamp the producer's observedAt to the latest block.timestamp for the target chain, or check the signer host's wall clock against NTP if values are minutes ahead. | info | No | 422 |
| DALP-0640 | UserOperation priority fee is below the configured bundler minimum. | The signed UserOperation was built with a maxPriorityFeePerGas below the organization's bundler minPriorityFee floor. | Rebuild and re-sign the UserOperation with a priority fee at or above the configured floor. | info | No | 400 |
| DALP-0645 | The requested metadata key is not declared in any accessible asset-type template. | Token list grouping and metadata filters resolve eligible keys from asset_type_templates.metadataSchema visible to the caller's tenant scope. The requested key is not declared in any of those schemas, so it cannot be used as groupBy or as a filter[metadata.<key>] axis. | Verify the key name matches a field declared in a system or organization template's metadata schema. Use data.availableKeys (capped, alphabetically sorted) for a quick discovery list, or meta.facets["metadata.<key>"] on a regular list request for the authoritative bucketable axes. | info | No | 400 |
| DALP-0646 | Continuous-type metadata key not eligible for grouping or facets. | Token list groupBy and facet axes are restricted to bucketable metadata field types (string, enum, country-code, currency-code, address). Continuous types such as number, date, decimal-money, percentage, bps, and url are filterable via filter[metadata.<key>] but not bucketable. | Pick a bucketable-typed key for groupBy and faceting, or apply this key as a filter only. | info | No | 400 |
| DALP-0647 | Identifier-type metadata keys not eligible for grouping or facets. | Identifier-typed metadata fields (isin, cusip, lei, figi) are typically unique per token. Using them as groupBy yields degenerate one-token-per-group results and as facet axes they yield single-bucket noise, so token list excludes them from both surfaces. | Use the identifier key as a filter via filter[metadata.<key>], or pick a non-identifier bucketable-typed key for grouping and facets. | info | No | 400 |
| DALP-0648 | Refund splitter installation required for this organization. | The active organization does not have a SPLITTER_ADDRESS setting, so the splitter contract cannot be addressed. | Install the refund splitter through the system deployment workflow, then retry after the setting is available. | info | No | 404 |
| DALP-0650 | Refund splitter basis points out of range (0 to 10000). | The splitter basis-point value must fit the contract range used to split refunds between the bundler and paymaster. | Use an integer value from 0 through 10000. | info | No | 422 |
| DALP-0651 | Refund splitter critical threshold must be lower than the warning threshold. | AA runway alerting requires the critical-days threshold to fire before the warning-days threshold. | Use a positive criticalDays value that is lower than warnDays. | info | No | 422 |
| DALP-0653 | Treasury address missing for the maturity-redemption or fixed-treasury-yield feature. | The /v2/tokens/:tokenAddress/treasury/health route resolved a feature row whose treasury column is the zero address. The badge cannot compose a meaningful balance, allowance, or status against the zero address, so the route refuses up front rather than surface a misleading red badge. | Use the bond or yield feature's Set treasury control to configure a non-zero treasury wallet, then refetch the treasury-health endpoint. | info | No | 422 |
| DALP-0655 | Attached treasury-bearing features disagree on treasury, denominationAsset, or treasuryIsContract. | The /v2/tokens/:tokenAddress/treasury/health route composes one badge against a single treasury wallet, denomination asset, and implementation classification. When the maturity-redemption and fixed-treasury-yield features attached to the same token resolve to different values for any of those, a single-treasury badge would compare one feature's allowance against another feature's balance and report a misleading status, so the route fails closed instead. | Reconfigure the maturity-redemption and fixed-treasury-yield features so they share the same treasury wallet, denomination asset, and implementation classification, then refetch the treasury-health endpoint. | info | No | 422 |
| DALP-0657 | Requested block not yet reached by the historical balance indexer. | The requested atBlock value is ahead of the indexer head for the historical-balances feature; no checkpoint slice covers it yet. | Wait for the indexer to catch up to the requested block, or pick a lower block from the picker's latest-indexed default. | info | Yes | 409 |
| DALP-0662 | Signed permit not found. | No DALP-stored signed permit with this id exists in the active organization scope. | Verify the signed permit id and that it belongs to your organization before retrying. | info | No | 404 |
| DALP-0663 | Signed permit already relayed. | This signed permit was already submitted on-chain, so relaying it again would replay a consumed nonce. | Use a freshly signed permit; a relayed permit cannot be relayed twice. | info | No | 409 |
| DALP-0664 | Signed permit is not relayable. | The permit is expired (its deadline passed) or out of order: its nonce does not equal the owner's current on-chain EIP-2612 nonce, so the relay would revert. | Relay pending permits in nonce order, and sign a new permit if the deadline has passed. | info | No | 409 |
| DALP-0665 | A pending permit with this nonce already exists for this holder. | Two sign requests for the same holder raced to the same nonce; only one pending permit may exist per nonce. | Retry the request. A fresh nonce is assigned on the next attempt. | info | Yes | 409 |
| DALP-0666 | Relaying a stored permit is sync-only. | Marking the stored permit relayed must run after the relay settles on-chain. Prefer: respond-async (and a hybrid wait timeout) returns before settlement, so the stored permit would never flip to relayed and would later display as expired. | Retry the relay without the Prefer: respond-async header. | info | No | 400 |
| DALP-0667 | Workflow Engine invocation was not found. | The requested invocation id is not present in the Workflow Engine admin inventory. | Run the doctor route to inspect current invocations and confirm the id. | info | No | 404 |
| DALP-0668 | Workflow Engine invocation is not paused. | Only paused invocations can be resumed through this route. | Inspect the invocation with the doctor route and choose recover-stuck-workflow or kill+purge if it is wedged in another state. | warning | No | 409 |
| DALP-0669 | Bulk resume was not confirmed. | Resuming multiple paused invocations requires confirm: true after reviewing the dry-run preview. | Call this route with dryRun: true first, then retry with confirm: true. | info | No | 400 |
| DALP-0670 | A user with this email already exists. | Each platform user must have a unique email address. | Use a different email or open the existing user in User management. | info | No | 409 |
| DALP-0679 | The sale token cannot be withdrawn as a payment currency. | The selected withdrawal currency is the token being sold; the contract reserves those tokens for buyers and reverts CannotWithdrawSaleToken. | Choose one of the sale's payment currencies instead of the sale token, then retry. | info | No | 400 |
| DALP-0680 | Legacy compliance templates are turned off on this deployment. | This deployment runs with legacy (v1) compliance templates disabled, so the platform does not create a template pinned to the v1 compliance module set. | Create the template with the current compliance module set, or ask an operator to set FEATURE_LEGACY_COMPLIANCE_TEMPLATES=true on this deployment. | info | No | 403 |
| DALP-0681 | A precondition on the request was not met. | The If-Match or If-None-Match condition sent with the request does not hold for the current resource: it was changed, created, or removed since the version the request was built against. | Read the resource again, apply your change to the version you just read, and send the request with the entity-tag from that read. | info | No | 412 |
| DALP-0684 | The requested airdrop was not found. | No airdrop at the requested address has been indexed for the active chain, so there is nothing to return. | Confirm the airdrop address and that it has been deployed and indexed, then retry. | info | No | 404 |
| DALP-0688 | Compliance template selection was not accepted: the compliance template must belong to your organization or be a system template. | The complianceTemplateId provided does not match any compliance template visible to the requesting organization. The template either belongs to a different organization or does not exist. | Supply a complianceTemplateId that belongs to your organization or is a platform system template. Retrieve the list of available templates from the compliance templates endpoint, or send null to clear the link. | info | No | 400 |
| DALP-0689 | A live eligibility recheck requires a positive amount. | live=true recomputes eligibility with an on-chain canTransfer call, and compliance rules can depend on the amount being transferred. An absent amount leaves no single amount to answer for, and a zero or negative one clears the amount-dependent rules so the verdict would describe a transfer nobody intends to make. | Send the intended purchase amount in base units as a positive amount, or drop live=true to read the indexed eligibility. | info | No | 400 |
| DALP-0690 | The network definition changed before this save. | The If-Match version on the request does not match the stored network definition. | Read the network again, reapply your change, and save with the entity-tag from that read. | info | No | 412 |
| DALP-0691 | A stored network with this name already exists. | The request required the network to be new, but the registry already contains this name. | Read the existing network and save it as an edit, or choose a different network name. | info | No | 412 |
| DALP-9070 | Transfer amount exceeds available balance. | The source address does not hold enough available tokens for this transfer. | Reduce the transfer amount or mint/transfer tokens to the source address, then retry. | info | No | 400 |
| DALP-9071 | Burn amount exceeds available balance. | The address does not hold enough available tokens for this burn. | Reduce the burn amount or transfer tokens to the address, then retry. | info | No | 400 |
| DALP-9074 | Failed to add member to organization. | The add-member request was rejected, the user may already belong to this organization, or the provided user id does not exist. | Verify the user id is correct and check whether the user is already a member of the organization. | info | No | 409 |
| DALP-9077 | Token {tokenAddress} matured; minting closed for maturity-redemption tokens. | Maturity-redemption tokens stop ordinary issuance once they are matured. The redemption budget is fixed to the token supply at maturity. | Do not mint this token after maturity. Use the existing maturity treasury top-up path to fund redemptions, or issue a new instrument if new supply is required. | info | No | 409 |
| DALP-9078 | Only the settlement's creator can store its settlement secret. | The stored secret unlocks settlement execution and the first stored value wins, so accepting a secret from any other participant would let them squat a value the creator can never overwrite. | Ask the participant who created the settlement to store the secret. | info | No | 403 |
| DALP-9082 | The permit deadline is in the past. | The requested signature deadline is at or before the current time, so permit() would always revert on-chain and the custodial signature could never be relayed. | Sign a new permit with a deadline in the future. | info | No | 400 |
| DALP-9083 | Configure at least one RPC endpoint before completing platform setup. | Platform setup stays open until an RPC endpoint is saved, because creating your first organization needs a working blockchain connection. | Add and save at least one RPC endpoint on the platform setup page, then complete setup. | info | No | 400 |
| DALP-9084 | The X-Chain-Id header must be a numeric chain id. | The X-Chain-Id header value did not pass the chain-id format check: the value must be a positive decimal integer with no leading zeros, no greater than 2147483647 (the largest supported chain id). | Send a numeric chain id within the supported range (for example 31337), or omit the header to target the organization's default network. | info | No | 400 |
| DALP-9085 | The requested network is not available for this organization. | The X-Chain-Id header names a network the active organization has no active system on, or the organization has not enabled multi-network support. The organization deploy route also uses this code when the network picked for a first system is not one the platform offers and has bootstrapped. | Switch to the organization's default network, or add the network in organization settings after enabling multi-network support. During onboarding, pick one of the networks the deployable-networks read returns. | info | No | 400 |
| DALP-9086 | The requested network is not ready for this organization. | The organization has the requested network registered, but its system is not active: the deployment is still pending or running, has failed, or the network was disabled. | Check the network's status in organization settings; wait for the deployment to finish or retry it, then retry the request. | info | No | 409 |
| DALP-9088 | The RPC endpoint failed validation. | The endpoint URL, credentials, chain ID, or latest block response does not match the selected network. | Check the endpoint configuration and confirm it serves fresh blocks for the selected network, then save again. | info | No | 400 |
| DALP-9090 | No organization is available to invite this person into. | The membership service could not resolve an organization to invite into: the current session may have no organization selected, or the acting account may no longer hold a membership in the organization it points at. | Select an organization the acting account belongs to and send the invitation again. If one is already selected, ask an organization owner to confirm the acting account is still a member of it. | info | No | 404 |
| DALP-9094 | This request's API key has sent too many requests. | The credential presented with this request has used up the requests its rate limit allows inside the current time window, so the invitation was never attempted. | Wait for the current rate-limit window to pass, then send the invitation again. Space bulk invitations out over a longer period, or ask an organization owner to raise the request allowance on this key. | info | Yes | 429 |
| DALP-9140 | Governance poll not found. | Platform API could not find the poll in the authenticated tenant scope. | Verify the poll identifier and tenant context before retrying. | info | No | 404 |
| DALP-9141 | Governance poll is not accepting ballots. | Ballots are only accepted between the poll's open and close times while the poll status is open. | Check the poll's opensAt and closesAt window; ballots submitted after close are rejected even if signed before close. | info | No | 409 |
| DALP-9142 | Governance poll is already closed. | The poll's tally has been frozen; a closed poll cannot be closed again or accept ballots. | Read the poll to inspect the frozen tally or export the ballots. | info | No | 409 |
| DALP-9143 | Ballot was signed over a different poll definition. | The definition hash in the signed ballot does not match the poll's current immutable definition, so the signature does not cover this poll. | Fetch the poll again and re-sign the ballot over its current definitionHash. | info | No | 409 |
| DALP-9144 | Ballot signature verification failed. | The signature does not verify against the claimed voter address. Undeployed smart wallets and ERC-6492 wrapped signatures are not accepted. | Sign the exact PollBallot typed data with the claimed voter wallet and retry. Smart wallets must be deployed on-chain. | info | No | 422 |
| DALP-9145 | Voter wallet does not belong to the caller. | Ballots may only be submitted for wallets in the authenticated caller's wallet set. | Submit the ballot from the account that owns the voter wallet. | info | No | 403 |
| DALP-9146 | Voter has zero voting power at the poll record date. | Ballot weight resolves from the indexed voting-power snapshot at the poll's record date; a zero-weight ballot is rejected. | Only wallets with delegated voting power at the record date can cast ballots on this poll. | info | No | 422 |
| DALP-9147 | Caller lacks the governance role on the token. | Creating or closing a poll requires the governance role on the token whose holders are polled. | Ask a token admin to grant the governance role to one of your wallets, then retry. | info | No | 403 |
| DALP-9148 | Poll schedule is inconsistent. | The poll's open, close, and record-date timestamps must form a valid window: recordDateAt before opensAt, and opensAt before closesAt. | Set recordDateAt before opensAt, and make sure opensAt is before closesAt, then retry. | info | No | 422 |
| DALP-9150 | Token governance addon not found. | No token-governance factory is registered in the authenticated system's addon registry. | Enable the token-governance addon for this organization, then retry. | info | No | 404 |
| DALP-9151 | Governance instance not found. | No governor and timelock pair is deployed for this token by a factory in the authenticated system. | Create the first proposal through the Console to bootstrap the token's governance pair, or verify the governor address. | info | No | 404 |
| DALP-9152 | Governance proposal not found. | The proposal id is not indexed on the given governor within the authenticated system. | Verify the governor address and proposal id; freshly created proposals appear once indexed. | info | No | 404 |
| DALP-9153 | Proposal configuration is out of bounds. | Record date, voting period, execution delay, or quorum violates the protocol bounds or the governance instance's quorum floor. | Adjust the schedule parameters to the documented bounds (record date now+24h to now+90d, period 1-30 days, delay 24h-30d, quorum at or above the instance floor) and retry. | info | No | 422 |
| DALP-9154 | Executable action is not in the curated catalog. | Proposals may only carry curated governance-role single-call operations; the composed action's target or selector is outside the catalog or the feature is not attached to the token. | Compose the proposal from catalog actions on features attached to the token. | info | No | 422 |
| DALP-9155 | Timelock lacks the governance role on the token. | Executable proposals run through the timelock, which must hold the governance role on the token's access manager before the vote is created. | Grant the governance role to the timelock address returned in the error data, then retry. | info | No | 409 |
| DALP-9156 | Proposal is not accepting votes. | Votes are accepted only between the record date and the voting deadline (deadline-second inclusive). | Check the proposal's snapshot and deadline timestamps; cast during the active window. | info | No | 409 |
| DALP-9157 | Voter has zero voting power at the record date. | Cast eligibility derives from the indexed voting-power snapshot at the proposal's record date; holders who did not activate or delegated away have no weight. | Activate voting power before the record date of a future vote; this proposal's snapshot is fixed. | info | No | 422 |
| DALP-9158 | Vote already cast on this proposal. | On-chain governance votes are final; one ballot per wallet per proposal. | No action is available. The recorded ballot stands. | info | No | 409 |
| DALP-9159 | Proposal is not in a valid state for this operation. | Queue requires a succeeded executable proposal, execute requires a queued proposal past its timelock delay, and cancel requires a pending or queued proposal. | Check the proposal status and retry once it reaches the required state. | info | No | 409 |
| DALP-9160 | Voting-power feature cannot be detached during open votes. | The token's governor has proposals that are not yet executed, defeated, or canceled; detaching the voting-power feature would invalidate their electorate. | Wait for open proposals to reach a terminal state (or cancel them), then retry the detach. | info | No | 409 |
| DALP-9162 | Token does not carry the voting-power feature. | Governance requires a configurable token with the voting-power feature attached as the electorate source. | Attach the voting-power feature to the token, then retry. | info | No | 422 |
| DALP-9164 | Poll ballot rate limit exceeded. | Too many ballot submissions arrived from this caller for this poll in a short window. | Wait for the Retry-After interval before submitting another ballot. | info | Yes | 429 |
| DALP-9165 | This XvP settlement spans more than one chain. | An XvP settlement swaps assets that all live on a single chain, but this settlement's legs and contract resolve to different chains, so it cannot settle as one atomic exchange. | Recreate the settlement with every leg and the settlement contract on the same chain, then submit it from that chain. | info | No | 422 |
| DALP-9169 | Multi-network support cannot be disabled while additional networks are in use. | At least one non-default network has a system that is deploying or active; disabling the opt-in would orphan it. | Wait for in-flight network deployments to finish, then remove the additional networks before disabling multi-network support (network removal is not yet available). | info | No | 409 |
| DALP-9170 | The requested network is not enabled in this deployment. | Organizations may only add networks that the platform deployment has enabled in its configuration; the requested chain id is not one of them. | Choose a network the deployment enables, or ask the platform operator to enable the network in the deployment configuration. | info | No | 400 |
| DALP-9171 | The requested network is already added for this organization. | The organization already has a system row for this chain; a network is added at most once. | Use the existing network; check its status in organization settings. | info | No | 409 |
| DALP-9172 | Another network deployment is already in progress for this organization. | Add-network is serialized per organization: a pending or deploying network deployment (or the initial organization deployment) is still running. | Wait for the in-flight deployment to finish, then retry adding the network. | info | No | 409 |
| DALP-9173 | The deploying administrator has no usable wallet to sign the network deployment. | The system-deployment workflow signs from the deploying admin's EOA, but the calling account has no usable EOA wallet bound. | Bind a wallet to the administrator account, then retry adding the network. | info | No | 409 |
| DALP-9174 | The organization's default network cannot be added again. | The default network is provisioned by the initial organization deployment, so it is not an additional network to add. | Add a network other than the organization's default network. | info | No | 400 |
| DALP-9179 | The requested network is not enabled in this deployment. | The X-Chain-Id header names a chain that is not in the deployment's configured enabled-network set. Platform-admin reads are validated against the deployment config, not against any organization's added networks. | Send one of the deployment's enabled chain ids, or omit the header to target the deployment default network. | info | No | 400 |
| DALP-9180 | Participant creation rate limit exceeded. | Each organization can create up to 10 wallet-backed participants per minute because creation spends the organization's paymaster-funded provisioning budget, and the platform has exhausted that window's provisioning budget. | Wait for the Retry-After interval before creating another participant. | info | Yes | 429 |
| DALP-9181 | This filter only supports the eq operator. | containsFeature and containsModule are containment checks run as custom SQL against a single value, not comparable/sortable columns, so they support exact-match filtering only; data.field and data.operator name the filter and operator the request sent. | Retry with filter[<field>]=value or the explicit form filter[<field>][eq]=value. | info | No | 422 |
| DALP-9182 | This feature cannot be detached while attached features depend on it. | Other features attached to this token declare this feature as a dependency in the feature registry. Detaching it would break their on-chain accounting; for example a dividend or interest feature reads the balance checkpoints that historical-balances records at each record date. | Detach the dependent features first, then retry detaching this feature. | info | No | 409 |
| DALP-9183 | This multisig approval is still starting up. Co-signing opens in a moment. | The initiator's approval was accepted but the platform has not finished setting up its signature-collection workflow, so the approval is not visible yet. | Retry the co-signature after a short backoff; the approval becomes signable once its workflow finishes starting. | info | Yes | 404 |
| DALP-9186 | Compliance template selection was not accepted: the compliance template is a draft or uses an incompatible module set. | The complianceTemplateId provided resolves to a compliance template that is still a draft or whose module set is not compatible with the current platform module-set version. Linking it to an asset type template would make the designer's compliance expansion fail later. | Publish the compliance template first, or migrate it to the current module-set version, then retry. The compliance templates list endpoint with isDraft=false and the current moduleSetVersion returns only selectable templates. | info | No | 400 |
| DALP-9194 | The token-sale investment result set is too large. | The filtered sale set is larger than the bounded window that the service can safely enrich with buyer-specific positions. | Narrow the list with a date, total-sold, or search filter, then retry. | info | No | 422 |
| DALP-9238 | The network definition failed validation. | The submitted definition does not satisfy the network configuration rules. Two examples are a finality setting that needs an explicit confirmation count, and a response cache whose safety margin is below the health head-lag. | Correct the reported field and save the network again. | info | No | 400 |
| DALP-9239 | The network catalog cannot accept this change. | Networks are validated together, not one at a time. The saved definition conflicts with another network. The usual causes are two enabled networks claiming the same chain ID, and a change that would leave no enabled default network. | Disable or correct the conflicting network first, then save this one again. | info | No | 409 |
| DALP-9243 | The token creation values cannot be processed. | The token creation input cannot be represented by the durable workflow schema. | Correct the reported token amount or price fields and retry the request. | info | No | 422 |
| DALP-9252 | The metadata key cannot be used for this asset query. | The requested metadata key is unknown or is not eligible for the selected filter or grouping operation. | Use one of the available metadata keys that supports this query operation. | info | No | 422 |
| DALP-9257 | The system-read request context could not be resolved. | The request context cannot select a valid participant or executor for the system read. | Correct the request participant, executor, or chain selection and retry. | info | No | 400 |
| DALP-9269 | The sort field is not supported on this list. | List endpoints accept only the sortable fields declared for that collection. An unknown or non-sortable field name cannot order the page. | Use one of the sortable fields documented for this list endpoint, or omit sort to keep the default order. | info | No | 400 |
| DALP-9270 | List endpoints accept a single sort field. | The collection query codec supports one sort field per request. Comma-separated multi-field sort is not implemented on the shared list infrastructure. | Send a single field in sort (prefix with - for descending) and retry. | info | No | 400 |
| DALP-9271 | The filter field is not supported on this list. | List endpoints accept only the filterable fields declared for that collection. An unknown or non-filterable field name cannot narrow the page. | Use one of the filterable fields documented for this list endpoint, or remove the unknown filter key. | info | No | 400 |
| DALP-9272 | The filter operator is not supported. | Each collection filter accepts only the operators defined for that field. An unknown operator cannot be applied safely to the list query. | Use a documented operator for the field (for example eq, iLike, inArray, or between) and retry. | info | No | 400 |
| DALP-9273 | The membership filter list is too large. | Membership filters (inArray and notInArray) cap the number of values so SQL IN clauses stay bounded and predictable. | Send at most 100 values in the membership list, or split the request across multiple pages or batches. | info | No | 400 |
| DALP-9274 | The page limit is out of range. | Every collection list bounds page size to an integer between 1 and 200 so a single request cannot pull an unbounded result set. | Set limit or page[limit] to an integer from 1 through 200 and use pagination links for additional rows. | info | No | 400 |
| DALP-9275 | The page offset is out of range. | Collection list offsets must be integers of zero or greater. A negative offset is not a valid start position for a page. | Set offset or page[offset] to an integer greater than or equal to 0. | info | No | 400 |
| DALP-9278 | The network is still in use. | Organizations have systems deployed on this chain, and disabling or removing the network would leave them unreachable. | Keep the network available until those systems are archived, or point them at another network on the same chain first. | info | No | 409 |
| DALP-9279 | There is no saved definition for this network. | Only networks saved through the admin API can be removed. This name either does not exist or is defined by the deployment configuration, which the API cannot change. | Check the network name in the network list, and change deployment-defined networks through the deployment configuration instead. | info | No | 404 |
| DALP-9280 | The network still has RPC upstreams configured. | Moving this network to another chain would leave the saved upstreams pointing at a different chain than the one they were checked against. Saving a new chain ID does that, and so does deleting a saved definition that moved the network away from its deployment chain. | Remove this network's RPC upstreams, make the change, then add them again. | info | No | 409 |
| DALP-9281 | Organization not found. | No organization matches the requested id. | Confirm the organization id from the platform-admin organization list, then retry. | info | No | 404 |
| DALP-9282 | Organization is already archived. | The organization has an archivedAt timestamp set, so it is already hidden from the platform. | Restore the organization first if it needs to be archived again, or take no further action. | info | No | 409 |
| DALP-9283 | Organization is not archived. | Restoring an organization requires an existing archivedAt timestamp, and this organization has none. | Archive the organization first, or confirm this is the intended organization before restoring. | info | No | 409 |
| DALP-9284 | Failed to update the organization's archive state. | The archive or restore request was rejected. The organization may have changed state concurrently. | Reload the organization and retry the archive or restore action. | info | No | 409 |
| DALP-9285 | User not found. | No user matches the requested id. | Confirm the user id from the platform-admin user list, then retry. | info | No | 404 |
| DALP-9286 | You cannot reset your own onboarding. | The reset archives the target's wallets and revokes every session, which would lock the acting admin out mid-operation. | Ask another platform admin to reset your onboarding. | info | No | 409 |
| DALP-9287 | Failed to reset the user's onboarding. | The reset was rejected. The user may have changed state concurrently. | Reload the user and retry the onboarding reset. | info | No | 409 |
| DALP-9289 | Token list filter uses an unsupported operator or value. | The governedByCaller and governedByExecutor filters accept only eq with the string true or false. Other operators or values do not describe the affordance gate. | Send filter[governedByCaller][eq]=true or filter[governedByCaller][eq]=false (same for governedByExecutor). | info | No | 400 |
| DALP-9292 | There is no such system on this chain. | The indexing scope holds the systems this platform has seen announced on a chain. A system it has never seen has none of the details the indexer needs to start reading its history. | Check the chain and the system address against the indexing-scope list. | info | No | 404 |
| DALP-9298 | The market was not found. | The market id does not name a listed market in your organization, so the platform has nothing to read or operate on. | Use a market id from the markets list of your organization. | info | No | 404 |
| DALP-9299 | The order was not found. | The order id does not name an order placed by a wallet the selected participant controls, so the platform has nothing to read or cancel. | Use an order id from the working-orders list of the selected participant. | info | No | 404 |
| DALP-9300 | The venue-operator role is required. | Market listing, halts, resumes, delistings, and fee schedules are venue-operator controls, and the authenticated session holds neither the platform administrator role nor organization ownership. | Sign in as a platform administrator or organization owner, then repeat the request. | info | No | 403 |
| DALP-9301 | The order is no longer open. | The order already reached a terminal status such as filled, cancelled, expired, or rejected, so there is nothing left to cancel. | Refresh the working-orders list; only pending, working, or partially filled orders can be cancelled. | info | No | 409 |
| DALP-9302 | The order was refused before it reached the book. | An intake check failed: identity-registry eligibility, desk limits, the trading authorization, the signed fee cap, expiry, the order signature, or the submission rate. | Correct the order against the rejection reason in the response, then submit a new signed order. | info | No | 422 |
| DALP-9303 | The wallet's reserved balance cannot cover this order. | The wallet's spendable balance minus its existing reserved balance across all markets is smaller than the amount this order must reserve. | Cancel resting orders to release reserved balance, or submit a smaller order. | info | No | 409 |
| DALP-9305 | The market cannot make this transition. | The requested market operation is not valid for the market's current status: for example resuming a market that is not halted, or halting one that is not live. | Check the market status on the venue-operations surface, then issue a valid transition. | info | No | 409 |
| DALP-9306 | The market-data stream could not be opened. | The stream request named a market this deployment does not serve, or the request came from another origin. | Open the stream same-origin against a live market id from the markets list. | info | No | 404 |
| DALP-9308 | The Trading Venue factory is not available yet. | The system's addon registry holds no indexed Trading Venue factory, so there is no contract to create the venue from. | Wait for the system deployment's addon registration to finish indexing, then repeat the request. If the addon was never installed, register the trading-venue addon factory first. | info | Yes | 409 |
| DALP-9309 | The venue was not found. | The venue address does not name a venue created by your organization's Trading Venue factory, so the platform has no venue to list the market on. | Use a venue address from the venues list of your organization. | info | No | 404 |
| DALP-9311 | The Canton party wallet was not found. | No Canton party wallet matches this party id in the active organization, so the platform returned no record. | Use a wallet id from the wallets list of the active organization. | info | No | 404 |
| DALP-9312 | The Canton command submission was not found. | No Canton command submission matches this identifier in the active organization, so the platform returned no record. | Use the submission id returned when the command was accepted. | info | No | 404 |
| DALP-9316 | The Canton party allocation was not found. | No Canton party allocation matches this identifier in the active organization, so the platform returned no record. | Use the allocation id returned when the party wallet create was accepted. | info | No | 404 |
Authentication errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0002 | Authentication missing or failed. | The request did not include valid authentication credentials. | Authenticate again or send a valid API key/session credential. | info | No | 401 |
| DALP-0004 | User not onboarded. | The authenticated user has not completed onboarding required for this operation. | Complete onboarding and retry the request. | info | No | 403 |
| DALP-0005 | Two-factor authentication required. | The operation requires wallet-signing protection that is not configured for this user. | Set up PIN or two-factor authentication and retry. | info | No | 403 |
| DALP-0009 | Session resolution failed. | Platform API could not resolve the authenticated session from the request headers. | Retry with a fresh session or API key. If the problem continues, contact support with the request id. | error | No | 500 |
| DALP-0036 | This authentication method is not supported on this endpoint. Use the REST API instead. | The request used API key authentication on an endpoint that only accepts session authentication. | Call the REST endpoint with the API key, or authenticate with a supported session for RPC. | info | No | 403 |
| DALP-0454 | Account has no associated wallet. | The migration start route needs the authenticated account wallet before it can verify migration permissions. | Connect a wallet to your account, then start the migration again. | info | No | 403 |
| DALP-0455 | You need the system manager or admin role to trigger a system migration. | The authenticated wallet does not hold a role that is allowed to start the system migration workflow. | Use an account with the system manager or admin role, or ask an admin to grant the role before retrying. | info | No | 403 |
| DALP-0472 | Step-up authentication required for this operation. | The route requires a recent re-authentication and the current session is older than the policy window. | Re-authenticate (sign in again or complete the step-up challenge) and retry the request. | info | No | 403 |
| DALP-0488 | Webhook authentication failed. | The compliance webhook signature or URL token could not be verified against the provider credentials. | Verify the provider webhook URL and signing secret configuration, then send a freshly signed event. | info | No | 401 |
| DALP-0510 | Webhook signature verification failed. | The webhook signature, timestamp, or signed payload did not verify against the expected signing material. | Verify the signing secret, timestamp tolerance, and exact raw request body before retrying. | info | No | 401 |
| DALP-0659 | Identity provider verification failed. | The authenticator code did not pass the identity provider's verification for this signing request. | Enter a fresh code from your authenticator app and try the operation again. | info | No | 403 |
| DALP-0661 | Permit signing covers the caller's own balance only. | The requested permit owner does not match the authenticated caller's token-holding wallet, and a holder may only authorise allowances against their own balance. | Omit the owner field, or set it to your own wallet address, and sign again. | info | No | 403 |
| DALP-9093 | This request's API key was rejected. | The credential presented with this request is unknown, switched off, past its expiry, over its usage allowance, or tied to a blocked account, so the invitation was never attempted. | Rotate to an active API key, re-enable the existing one, or raise its usage allowance, then send the invitation again. | info | No | 401 |
| DALP-9188 | Session authentication evidence is incomplete. | The request session did not include the linked authentication providers needed to authorize the call. | Sign in again, then retry the request. | info | No | 401 |
| DALP-9251 | A participant wallet is required. | The authenticated participant has no wallet on the active chain. | Attach a wallet to the participant or provide an authorized wallet filter. | info | No | 401 |
| DALP-9255 | Authentication is required to read this system. | The system projection cannot be read without an authenticated request context. | Authenticate with a supported session or API key and retry the request. | info | No | 401 |
| DALP-9276 | Login two-factor authentication enrollment is required. | This deployment requires every interactive user to enroll login two-factor authentication before calling authenticated APIs. | Open the two-factor setup page, enroll an authenticator app, then retry the request. | info | No | 403 |
Permission errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0003 | This operation isn't available for your role. | The authenticated actor does not have permission to complete this request. | Use an actor with the required role or ask an administrator to grant access. | info | No | 403 |
| DALP-0006 | This action requires a role the acting wallet does not hold. | The token or system contract restricts this action to the {{requiredRoles}} role, and the acting wallet was granted no matching role. | Ask an administrator to grant the {{requiredRoles}} role, then retry, or perform this action with a wallet that already holds it. | info | No | 403 |
| DALP-0007 | Unable to decrypt secret. Verify you are using the original wallet credentials. | The encrypted XvP settlement secret could not be decrypted with the caller's current wallet signature. | Retry with the same wallet credentials that were used when the settlement secret was created. | warning | No | 403 |
| DALP-0032 | Insufficient role for this operation. | The operation requires elevated permissions and the authenticated actor does not hold the role required for this route. | Retry with an account that has the role required by this route, or check the route documentation for the required role. | info | No | 403 |
| DALP-0034 | Active organization required for this operation. | The request requires organization-scoped permissions, but the session does not have an active organization selected. | Select an organization, refresh the session, and retry the request. | info | No | 403 |
| DALP-0035 | This API key is read-only and cannot perform write operations. | The request uses a read-only API key on a method that can mutate state. | Use a read-write API key or send the request with a safe read method. | info | No | 403 |
| DALP-0043 | Trusted issuer permission required for the requested topic. | The user's issuer identity is not trusted for the claim topic being mutated. | Use a trusted issuer for the topic, or ask a system manager to trust this issuer for the topic. | info | No | 403 |
| DALP-0044 | The user does not have an issuer identity. | The operation requires a registered issuer identity for the authenticated user. | Register an issuer identity for the user, then retry. | info | No | 403 |
| DALP-0055 | Only organization owners or platform admins may retry an organization deployment. | Retrying deployment mutates organization settings and on-chain system state, so member-level access is not sufficient. | Retry with an organization owner or platform administrator account. | info | No | 403 |
| DALP-0057 | Only platform admins may create organizations in this environment. | The deployment is creating a new organization while the environment restricts organization creation to platform admins. | Ask a platform admin to create the organization or disable the restriction for this environment. | info | No | 403 |
| DALP-0069 | Only the local sender can approve this XvP settlement. | The caller is not the local sender recorded for the XvP settlement flow. | Approve from the wallet that is the local sender for this settlement. | info | No | 403 |
| DALP-0072 | Wallet id required for XvP settlement signing. | The authenticated user has no wallet id available for signing the XvP settlement message. | Complete wallet onboarding, refresh the session, and retry. | info | No | 403 |
| DALP-0077 | The specified yield schedule does not belong to the authenticated system. | The requested fixed-yield schedule is associated with a different system than the caller's active system. | Use a schedule address from the authenticated system. | info | No | 403 |
| DALP-0087 | Resource not found. | The resource does not exist or is not available to the current actor. | Check that the identifier is correct and that the actor has access to this resource. | info | No | 404 |
| DALP-0141 | Wallet {{walletAddress}} does not belong to user {{address}}. Verify the wallet address. | The wallet address provided in the request is not registered as belonging to the target user's participant record. Only wallets owned by the target user are permitted for recovery. | Use a wallet address that is registered to the target user, or retrieve the user's wallets from the participants API first. | info | No | 403 |
| DALP-0147 | The active organization does not have the required permission for this operation. | The permission check on the active organization failed. The organization has not been granted the off-chain permission required by this route. | Ask an administrator to grant the required permission to this organization, then retry. | info | No | 403 |
| DALP-0148 | The authenticated user does not have the required permission for this operation. | The permission check on the authenticated user failed. The user has not been granted the off-chain permission required by this route. | Ask an administrator to grant the required user-level permission, then retry. | info | No | 403 |
| DALP-0149 | The wallet header value is not permitted for this request. | A wallet header was present in the request but the caller does not have permission to use it in this context. | Remove the wallet header from the request, or use a wallet address that is authorized for this operation. | info | No | 403 |
| DALP-0177 | No MultisigWeightedValidator on this wallet. Install one before managing signers. | The wallet has no installed MultisigWeightedValidator module, so signer management is unavailable. | Install a MultisigWeightedValidator on the wallet, then retry the signer operation. | info | No | 403 |
| DALP-0179 | No MultisigWeightedValidator on this wallet. Install one before managing signers. | The wallet has no installed MultisigWeightedValidator module, so signer management is unavailable. | Install a MultisigWeightedValidator on the wallet, then retry the signer operation. | info | No | 403 |
| DALP-0182 | Approval does not belong to this wallet. | The approval record is scoped to a different wallet than the one in the request path. | Use the wallet address that owns the approval, or create a new approval for this wallet. | info | No | 403 |
| DALP-0184 | Approval does not belong to this wallet. Cross-wallet signature submission is not allowed. | The approval record is scoped to a different wallet than the signer session expects. | Sign the approval from a wallet that owns it, or submit signatures only for approvals on that wallet. | info | No | 403 |
| DALP-0186 | The authenticated wallet must appear in the multisig signers list. | The request wallet is not registered as a signer on the target multisig wallet. | Add the authenticated wallet as a signer, or switch to a wallet that is already on the signers list. | info | No | 403 |
| DALP-0191 | No wallet ID available. Ensure the user session has a valid signer wallet configured. | The user session has no signer wallet configured for smart-wallet operations. | Configure a signer wallet for the session, then retry. | info | No | 403 |
| DALP-0192 | Non-default signer weights are not supported by this endpoint yet. Add the signer with weight 1 or use a dedicated weight-management flow. | The add-signer endpoint requires every new signer to carry weight 1. A weight other than 1 was supplied, and per-signer weight configuration is not yet available on this endpoint. | Submit the request with weight set to 1. To assign a different weight, use the dedicated weight-management endpoint after adding the signer. | info | No | 403 |
| DALP-0193 | None of your known signing EOAs is currently a signer on this wallet. | The authenticated user's EOAs are not registered as signers on the target multisig wallet. | Re-claim the wallet from a current signer EOA, or ask a wallet owner to add your signer. | info | No | 403 |
| DALP-0194 | You are not authorized to update metadata for this wallet. | The authenticated EOA is not an owner or registered signer for this smart wallet. | Sign in with an EOA that controls this wallet, or claim the wallet from that EOA first. | info | No | 403 |
| DALP-0195 | You are not a signer on this multisig wallet. | The authenticated wallet is not registered as a signer on the selected multisig validator. | Select a wallet that is a registered signer, or ask a wallet owner to add your signer before retrying. | info | No | 403 |
| DALP-0196 | Only multisig signers can create approvals for this wallet. | The authenticated wallet is not registered as a signer on the selected multisig validator, so it cannot initiate an approval request. | Switch to a registered signer wallet, or ask a wallet owner to add your signer before creating the approval. | info | No | 403 |
| DALP-0197 | You are not a signer on this wallet. | The authenticated wallet is not registered as a signer for the selected smart wallet. | Use a registered signer wallet, or ask a wallet owner to add your signer before retrying. | info | No | 403 |
| DALP-0198 | Only the wallet owner can perform this operation directly. Use the multisig approval flow for co-signer operations. | The requester is a co-signer, not the wallet owner, and this operation requires owner execution or an approval workflow. | Switch to the owner wallet, or create and collect multisig approvals before executing the operation. | info | No | 403 |
| DALP-0214 | At least one address and one role must be present. | The request supplied an empty address list or an empty role list after deduplication. The platform requires at least one address and one role to encode a grant-role or revoke-role call. | Include at least one wallet address and one role name in the request body, then resubmit. | info | No | 403 |
| DALP-0215 | System access manager contract not found for this system. | The platform resolved the system context but found no access manager contract address attached to it. The grant-role call cannot be encoded without a target contract. | Verify that the system has a deployed access manager. If the system was recently bootstrapped, confirm the indexer has caught up before retrying. | info | No | 403 |
| DALP-0216 | System access manager contract not found for this system. | The platform resolved the system context but found no access manager contract address attached to it. The revoke-role call cannot be encoded without a target contract. | Verify that the system has a deployed access manager. If the system was recently bootstrapped, confirm the indexer has caught up before retrying. | info | No | 403 |
| DALP-0217 | Roles not found: {role}. | One or more role names in the request did not match any known system access control role. The platform resolves each role by field name before encoding the on-chain call. | Check the role value against the list of supported role names and correct any typos or unsupported values. | info | No | 403 |
| DALP-0219 | Unexpected error: address or role configuration failed to apply. | The platform selected the single grantRole or revokeRole encoding path (one address, one role) but the resolved address or role was unexpectedly absent. This reflects an internal state inconsistency rather than a caller error. | Retry the request. If the problem persists, contact support with the request id. | info | No | 403 |
| DALP-0220 | Unexpected error: role configuration failed to apply. | The platform selected the batchGrantRole or batchRevokeRole encoding path (multiple addresses, one role) but the resolved role was unexpectedly absent. This reflects an internal state inconsistency rather than a caller error. | Retry the request. If the problem persists, contact support with the request id. | info | No | 403 |
| DALP-0223 | Database not available. Required for advisory lock during paymaster signer provisioning. | The paymaster-signer addon initialization step needs a database connection to acquire an advisory lock before staging the signer key. The database context was not present at that point. | Contact support with the request id. This indicates a server configuration issue with database middleware ordering. | info | No | 403 |
| DALP-0230 | Paymaster addon deployment completed without a transaction receipt; cannot persist the paymaster-scoped signer key. | The paymaster addon deployed on-chain but the transaction produced no receipt. Without a receipt the platform cannot decode the deployed proxy address from the event logs, so the staged signer key cannot be bound to the new paymaster. | Contact support with the request id. The on-chain transaction may have succeeded; support can locate the proxy address and manually complete the signer binding. | info | No | 403 |
| DALP-0231 | Paymaster signer key mismatch for {paymasterAddress}. | The staged signer key in the secrets store does not match the signer registered on-chain for the paymaster proxy at {paymasterAddress}. This happens when a prior partial deploy left a stale or missing key, or when the staged key is a legacy raw private key that the platform refuses to bind. | Use the paymaster signer rotation endpoint to replace the signer key with a valid custody-backed key, then retry the addon registration. | info | No | 403 |
| DALP-0232 | Pending paymaster signer key exists but is not valid hex ({paymasterAddress}). | The platform found a value in the pending signer key slot for {paymasterAddress} but the value is not a valid hexadecimal wallet identifier. This typically indicates corrupted or truncated data written by a previous provisioning attempt. | Contact support with the request id. The pending key entry must be cleared and the paymaster signer re-provisioned via the rotation endpoint. | info | No | 403 |
| DALP-0235 | Secrets provider not available; required for persisting the paymaster signer key after deployment. | The paymaster addon deployed on-chain, but the platform could not reach the secrets store to record the paymaster signer key. Without this step the paymaster proxy has no signer key binding and cannot sponsor transactions. | Contact support with the request id. The platform's secrets service must be available to complete paymaster signer key binding after deployment. | info | No | 403 |
| DALP-0236 | Secrets provider not available; required for preparing the paymaster signer key. | The platform attempted to stage a new paymaster signer key before deployment but could not reach the secrets store. The signer key must be staged before the on-chain deploy so the workflow can bind it to the proxy address afterward. | Contact support with the request id. The platform's secrets service must be available before a paymaster addon deployment can begin. | info | No | 403 |
| DALP-0237 | Secrets provider not available; required for reconciling the paymaster signer key. | The platform attempted to reconcile the staged signer key against an existing paymaster proxy but could not reach the secrets store. Reconciliation reads the pending key to verify it matches the on-chain signer before allowing retry or re-deployment. | Contact support with the request id. The platform's secrets service must be available to complete paymaster signer key reconciliation. | info | No | 403 |
| DALP-0286 | Wallet ID not found. User must have a wallet ID to rotate the signer key. | The authenticated user's session does not include a wallet ID, which the signer-key rotation route requires to identify the signing wallet. | Ensure the user account has a wallet provisioned and that the session token carries the wallet ID before calling this route. | info | No | 403 |
| DALP-0297 | Grant role input shape was not accepted. Provide either { accounts, role } or { account, roles }. | The request body did not match either of the two supported shapes for granting roles: one role to multiple accounts, or multiple roles to one account. | Restructure the request body to use exactly one of the two supported shapes: { accounts, role } to grant one role to multiple accounts, or { account, roles } to grant multiple roles to one account. | info | No | 403 |
| DALP-0298 | Revoke role request body did not match an accepted shape. Provide either { accounts, role } or { account, roles }. | The request body contained neither the accounts+role shape nor the account+roles shape, so the platform could not determine which accounts or roles to revoke. | Resubmit the request with exactly one of the two accepted shapes: { accounts, role } to revoke one role from multiple accounts, or { account, roles } to revoke multiple roles from one account. | info | No | 403 |
| DALP-0299 | Role granting requires at least one role. | The roles array in the { account, roles } grant request was empty, so the platform had no roles to grant. | Include at least one valid role name in the roles array and resubmit. | info | No | 403 |
| DALP-0300 | Role revocation requires at least one role. | The roles array in the { account, roles } revoke request was empty, so the platform had no roles to revoke. | Include at least one valid role name in the roles array and resubmit. | info | No | 403 |
| DALP-0301 | One or more roles not found. Check that all role names are valid access control roles. | At least one name in the roles array did not resolve to a known access control role, so the platform rejected the entire request rather than apply a partial set of grants. | Verify every role name in the roles array against the list of valid access control roles and resubmit with corrected names. | info | No | 403 |
| DALP-0302 | Role {role} not found. Check the role name is a valid access control role. | The role name {role} did not match any known access control role in the registry, so the platform could not encode the grant or revoke call. | Check the spelling of {role} against the list of supported access control roles and resubmit with a valid name. | info | No | 403 |
| DALP-0311 | Token {value} unindexed or outside owner scope. | The platform could not find the token in the indexed records for the current organization and system scope, either because the token is not yet indexed or belongs to a different system. | Confirm the token address is correct and that the indexer has processed the token's deployment. If it belongs to a different system, use the matching credentials. | info | No | 403 |
| DALP-0343 | Token {value} unindexed or outside owner scope. | The platform queried the indexer for the token by address and found no record scoped to the authenticated system. The token is either not yet indexed or belongs to a different system. | Verify the token address is correct and that it has been deployed and indexed under the authenticated system. Retry once the indexer has processed the token. | info | No | 403 |
| DALP-0353 | Delegated redemption requires custodian role. | The caller is attempting to redeem tokens on behalf of another address but does not hold the custodian role on this token. Only custodians may redeem on behalf of other holders. | Ask a token administrator to grant the custodian role to your address, or redeem only your own balance without specifying a different owner. | info | No | 403 |
| DALP-0357 | Provided system addon does not belong to the authenticated system. | The systemAddon filter address supplied in the request is not one of the token sale addon addresses registered under the authenticated system. | Use a systemAddon address from the list of addons returned by the system addons endpoint for the authenticated system. | info | No | 403 |
| DALP-0363 | Token sale does not belong to the authenticated system. | The token sale exists in the indexer but its parent addon address is not registered under the authenticated system. The sale was created by a different system. | Confirm you are authenticating with the correct system credentials and that the sale address belongs to that system. | info | No | 403 |
| DALP-0369 | This identity lacks approval authority for this token's transfer-approval module. Contact the token administrator to add authority. | The platform checked the TransferApprovalComplianceModule's configured approval authorities and the sender's identity address was not in that list. Only identities explicitly added as approval authorities can approve or revoke transfer approvals on this token. | Ask the token administrator to add your identity address to the TransferApprovalComplianceModule's approval authority list, then retry. | info | No | 403 |
| DALP-0373 | Missing required fields (owner, recipient, or amount) for forced transfer operation. | The platform expanded the forced-transfer item list but the first item was missing the owner address, recipient address, or amount. All three fields are required to encode a forcedTransfer contract call. | Ensure each forced-transfer item includes owner, recipient, and amount, then retry. | info | No | 403 |
| DALP-0511 | Webhook event not found. | The event does not exist or is not available to the current actor for recall. | Verify the event identifier and use an actor with webhook recall permissions. | info | No | 404 |
| DALP-0524 | Participant not found. | The requested participant cannot be selected by the authenticated session. | Remove the X-Participant header or retry with the authenticated participant id. | info | No | 404 |
| DALP-0603 | Caller wallet lacks the on-chain FEEDS_MANAGER_ROLE required to create currency feeds. | Adding a target currency requires the caller's wallet to hold FEEDS_MANAGER_ROLE on the system AccessManager so the workflow's IssuerSignedScalarFeedFactory.createFeed call does not revert; the indexed access-control state shows the wallet is not a current member of that role. | Have a system manager grant FEEDS_MANAGER_ROLE to this wallet on the system, then retry. The setting is not persisted until the dispatch succeeds. | info | No | 403 |
| DALP-0614 | Participants out of sync; account abstraction requires permission sync. | The requested platform setting change requires permissions to be synced before it can be persisted. | Ask an administrator to run Sync permissions for the listed participants, then retry. | info | No | 400 |
| DALP-0626 | Use POST /v2/tokens/:tokenAddress/price to submit price-topic feeds. | The generic feeds submit route is not role-gated for price administration; price-topic submissions must flow through token set-price so the token-level admin role check applies. | Call POST /v2/tokens/:tokenAddress/price with a caller holding the token setPrice role. | info | No | 403 |
| DALP-0636 | Account abstraction identity sync requires an administrator. | The requested platform setting change needs to bind existing OnchainIDs to smart wallets, and the caller does not hold every required identity-sync role on the effective executor. | Retry as an account that holds DEFAULT_ADMIN_ROLE and IDENTITY_MANAGER_ROLE on the active system. | info | No | 403 |
| DALP-0671 | Live actions feed requires Console origin. | The live actions feed carries browser session cookies, and the request origin did not match the Console origin accepted for live updates. | Refresh the Console and retry the actions view. API clients should call GET /v2/actions instead of the stream. | info | No | 403 |
| DALP-9075 | Cannot add members while organization onboarding is in progress. | The active organization has not yet completed onboarding. Member management is locked until deployment is finished. | Wait for the organization to complete onboarding before adding members. | info | No | 403 |
| DALP-9076 | Granting the owner role requires the caller to be an organization owner. | Only an existing organization owner can add a new member with the owner role. | Use an account that holds the organization owner role, or add the member with the member role instead. | info | No | 403 |
| DALP-9089 | This organization has reached its limit on pending invitations. | The number of invitations still awaiting a response in this organization sits at the configured ceiling, so no further invitation can be created. Any invitation that was still pending for this address was cancelled first and was not replaced. | Cancel or accept some of the outstanding invitations, then send this invitation again to restore the cancelled one. | info | No | 403 |
| DALP-9096 | This account cannot invite members to this organization. | The organization did not accept this invitation request from the acting account, so no invitation exists for the address. | Ask an organization owner to confirm that the acting account may invite members and that the organization is ready to take new members, then send the invitation again. Check the invitations list as well, because an invitation that was pending for this address may have been cancelled by this attempt and would need re-issuing. | info | No | 403 |
| DALP-9166 | The wallet must be registered in the token identity registry before delegating voting power. | Delegating voting power requires the acting wallet to hold an identity in the token's identity registry, and the selected wallet has no identity there. | Register the wallet's identity in the token identity registry, then retry the delegation. | info | No | 403 |
| DALP-9167 | Multi-network changes require an organization administrator. | Enabling multi-network support and adding networks are organization-admin operations; the calling session is neither a platform admin nor an organization owner. | Use an account that holds the organization owner role (or platform admin), then retry. | info | No | 403 |
| DALP-9168 | Multi-network support is not enabled for this organization. | Adding a network requires the organization's MULTI_NETWORK_ENABLED opt-in to be on; it is currently off. | Enable multi-network support in organization settings, then add the network. | info | No | 403 |
| DALP-9196 | This custody operation requires organization-owner access. | Changing custody credentials affects every wallet in the organization. | Retry as an organization owner or platform administrator. | info | No | 403 |
| DALP-9197 | This custody operation requires platform-administrator access. | The operation changes or destroys custody configuration across an organization. | Retry as a platform administrator. | info | No | 403 |
| DALP-9250 | You cannot read balances for this wallet. | The authenticated user cannot read balances for the requested wallet. | Request balances for an owned wallet or obtain user read permission in the active organization. | info | No | 403 |
| DALP-9256 | You cannot read this system. | The authenticated request context cannot read the selected system projection. | Use a participant with system-read permission in the active organization. | info | No | 403 |
| DALP-9315 | The custody provider blocked this Canton signature. | The organization's custody provider refused to sign the Canton digest, so the platform stopped the submission. | Resolve the custody provider policy denial, then submit a new Canton command. | info | No | 403 |
Domain rule errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0025 | The token contract at the provided address lacks the required interface. | The target token does not expose the interface required for this operation. | Use a compatible token contract or enable the required interface before retrying. | info | No | 422 |
| DALP-0026 | System not created. | The DALP system bootstrap has not completed for this environment or organization. | Create or finish deploying the system before calling this operation. | warning | No | 403 |
| DALP-0028 | The required feature is not enabled on this token. | The operation targets a token feature that is not attached or enabled. | Enable the required token feature or call an operation supported by this token. | info | No | 422 |
| DALP-0029 | This invitation was issued to a different email address. Ask your admin to send a new invitation. | The authenticated user's email does not match the invitation recipient. | Sign in with the invited email address or ask an admin to send a new invitation. | info | No | 403 |
| DALP-0030 | Invitation already accepted. | The invitation token has already been used successfully. | Continue to the dashboard or ask an admin for a new invitation if access is still missing. | info | No | 409 |
| DALP-0115 | Unexpected async result in a v1 route handler. | A v1 route handler received an async-accepted result from the transaction queue. V1 routes always execute in synchronous mode, so this result is a dispatch logic error on the platform side. | Contact support with the request id and the route name. This indicates a server-side bug and cannot be resolved by changing the request. | info | No | 409 |
| DALP-0123 | Account at address {identityAddress} does not have an associated identity contract. Only users with an identity can submit feed updates. | The authenticated participant does not have an on-chain identity contract registered in this system. Feed submissions require an identity so the platform can verify the participant as a trusted issuer. | Deploy an identity contract for the participant through the identity management flow, then retry the feed submission. | info | No | 409 |
| DALP-0152 | Cannot change baseAssetType of a published template. It determines instrument-specific detail fields for deployed assets. | Published templates lock the deployable asset path. Changing baseAssetType would change which instrument-specific fields apply to assets already created from this template. | Create a new template with the desired base asset type instead of changing a published one. | info | No | 409 |
| DALP-0153 | Cannot change typeId of a published template. | The template has already been published and its typeId is locked. Published templates cannot change typeId because doing so would alter the instrument type for assets already deployed from this template. | Create a new template with the desired typeId instead of modifying a published one. | info | No | 409 |
| DALP-0154 | Cannot clear assetClassId: typeId "{typeId}" is not a recognized factory type. | Setting assetClassId to null asks the platform to revert to the system-derived asset class for the template's base type, but the typeId value on this template does not map to any known factory type, so no system class can be resolved. | Supply a valid assetClassId explicitly instead of clearing it, or update the template's typeId to a recognized deployable asset type before clearing the class. | info | No | 409 |
| DALP-0155 | System asset classes cannot be deleted. | The requested asset class is a platform-provided system class. System classes are shared baselines and cannot be removed. | Delete only custom asset classes that your organization created. System classes remain available to all organizations and cannot be removed. | info | No | 409 |
| DALP-0156 | System asset classes cannot be modified. | The requested asset class is a platform-provided system class. Metadata fields such as name, slug, and description are read-only on system classes. | Create a custom asset class with the desired name and configuration. Visibility (isHidden) can still be toggled on any system class your organization can see. | info | No | 409 |
| DALP-0160 | System asset type templates cannot be deleted. | The requested asset type template is a platform-provided system template. System templates are shared baselines and cannot be removed. | Delete only custom asset type templates that your organization created. To hide a system template from your organization's view, set isHidden to true on the template. | info | No | 409 |
| DALP-0161 | System asset type templates cannot be modified. | The requested asset type template is a platform-provided system template. Fields such as name, description, typeId, and feature configuration are read-only on system templates. | Update only custom asset type templates that your organization created. The isHidden display preference can still be toggled on any system template your organization can see. | info | No | 409 |
| DALP-0162 | System asset type templates cannot be published. | The requested asset type template is a platform-provided system template. System templates are already active and their publication state cannot be changed. | Publish only custom draft asset type templates that your organization created. | info | No | 409 |
| DALP-0167 | System compliance templates cannot be deleted. | The requested compliance template is a platform-provided system template. System templates are shared baselines and cannot be removed. | Delete only custom compliance templates that your organization created. | info | No | 409 |
| DALP-0168 | System compliance templates cannot be modified. | The requested compliance template is a platform-provided system template. All fields on system compliance templates are read-only. | Modify only custom compliance templates that your organization created. To build on a system template's configuration, create a new custom compliance template. | info | No | 409 |
| DALP-0169 | System compliance templates cannot be published. | The requested compliance template is a platform-provided system template. System templates are already active and their publication state cannot be changed. | Publish only custom draft compliance templates that your organization created. | info | No | 409 |
| DALP-0199 | Organization has Account Abstraction disabled; cannot create a smart wallet as default. | Account Abstraction is disabled for this organization, so smart wallets cannot be set as the default executor. | Enable Account Abstraction for the organization, or create the smart wallet without setting it as default. | info | No | 409 |
| DALP-0200 | Organization has Account Abstraction disabled; cannot set a smart wallet as default. | Account Abstraction is disabled for this organization, so an existing smart wallet cannot be promoted to default. | Enable Account Abstraction for the organization, or update only the smart wallet metadata. | info | No | 409 |
| DALP-0204 | userOpHash does not match the preview built from the supplied callData and wallet state. Rebuild the preview and retry. | The platform rebuilt a UserOperation preview from the submitted callData and the current wallet state, and the computed hash did not match the userOpHash supplied in the request. The wallet nonce or state may have changed since the preview was created. | Fetch a fresh preview for the same callData, use the userOpHash returned by that preview, then submit the approval request again. | info | No | 409 |
| DALP-0228 | Addon factory receipt did not contain {factoryAddress}; cannot resolve deployed addon address. | The addon registration transaction was confirmed on-chain, but the transaction receipt logs did not include the expected SystemAddonRegistered event. Without that event the platform cannot determine the deployed addon proxy address. | Contact support with the request id. The deployment may have succeeded but the receipt log is missing expected event data. | info | No | 409 |
| DALP-0259 | The signing wallet does not hold a MANAGEMENT_KEY on identity {targetIdentityAddress}. Only wallets with management rights can revoke claims. | The platform checked the identity key registry and found no MANAGEMENT_KEY entry for the caller's signing wallet on the target identity. Claim revocation requires management rights on the identity. | Use a wallet that holds a MANAGEMENT_KEY on the target identity, or ask the identity owner to grant management rights before retrying. | info | No | 409 |
| DALP-0273 | Topic '{topic}' requires an approved KYC profile for the target identity. | The target identity has no approved KYC profile, which topic '{topic}' requires before its claim can be issued. | Have the participant complete their KYC and a reviewer approve it, then issue the '{topic}' claim. | info | No | 422 |
| DALP-0295 | Cannot revoke the last permission manager. At least one admin must remain on the token. | Revoking this role would remove all accounts from the token's admin set. The platform requires at least one admin to remain so the token's access control can be managed after the operation. | Grant the admin role to another account before revoking it from the last current admin, or choose a different account to revoke. | info | No | 409 |
| DALP-0305 | Account at address {identityAddress} does not have an associated identity contract. Only users with an identity can issue claims. | The authenticated participant has no on-chain identity contract registered with this system, which the claim-issue route requires to determine the issuer address. | Onboard the participant with an identity contract before issuing claims on their behalf. | info | No | 409 |
| DALP-0306 | Account at address {identityAddress} does not have an associated identity contract. Only users with an identity can revoke claims. | The authenticated participant has no on-chain identity contract registered with this system, which the claim-revoke route requires to determine the revoker address. | Onboard the participant with an identity contract before revoking claims on their behalf. | info | No | 409 |
| DALP-0345 | Account {identityAddress} has no identity contract. Onboard the user with an identity contract before setting token prices. | The authenticated participant does not have an on-chain identity contract registered in the system. Setting a token price requires the caller to hold a valid identity. | Complete the onboarding flow for the participant to create their identity contract, then retry the set-price request. | info | No | 409 |
| DALP-0388 | Cannot approve version with status "{value}". Approval requires a version under review. | The KYC profile version is not in the under_review state. The approval route reads the version with a row lock and checks its status before transitioning it to approved. | Submit a KYC version for review first (POST /v2/kyc-profile-versions/:versionId/submissions), then retry the approval once the version reaches under_review status. | info | No | 409 |
| DALP-0389 | Cannot fulfill request with status "{value}". Fulfillment requires an open request. | The KYC action request is not in the open state. The fulfill route checks the request status before marking it fulfilled, and the request has already been fulfilled or cancelled. | Verify the current status of the action request before retrying. Only open action requests can be fulfilled. | info | No | 409 |
| DALP-0390 | Cannot reject version with status "{value}". Rejection requires a version under review. | The KYC profile version is not in the under_review state. The rejection route reads the version with a row lock and checks its status before transitioning it to rejected. | Confirm the version is currently under_review before calling the rejection endpoint. A version that is already approved, rejected, or still a draft cannot be rejected. | info | No | 409 |
| DALP-0391 | Cannot submit version with status "{value}". Submission requires a draft version. | The KYC profile version is not in the draft state. The submit route reads the version with a row lock and checks its status before transitioning it to under_review. | Confirm the version status is draft before submitting. A version that is already under_review, approved, or rejected cannot be submitted again. | info | No | 409 |
| DALP-0392 | Cannot update version with status "{value}". Updates require a draft version. | The KYC profile version is not in the draft state. The update route reads the version with a row lock and rejects writes to any version that has already been submitted for review, approved, or rejected. | Create a new draft version to make further changes, or check whether the existing draft can be cloned from the approved version. | info | No | 409 |
| DALP-0394 | Document deletion requires a draft version. | The KYC profile version containing this document is not in the draft state. Documents can only be removed while the version is editable. | Documents attached to versions that are under review, approved, or rejected cannot be deleted. Create a new draft version if the documents need to change. | info | No | 409 |
| DALP-0395 | Document upload requires a draft version. | The KYC profile version targeted by this upload is not in the draft state. The upload route checks the version status after acquiring a row lock and rejects the operation for any non-draft version. | Create a new draft version before uploading documents, or confirm the version is still in draft status before retrying. | info | No | 409 |
| DALP-0414 | Only the owner of a request can fulfill it. | The authenticated participant's participantId does not match the participantId on the KYC version associated with this action request. The fulfill route enforces that only the subject of the KYC review can mark their own action request as fulfilled. | Authenticate as the participant who owns the KYC version linked to this action request, then retry. | info | No | 409 |
| DALP-0415 | Can only request updates for versions under review. | The KYC profile version is not in the under_review state. The request-update route checks the version status after acquiring a row lock and rejects the operation for any version that is not currently being reviewed. | Confirm the version is in under_review status before requesting an update. Submit the version for review first if it is still a draft. | info | No | 409 |
| DALP-0433 | Capital raise limit compliance module configuration is immutable. | The capital-raise-limit compliance module stores configuration that cannot be changed after the module instance has been installed. | Deploy a new capital-raise-limit module instance with the required parameters, then update token compliance to use that instance. | info | No | 409 |
| DALP-0457 | A migration is already in progress for this organization. | The migration workflow journal still has an active invocation for this organization. | Wait for the current migration to finish, then retry if another migration is still needed. | info | Yes | 409 |
| DALP-0461 | Trusted issuer claim-topic mutation is already in progress. | Another add/remove claim-topic mutation for this trusted issuer is already running. Platform API does not queue same-key callers behind the database lock because that can consume database pool sessions. | Wait for the active mutation to finish, then retry the claim-topic request if the issuer's topic set still needs to change. | warning | Yes | 409 |
| DALP-0462 | Compliance template modules and controls must match the selected module set. | The template contains configured modules or required controls from a different compliance module generation. | Remove the incompatible controls or create a template with the matching legacy/current module set. | info | No | 422 |
| DALP-0475 | Platform Account Abstraction routing is off; cannot create a smart wallet as default. | The platform-wide Account Abstraction feature flag is disabled, so smart wallets cannot be selected as default wallets for routed transactions. | Enable the platform Account Abstraction feature flag, or create the smart wallet without setting it as default. | info | No | 409 |
| DALP-0476 | Platform Account Abstraction routing is off; cannot set a smart wallet as default. | The platform-wide Account Abstraction feature flag is disabled, so smart wallets cannot be selected as default wallets for routed transactions. | Enable the platform Account Abstraction feature flag, or update only the smart wallet metadata. | info | No | 409 |
| DALP-0477 | Template requiredFeatures has unmet feature dependencies: conversion-minter requires conversion in the feature set. | conversion-minter declares dependsOn: ["conversion"] in the addon registry. Publishing a template with the minter but no conversion would produce a runtime-not accepted token (a minter with nothing to mint into). | Add the missing dependency to requiredFeatures (or remove the orphan dependent), then retry the publish or update request. | info | No | 409 |
| DALP-0490 | Compliance subject mapping was not found. | A compliance webhook referenced an external subject ID that has not been mapped to a DALP identity or wallet. | Create the subject through DALP before accepting provider webhooks for that external ID, or reconcile the event from the audit log. | info | No | 404 |
| DALP-0491 | Compliance provider is not accepting webhook events. | The webhook target is not currently available for compliance event intake. | Verify the provider configuration and resume the provider before sending more provider events. | info | No | 404 |
| DALP-0492 | Compliance provider is in a failed state. | The compliance provider failed provisioning or health checks and cannot process provider events. | Repair or reprovision the provider before retrying webhook processing. | info | No | 409 |
| DALP-0493 | Compliance provider event has no supported mapping. | The provider payload did not match a supported ClaimSource verdict or monitoring-alert shape and was persisted for audit. | Review the provider event type and update the adapter mapping before replaying the event. | info | No | 422 |
| DALP-0494 | Compliance provider event is older than the current subject state. | The event timestamp or sequence is behind the last applied event for the same provider, subject, and topic. | Do not replay stale provider events; inspect the audit event if the provider's ordering guarantees appear broken. | info | No | 409 |
| DALP-0498 | Compliance provider event topic does not match the provider configuration. | The webhook payload declared a claim topic that is not configured on the provider. | Add the topic to the provider, or correct the provider adapter topic mapping. | info | No | 400 |
| DALP-0499 | Wallet does not have an associated OnchainID identity. | A wallet-subject compliance provider event referenced a wallet that DALP could not resolve to an OnchainID identity. | Register the wallet to an OnchainID identity before creating or replaying the compliance subject mapping. | info | No | 404 |
| DALP-0500 | Compliance webhook signing secret rotation grace period expired. | The pending webhook signing secret expired before it was promoted to the active secret. | Start a new secret rotation and update the provider dashboard with the active webhook signing secret. | info | No | 410 |
| DALP-0509 | Webhook endpoint disabled. | The endpoint is disabled and cannot accept live, replay, or test deliveries until it is re-enabled. | Re-enable the endpoint after fixing the delivery failure cause, then retry. | info | No | 409 |
| DALP-0513 | Webhook endpoint limit reached. | The tenant has reached the maximum number of webhook endpoints allowed for this environment. | Delete an unused endpoint or contact support to raise the tenant endpoint limit. | info | No | 409 |
| DALP-0523 | Transaction fee rates frozen. | The token's transaction-fee rates have been permanently frozen on-chain. The mutation was rejected before reaching the queue. | Frozen rates cannot be modified. Update the fee recipient instead, or deploy a new token if different rates are needed. | info | No | 422 |
| DALP-0532 | Template requiredFeatures has mutually-exclusive features enabled together: transaction-fee and transaction-fee-accounting. Remove one feature from each pair before publishing. | Mutually-exclusive token features bind to the same on-chain or accounting path and would either double-account the same transfer or contradict each other. The registry models these pairs so the publish path can reject them before a token is created from the template. | Remove one feature from each conflicting pair in requiredFeatures, then retry the publish or update request. | info | No | 409 |
| DALP-0600 | Target currencies are permanent once enabled. | Removing a target currency would orphan its on-chain feed. Feeds can only be added. | Submit a value that is a strict superset of the existing target currencies. | info | No | 409 |
| DALP-0604 | Adding target currencies is not supported on this system. | The active chain has no FeedsDirectory wired up (V3-style deployment), so the workflow's IssuerSignedScalarFeedFactory.createFeed path that backs TARGET_CURRENCIES additions cannot execute. Persisting the addition would leave the setting reflecting a currency with no path to a feed. | Use a system deployed on a chain that supports FeedsDirectory, or remove the new currency from the requested TARGET_CURRENCIES value. | info | No | 422 |
| DALP-0605 | transaction-fee and transaction-fee-accounting conflict; enable only one per token. | Both features bind to the token transfer path and would account for the same transaction fee twice. | Remove one of the conflicting features from the template's requiredFeatures or featureConfigs. | info | No | 422 |
| DALP-0617 | Platform AA disabled; per-org AA requires platform AA enabled. | The organization setting requested Account Abstraction routing while the platform-wide Account Abstraction feature is disabled. | Keep AA_ENABLED disabled, or enable platform Account Abstraction before enabling the organization setting. | info | No | 403 |
| DALP-0637 | Account abstraction identity sync found a different smart-wallet OnchainID. | A participant's smart wallet is already registered to a different OnchainID than the participant's EOA. | Review the participant identity binding before enabling account abstraction. | info | No | 409 |
| DALP-0638 | Account abstraction identity sync found a different smart-wallet controller. | An existing smart-wallet row points at a controller that does not match the participant's current signing EOA. | Repair the participant wallet pairing before enabling account abstraction. | info | No | 409 |
| DALP-0652 | Account abstraction is permanent once enabled. | Account abstraction is a one-way door: once enabled for an organization it can no longer be turned off. | Account abstraction must stay enabled. No action is required; leave AA enabled. | info | No | 409 |
| DALP-0674 | The supplied custody credentials failed validation. | The credential probe against the custody provider failed: the payload was malformed, authentication was rejected, the probe timed out, or the credentials cannot reach the organization's pinned workspace. | Verify the credential values with your custody provider, confirm they belong to the organization's workspace, and try again. | info | No | 422 |
| DALP-0675 | Custody credentials were rotated too recently. | Credential rotation enforces a minimum interval between rotations so in-flight signing operations can drain on the previous credential version. | Wait for the indicated retry interval to elapse, then submit the rotation again. | info | Yes | 429 |
| DALP-0676 | No custody configuration exists for this organization. | The organization predates custody configuration records and the backfill has not created one yet. | Run the custody backfill migration for this deployment, or contact support with the request id. | info | No | 404 |
| DALP-0677 | This organization's custody configuration has been destroyed and cannot be modified. | An operator destroyed the organization's custody credentials; the record is retained as a tombstone and lifecycle writes against it are rejected to prevent silent resurrection with deleted credentials. | Re-onboard the organization's custody through the explicit re-onboarding path, or contact support with the request id. | info | No | 409 |
| DALP-0678 | The custody provider for this organization is locked and cannot be changed. | The organization's custody provider was locked when its first wallet was created; switching providers would orphan existing keys. | Keep the locked provider and supply replacement credentials for it instead of selecting a different provider. | info | No | 409 |
| DALP-0683 | No airdrop addon is deployed in this system. | Listing or reading airdrops needs at least one airdrop factory registered in the active system, and this system has none. | Deploy an airdrop addon for this system, then retry the request. | info | No | 404 |
| DALP-0685 | The requested airdrop belongs to another system. | The airdrop at this address was deployed under a different system than the active one, so this endpoint does not return it. | Read this airdrop from the system that owns it, or pick an airdrop deployed in the active system. | info | No | 404 |
| DALP-0686 | Template is not ready to publish. | The publish readiness check decoded the stored configuration for each selected feature and found at least one that does not match its expected shape; data.gaps names the specific features. | Open the Features step for each feature listed in data.gaps, fix its configuration, save the template, and retry publish. | info | No | 422 |
| DALP-0687 | Template is not ready to publish. | The publish readiness check found at least one required control with no configured module of that type on the template; data.gaps names the specific controls. | Open the Controls & Rules step for each control listed in data.gaps, configure a compatible module for it (or remove it from required controls), save the template, and retry publish. | info | No | 422 |
| DALP-9072 | Token at {tokenAddress} must expose readable ERC-20 symbol() and decimals() before registration. | External token registration requires ERC-20 metadata so denomination-quoted price feeds can resolve the asset after token creation. | Register a contract that implements ERC-20 metadata, or verify the address and network before retrying. | info | No | 422 |
| DALP-9073 | Denomination asset at {denominationAsset} must expose readable ERC-20 symbol() and decimals() before token creation. | Bond and maturity assets seed a denomination-quoted price feed that reads ERC-20 metadata on-chain after deploy. | Choose a denomination asset that implements ERC-20 metadata, or register the external token with valid ERC-20 metadata before creating the bond. | info | No | 422 |
| DALP-9095 | This person already belongs to this organization. | The organization already has an active member registered under this email address, so a second invitation would create a duplicate membership. | Open the existing member from the participants list to adjust their roles, or send the invitation to a different email address. | info | No | 409 |
| DALP-9175 | The selected template requires additional feature parameters before the token can be created. | The template marks these feature-config params required at deploy time, and the request left them unset or at zero, which the template treats as unset. | Provide a non-zero value for each listed param in the matching featureConfigs entry and resubmit the token creation request. | info | No | 422 |
| DALP-9176 | The selected template requires a conversion window that has not already ended. | The template marks the conversion window required at deploy time, and the requested window end is in the past. The instrument would be expired at creation and could never convert. | Set conversionWindowEnd to a future time in the featureConfigs.conversion entry and resubmit the token creation request. | info | No | 422 |
| DALP-9177 | This organization already has a member with this national ID. | The person accepting this invitation is KYC-approved with a national ID that a current member of this organization also holds. Adding them would leave two people sharing the same approved national ID in one organization and would break national-ID lookups for both. | Confirm whether the two records describe the same person. If they are different people, resolve which record should stay approved in this organization before the invitation is accepted. | info | No | 409 |
| DALP-9178 | A member of this organization is already KYC-approved with this national ID. | Within an organization an approved national ID can belong to only one person. Another member of this organization already holds an approved KYC record with the same national ID and country, so approving this one would leave the organization with two people sharing it and would break national-ID lookups for both. | Confirm whether the two records describe the same person. If they are different people from different countries, set the correct country on each record before approving. If they are the same person, resolve the existing record instead of approving a second one. | info | No | 409 |
| DALP-9184 | Pending participant registration not found. | No pending registration with this id exists in your organisation, or it has already been accepted or rejected. | List pending registrations to confirm the id and current status, then retry with a valid pending registration. | info | No | 404 |
| DALP-9187 | This user already has a wallet. | Each user can own only one primary platform wallet. | Use the existing wallet instead of creating another one. | info | No | 409 |
| DALP-9248 | The refund splitter is unavailable on this chain. | The organization has no active system on the requested chain, so its refund splitter cannot be addressed. | Deploy or re-enable the organization system on this chain, or select an active chain. | info | No | 503 |
| DALP-9249 | The refund splitter deployment is still pending. | The organization system deployment is still in progress, so its refund splitter is not addressable yet. | Wait for the chain system deployment to become active, then retry the request. | info | Yes | 409 |
| DALP-9254 | The requested system was not found. | No indexed system matches the requested address in the active request scope. | Use the configured system address or wait for its deployment to be indexed. | info | No | 404 |
| DALP-9290 | The conversion feature cannot resolve a usable interest provider. | The conversion feature discovers its interest provider through ERC-165. With both yield features attached it finds two, refuses to auto-select, and every interest-bearing conversion path fails closed after deployment. An explicit provider replaces that discovery, so it must itself be a deployed contract that answers ERC-165 for IConversionInterestProvider and reports the same denomination asset as the conversion. The conversion config is immutable and has no provider setter, so neither case is repairable after creation. | Set featureConfigs.conversion.interestProvider to a deployed interest provider that uses the conversion's denomination asset, or attach only one yield feature and leave the provider unset so discovery resolves it. | info | No | 422 |
| DALP-9291 | The MarkConverted debt method cannot be combined with a yield feature. | MarkConverted records a conversion without moving tokens, so it suits instruments whose token is a receipt and whose principal is held in a separate ledger. Yield features pay out on the token balance, which on such an instrument is not the amount owed. After a conversion it no longer reflects active principal either. | Pick the Burn or Lock debt method, which retire the converted principal and keep the balance accurate, or remove the yield feature from the design. | info | No | 422 |
| DALP-9313 | No Canton participant network is configured. | This deployment has no Canton participant network, so the platform cannot allocate a party or submit a DAML command. | Ask an operator to add a Canton network to the platform configuration, then retry. | info | No | 422 |
| DALP-9314 | The approved Canton command no longer applies. | The DAML command was approved, then the target contract or ledger state changed so the same command cannot settle. | Submit a new command. The existing approval is not reopened. | info | No | 409 |
| DALP-9317 | Canton party allocation failed. | The platform accepted the party create, then allocation stopped before the party was registered. | Inspect the allocation status, then retry with the same organization and participant. | error | No | 500 |
| DALP-9318 | Canton command submission failed. | The platform accepted the command, then submission stopped before the ledger settled it. | Inspect the submission status, then retry with the same submission id when the failure is retryable. | error | No | 500 |
| DALP-9319 | This custody provider cannot create Canton party wallets. | Canton party wallets require Ed25519 key generation and digest signing. The organization's custody provider does not offer that capability, and the platform does not substitute another provider. | Create the party wallet on an organization whose custody provider supports Canton signing. | info | No | 422 |
Operational errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0008 | Participant executor selection failed. | Platform API could not determine the effective participant executor for this request after checking the session, organization context, and request headers. | Retry with a valid active organization, X-Participant, and X-Executor header combination. If the problem continues, contact support with the request id. | error | No | 500 |
| DALP-0015 | System deployment failed. | The system deployment workflow reached a failed state before producing a usable system address. | Inspect the deployment status and retry after correcting the workflow failure. Include the request id when contacting support. | error | Yes | 503 |
| DALP-0016 | System deployment address was not available before the wait timed out. | The deployment workflow stayed active but did not publish the system address within the synchronous wait window. | Poll the deployment status or retry with an asynchronous preference instead of waiting for the address in the same request. | warning | Yes | 504 |
| DALP-0018 | Paymaster signer key rotation could not persist the signer secret. | The signer rotation transaction was confirmed, but the Platform API could not promote the new signer secret into the secrets provider. | Do not retry blindly. Check the pending signer secret state and rollback status, then recover or rerun the rotation with operator oversight. | fatal | No | 503 |
| DALP-0021 | Deployment workflow reported a terminal failure. | The deployment workflow ended with a Workflow Engine terminal error before the stream could read a typed failed workflow tree. | Open the deployment details or retry only after correcting the workflow failure. Include the request id when contacting support. | error | No | 503 |
| DALP-0031 | Transaction confirmation timeout. | The transaction was submitted but confirmation did not arrive before the timeout. | Check transaction status using the transaction hash and retry only if it was not confirmed. | warning | Yes | 504 |
| DALP-0033 | Database context required for this operation. | The route or middleware ran without databaseMiddleware even though it needs database access to validate permissions or load resources. | Contact support with the request id; this indicates a server middleware ordering issue. | error | No | 500 |
| DALP-0037 | Token context required for this operation. | A token-scoped route ran before token middleware attached the indexed token context. | Contact support with the request id; this indicates a server middleware ordering issue. | error | No | 500 |
| DALP-0038 | Token permission context is unavailable. | The route requires token permissions, but token middleware did not attach user permission state. | Contact support with the request id; this indicates a server middleware ordering issue or missing indexed permission data. | error | No | 500 |
| DALP-0086 | Event stream failed. | Platform API could not continue the event stream safely. | Reconnect to the stream. If failures continue, contact support with the request id. | error | Yes | 500 |
| DALP-0097 | Failed to load upserted contact. | The platform wrote the new contact record but the follow-up read returned no row. This is a transient database consistency gap rather than a validation problem. | Retry the request. If the error persists, contact support with the request ID. | error | No | 500 |
| DALP-0098 | Failed to upsert contact. | The platform attempted to insert the contact row but the database returned no record. This can occur when the insert is silently dropped by a constraint or database-level rule before a row is committed. | Retry the request. If the error persists, contact support with the request ID. | error | No | 500 |
| DALP-0102 | Multiple active claims found for topic {topicId} on identity {identityAddress}. | The platform found more than one non-revoked, non-expired claim for topic {topicId} on identity {identityAddress}. Only one active claim per topic per identity is expected; this state indicates a data consistency issue in the claim registry. | Contact support with the request id so the duplicate claims can be investigated and resolved. | error | No | 500 |
| DALP-0108 | Internal query builder produced no filter condition. | The platform's query builder returned no SQL condition when at least one was required. This indicates a route dispatch or configuration error, not a problem with the request data. | Contact support with the request id and route name so the underlying configuration issue can be diagnosed. | error | No | 500 |
| DALP-0110 | Feature "{featureName}" is not attached to this token. | The operation requires the {featureName} feature, but no attached feature of that type was found in the token's indexed configuration. | Attach the {featureName} feature to the token via the token configuration before calling this endpoint. | error | No | 500 |
| DALP-0118 | Failed to fetch exchange rates: {value}. | The platform could not retrieve exchange rate data from the configured rate source. The fetch attempt returned an error. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | No | 500 |
| DALP-0135 | Recovery for multisig/shared wallets is not yet supported. This will be available in a future release. | The target user's wallet is a multisig or shared wallet. The identity recovery flow currently supports only single-owner personal smart wallets. | Recovery for multisig and shared wallets is not yet available. Use a single-owner personal smart wallet or EOA for recovery at this time. | error | No | 500 |
| DALP-0139 | User does not have an identity contract deployed. Recovery is not possible without a deployed identity. Deploy an identity first via the identity management flow. | The platform queried the indexer for an identity contract on the user's wallet addresses and found none. Identity recovery requires an on-chain identity to exist before it can be recovered. | Deploy an identity contract for this user through the identity management flow before attempting recovery. | error | No | 500 |
| DALP-0157 | Failed to create asset class definition. Verify database connectivity and retry. | The database insert for the new asset class definition completed without returning a row. This typically indicates a transient database connectivity problem on the write path. | Retry the request. If the error persists, contact support with the request ID and the endpoint path. | error | No | 500 |
| DALP-0158 | Failed to create asset type template. Verify database connectivity and that the template name is unique. | The database insert for the new asset type template returned no row. Duplicate-name and slug-collision paths are handled separately, so this path fires when the write fails due to a connectivity or transient storage problem. | Retry the request. If the error persists, contact support with the request ID and the endpoint path. | error | No | 500 |
| DALP-0163 | typeId "{typeId}" is not a recognized factory type. | The typeId being set is not a deployable asset type, so the platform cannot derive baseAssetType automatically. This check runs when typeId is changed on a template and no explicit baseAssetType is supplied. | Supply a baseAssetType value alongside the typeId in the request body, or use a typeId that corresponds to a directly deployable asset type. | error | No | 500 |
| DALP-0165 | Failed to create compliance template. | The database insert for the new compliance template returned no row. Name-collision handling runs before this path, so this indicates a transient connectivity or storage failure on the write. | Retry the request. If the error persists, contact support with the request ID and the endpoint path. | error | No | 500 |
| DALP-0166 | Failed to update compliance template. | The database update for the compliance template returned no row. All ownership and system-template guards passed before the write, so this indicates a transient storage failure. | Retry the request. If the error persists, contact support with the request ID and the endpoint path. | error | No | 500 |
| DALP-0170 | Failed to upsert setting with key '{settingKey}'. | The platform persisted all prerequisite steps for this setting key but the final database write returned no row. For TARGET_CURRENCIES this occurs after feed dispatch; for AA_ENABLED after on-chain sync; for other keys on the direct write path. | Retry the request. If the error persists, contact support with the request ID, the setting key, and the endpoint path. | error | No | 500 |
| DALP-0176 | No MultisigWeightedValidator on this wallet. Install one before changing the threshold. | The wallet has no installed MultisigWeightedValidator module, so threshold changes cannot be applied. | Install a MultisigWeightedValidator on the wallet, then retry the threshold change. | error | No | 500 |
| DALP-0178 | No MultisigWeightedValidator on this wallet. Install one before creating approvals. | The wallet has no installed MultisigWeightedValidator module, so approval creation is unavailable. | Install a MultisigWeightedValidator on the wallet, then retry approval creation. | error | No | 500 |
| DALP-0180 | No MultisigWeightedValidator on this wallet. | The wallet has no installed MultisigWeightedValidator module, so approval signing cannot proceed. | Install a MultisigWeightedValidator on the wallet, then retry signing the approval. | error | No | 500 |
| DALP-0185 | Approval workflow completed without enough data to build the response. Retry the request. | The approval workflow finished without the fields needed to assemble the API response. | Retry the request. If it continues, contact support with the request id and approval id. | error | No | 500 |
| DALP-0187 | callData needs to be a 0x-prefixed hex string. | The smart-wallet preview request included callData that is not valid hex. | Send callData as a 0x-prefixed hex string from the contract call you intend to execute. | error | No | 500 |
| DALP-0203 | Provided systemAddress does not match the wallet's system. | The optional systemAddress query parameter does not match the wallet's indexed system address. | Omit systemAddress to use the wallet's own system, or pass the wallet's indexed system address. | error | No | 500 |
| DALP-0206 | Smart wallet metadata update succeeded, but the wallet record failed to reload. | The metadata write completed, but a follow-up read did not return the updated wallet row. | Refresh the wallet list after a short backoff. If the metadata is still missing, contact support with the request id. | error | No | 500 |
| DALP-0221 | Activity event has no resolvable sender address. | The platform found an event record in the activity log where all three sender fields (senderAddress, accountAddress, and contractAddress) are null. The activity list cannot build a response item without a sender address. | Contact support with the request id. This indicates an indexer event record is missing expected address data. | error | No | 500 |
| DALP-0226 | Addon factory deployment failed. | The platform could not complete the on-chain addon registration. This can happen when the system access manager is unavailable, the addon type is unsupported for the encoding step, or the system's addon registry predates instance-implementation wiring and cannot install factory-kind addons. | Check that the system is fully bootstrapped and the addon registry is up to date. Contact support with the request id if the problem persists. | error | No | 500 |
| DALP-0233 | PriceResolver prerequisites were not resolved before batch addon deployment. | The PriceResolver addon was included in a batch deployment request, but the required FeedsDirectory address and price topic ID were not pre-fetched before the deployment loop started. The platform requires these values to initialize the resolver correctly. | Ensure the system has a deployed FeedsDirectory and that the indexer has recorded it before requesting a PriceResolver addon deployment. | error | No | 500 |
| DALP-0240 | Topic creation requires request headers for queue execution. | The topic create route delegates the on-chain transaction to the transaction queue, which requires HTTP request headers to build the idempotency key. The headers were absent from the request context. | Contact support with the request id. This indicates the route was invoked without standard HTTP request headers, which is a server configuration problem. | error | No | 500 |
| DALP-0241 | Topic deletion requires request headers for queue execution. | The topic delete route delegates the on-chain transaction to the transaction queue, which requires HTTP request headers to build the idempotency key. The headers were absent from the request context. | Contact support with the request id. This indicates the route was invoked without standard HTTP request headers, which is a server configuration problem. | error | No | 500 |
| DALP-0243 | Topic update requires request headers for queue execution. | The topic update route delegates the on-chain transaction to the transaction queue, which requires HTTP request headers to build the idempotency key. The headers were absent from the request context. | Contact support with the request id. This indicates the route was invoked without standard HTTP request headers, which is a server configuration problem. | error | No | 500 |
| DALP-0244 | cachedResult must be set by startWorkflow; this is a bug in the queue bridge. | An internal queue bridge function expected cachedResult to be populated by the startWorkflow callback before reading it, but the value was absent. This is a platform-level programming error, not a problem with the request. | Contact support with the request id and the route name. This error indicates a defect in the platform's transaction queue bridge. | error | No | 500 |
| DALP-0248 | Compliance module uninstall failed. | The platform located the compliance module and resolved its instance address, but the on-chain binding lookup returned an unexpected state (module not found or multiple bindings) that prevents uninstall from proceeding. | Verify the module is in an active or disabled binding state on-chain. If the problem continues, contact support with the request id. | error | No | 500 |
| DALP-0249 | Directory read failed. | The platform attempted to read the on-chain directory but no directory contract address is configured for the active network. This indicates a server-side configuration gap rather than a caller error. | Contact support with the request id; the platform needs the directory contract address configured for this network before the operation can proceed. | error | No | 500 |
| DALP-0252 | cachedResult must be set by startWorkflow, this is a bug in the queue bridge. | The platform's internal workflow bridge reached the result-read step without a cached workflow result, which means the workflow start step did not complete as expected. This is an internal platform error, not a caller error. | Retry the operation. If the problem persists, contact support with the request id and the operation name. | error | No | 500 |
| DALP-0253 | cachedResult with receipt must be set by startWorkflow, this is a bug in the queue bridge. | The platform's identity creation workflow returned without a transaction receipt in the cached result, which means the queue bridge did not complete the workflow start step correctly. This is an internal platform error. | Retry the operation. If the problem persists, contact support with the request id and the operation name. | error | No | 500 |
| DALP-0254 | Claim issue failed. | The platform validated the claim topic and data but the claim value failed an auto-claim business rule check specific to the topic type. For example, a boolean auto-claim topic rejected the supplied value. | Review the claim data for the topic named in the request and correct the value to satisfy the topic's validation rules before retrying. | error | No | 500 |
| DALP-0255 | System context missing; needed to validate knowYourCustomer claim values. | The platform's claim issue route reached the knowYourCustomer claim validation step but the system context was not loaded by the middleware chain. This is an internal server configuration error. | Contact support with the request id; the route is missing the system middleware required for this claim topic. | error | No | 500 |
| DALP-0257 | Database context missing; needed to validate knowYourCustomer claim values. | The platform's claim issue route reached the knowYourCustomer claim validation step but the database context was not available. This is an internal server configuration error. | Contact support with the request id; the route is missing the database middleware required for this claim topic. | error | No | 500 |
| DALP-0262 | Multiple active claims found for topic {topicId} on identity {identityAddress}. | The platform found more than one active, non-revoked claim for the same topic on this identity contract. Each topic should have at most one active claim, so this state indicates a data integrity issue the platform cannot resolve automatically. | Contact support with the request id and the identity address. The platform team will audit the duplicate claims and restore the expected single-claim state for this topic. | error | No | 500 |
| DALP-0271 | Topic {topicId} claim value must match the approved KYC content hash. | The platform validated the knowYourCustomer claim value against the participant's approved KYC profile and found a mismatch. The submitted claim value does not equal the content hash stored for the approved KYC version. | Retrieve the approved KYC content hash for the target participant and resubmit the claim with that exact value. Contact support with the request id if the approved hash is unclear. | error | No | 500 |
| DALP-0274 | Topic {topicId} requires a single claim value, not an array or structured data. | The platform validated the knowYourCustomer claim payload and found that the value is not a plain string. This topic accepts only a single scalar string value as the claim data. | Resubmit the claim with a single string value in claim.data.claim instead of an array or object. | error | No | 500 |
| DALP-0303 | Token burn failed unexpectedly. | The burn handler encountered an unclassified failure before the transaction could be queued. This path is reached when neither a paused-token nor an insufficient-balance condition accounts for the failure. | Retry the request. If the error persists, contact support with the request id and the token address. | error | No | 500 |
| DALP-0304 | Token {tokenAddress} paused; burn requires unpausing first. | The platform checked the indexed token state before encoding the burn calldata and found the token is currently paused on chain. Burn calls revert on paused tokens, so the request was stopped before submission. | Unpause the token using the token unpause endpoint, then resubmit the burn request. | error | No | 500 |
| DALP-0307 | Database context missing for 'assetClassification' claim. Configure database middleware for this route. | The assetClassification topic requires a database lookup to resolve the on-chain asset class slug, but the database middleware was not active for this request path. | Contact support with the request id; this indicates a server configuration problem with the route's middleware chain. | error | No | 500 |
| DALP-0308 | Token '{tokenAddress}' does not have an associated identity contract. | The platform could not find an OnchainID identity contract linked to this token. Claim operations require the token to have a deployed identity before claims can be issued or revoked. | Ensure the token was created with an identity contract attached. Contact support if the token was created correctly but the identity is not showing. | error | No | 500 |
| DALP-0312 | Token creation workflow failed: {error}. | The token creation process reached a terminal failure before the platform produced a token. The failure reason is included in {error} and was not caused by an on-chain revert. | Inspect the {error} detail for the specific cause. If the issue persists, contact support with the request id. | error | No | 500 |
| DALP-0313 | Database context required for token creation. | The token creation route requires database access to look up signing session and template data, but the database middleware was not active for this request. | Contact support with the request id; this indicates a server configuration problem with the route's middleware chain. | error | No | 500 |
| DALP-0315 | Token creation workflow failed during phase execution. | The durable token-creation workflow reported a failed phase before producing a result; data.phase and data.error carry the on-chain or workflow-side failure reason. | Inspect data.error for the underlying revert or workflow message. Retry only if the cause is transient; otherwise surface the workflow error to the user. | error | No | 500 |
| DALP-0318 | User with address {address} does not have an associated identity contract. | The authenticated participant does not have a deployed OnchainID identity on this system. Token creation requires the creating user to hold an identity so it can be recorded as the instrument owner. | Onboard the participant through the identity creation endpoint before attempting token creation. | error | No | 500 |
| DALP-0320 | Access denied to restricted document. | The requested document has restricted visibility. The platform checked the caller's token roles and found neither a governance nor an admin role on this token. | Use credentials for an account that holds a governance or admin role on this token, or request that an administrator share a non-restricted copy of the document. | error | No | 500 |
| DALP-0321 | Declared file size does not match actual file size in storage. | After the upload completed, the platform retrieved the stored object and found its byte length differs from the fileSize value supplied in the confirm-upload request. The orphaned object was removed from storage. | Re-upload the file and submit a confirm-upload request with the exact byte length of the file as reported by your file system. | error | No | 500 |
| DALP-0325 | Failed to create document record. | The platform inserted the document metadata into the database but the insert returned no row, indicating a persistence failure. The orphaned object was removed from storage to avoid an inconsistent state. | Retry the confirm-upload request. If the error recurs, contact support with the request id and the object key. | error | No | 500 |
| DALP-0329 | Token feature context is missing. | A route that requires token feature data ran without the feature-loading middleware having populated that context. This indicates a server-side configuration problem. | Contact support with the request ID. This error points to a middleware ordering issue that requires a server-side correction. | error | No | 500 |
| DALP-0335 | The indexed base price feed for token {tokenAddress} is stale under the active PriceResolver policy. | The platform found a base-price feed for this token, but the feed's last observed timestamp exceeds the maximum staleness window configured in the active PriceResolver policy. A stale feed is treated as absent to prevent serving outdated prices. | Ensure the price-feed provider is submitting updates within the policy's staleness window, then retry once a fresh observation is indexed. | error | No | 500 |
| DALP-0336 | Indexed PriceResolver registration did not decode to initialize(). | The platform decoded the indexed PriceResolver registration calldata and found it does not call initialize(). The registration event is malformed or references an incompatible contract version. | Verify that the PriceResolver addon was deployed and registered through the standard platform deployment flow. Contact support if the addon was deployed correctly. | error | No | 500 |
| DALP-0337 | Indexed PriceResolver registration is missing expected initialization arguments. | The platform decoded the initialize() calldata from the indexed PriceResolver registration but could not extract the feeds directory address from the expected argument position. The registration event is incomplete. | Verify that the PriceResolver addon was deployed with the correct initialization arguments. Contact support if the deployment appears correct. | error | No | 500 |
| DALP-0342 | Token {tokenAddress} paused; mint requires unpausing first. | The platform checked the indexed token state before encoding the mint calldata and found the token is currently paused on chain. Mint calls revert on paused tokens, so the request was stopped before submission. | Unpause the token using the token unpause endpoint, then resubmit the mint request. | error | No | 500 |
| DALP-0346 | Price feed system is not installed; ask an administrator to install it before setting a price. | Setting a token price routes through the price feed system, and this organization has no price feed system deployed yet. | Ask an administrator to install the price feed system for this organization, then set the price again. | error | No | 500 |
| DALP-0348 | No base-price feed found for token {tokenAddress}. | The platform queried the indexed PriceResolver configuration and all available feed sources but could not locate a valid base-price feed for this token. Without a base price, currency conversion cannot proceed. | Register a base-price feed for the token in the configured feeds directory, then retry. | error | No | 500 |
| DALP-0349 | Token readback retry loop terminated unexpectedly. | After a mutation was submitted, the platform polled the token read endpoint to confirm the updated state was indexed. All retry attempts were exhausted without the token becoming available. | Retry the original mutation request. If the token state is visible in the API after a short wait, the mutation succeeded and only the readback confirmation failed. | error | No | 500 |
| DALP-0350 | This bond has a maturity-redemption feature attached; legacy top-up would not fund the configured treasury. Use the maturity-treasury top-up endpoint instead. | The bond has an active maturity-redemption feature. Redemptions for such bonds draw from the treasury address resolved by that feature, not from the bond contract balance. Transferring to the bond contract via this endpoint would not reach the redemption pool. | Use the maturity-treasury top-up endpoint to fund redemptions for this bond. | error | No | 500 |
| DALP-0352 | Token context initialization required. | The redeem handler started but the token context was not populated, which means the token middleware did not run before the handler was reached. The redemption cannot proceed without knowing the token's current state. | Retry the request through the standard API path. If the error recurs, contact support with the request id and token address. | error | No | 500 |
| DALP-0358 | Token sale deployment indexed ambiguously for transaction {transactionHash}. Multiple token sales matched the confirmed deployment transaction. | The createTokenSale transaction confirmed on-chain, but the platform found more than one token sale record in the index that matches the same transaction hash. This is a platform-side data inconsistency and cannot be resolved by retrying the same request. | Contact support and provide the request id, the transaction hash {transactionHash}, and the token address. The support team will reconcile the duplicate index entries and confirm the correct sale address. | error | No | 500 |
| DALP-0365 | Transfer approval module has no approval authorities configured. | The TransferApprovalComplianceModule attached to this token returned an empty list of approval authorities. The platform requires at least one authority to be registered before approvals or revocations can proceed. | Contact the token administrator to add at least one approval authority to the TransferApprovalComplianceModule for this token, then retry the operation. | error | No | 500 |
| DALP-0366 | Batch transferFrom is not supported. Use individual transferFrom operations instead. | The request included multiple transfer items with transferType set to transferFrom. The platform supports batch transfers only for the standard transfer type; transferFrom must be submitted one operation at a time. | Split the batch into individual transferFrom requests, one per sender-recipient pair, and submit them separately. | error | No | 500 |
| DALP-0367 | Provide both fromIdentityAddress and toIdentityAddress or neither; partial overrides unsupported. | The request supplied only one of the two optional identity override fields. The platform treats fromIdentityAddress and toIdentityAddress as an all-or-nothing pair; providing just one creates an ambiguous identity resolution. | Either include both fromIdentityAddress and toIdentityAddress in the request body, or omit both and let the platform resolve identities from the wallet addresses. | error | No | 500 |
| DALP-0375 | Token {tokenAddress} paused; transfer requires unpausing first. | The token at {tokenAddress} is currently paused on-chain. The platform blocks all transfers while a token is in the paused state. | Unpause the token using the token pause management endpoint, then resubmit the transfer. | error | No | 500 |
| DALP-0381 | Transaction {transactionHash} is already in terminal state {transactionHash}. Cannot force-fail a completed, failed, dead-lettered, or cancelled transaction. | The platform looked up transaction {transactionHash} and found it is already in a terminal state (COMPLETED, FAILED, DEAD_LETTER, or CANCELLED). Force-fail applies only to transactions still in progress. | Check the current transaction state before retrying. If a reset is needed, contact support with the transaction id. | error | No | 500 |
| DALP-0386 | Transaction {transactionHash} is in state {transactionHash} and cannot be force-retried. | Force-retry is available only for transactions in FAILED or DEAD_LETTER state. The transaction is currently in a different state, or its state changed between the check and the update. | Check the current transaction state via GET /v2/transaction-requests/:transactionId/status. Submit the force-retry request only when the state is FAILED or DEAD_LETTER. | error | No | 500 |
| DALP-0396 | Failed to approve KYC version. | The platform completed the state-transition check but the database write to mark the version as approved returned no result. This is an internal storage error, not a problem with the version data. | Wait a moment and retry the approval request. If the error persists, contact support with the request ID and the version ID. | error | No | 500 |
| DALP-0397 | Failed to create KYC update request. | The platform updated the version's review outcome to changes_requested but the follow-up write to record the update request returned no result. The version state was partially updated before the failure. | Retry the request-update call. If the error persists, contact support with the request ID and the version ID. | error | No | 500 |
| DALP-0398 | Failed to create document record. | The file was uploaded to object storage successfully, but the platform could not write the document metadata record to complete the upload confirmation. The orphaned file in storage is cleaned up automatically. | Re-upload the document and retry the confirm-upload call. If the error persists, contact support with the request ID and the version ID. | error | No | 500 |
| DALP-0399 | Failed to initialize KYC profile container. | The platform attempted to create or load the KYC profile container for this user but could not retrieve the profile record after the upsert. This is an internal storage error. | Retry the request. If the error persists, contact support with the request ID and the user ID. | error | No | 500 |
| DALP-0400 | Failed to load KYC profile record. | The platform inserted or confirmed the KYC profile container but could not retrieve the locked profile row needed to proceed with version creation. This is an internal storage error. | Escalate with the request ID and the user ID. Do not retry the same call. | error | No | 500 |
| DALP-0401 | Failed to create KYC draft version. | The platform attempted to insert a new draft version record but the write returned no result. The profile container exists and version data was prepared; only the final version insert failed. | Escalate with the request ID and the user ID. Do not retry the same call. | error | No | 500 |
| DALP-0402 | Failed to create KYC draft version during upsert. | The platform determined that the user's latest KYC version is not a draft and tried to create a new draft, but the insert returned no result. Existing version data is unchanged. | Retry the upsert request. If the error persists, contact support with the request ID and the user ID. | error | No | 500 |
| DALP-0403 | Failed to reject KYC version. | The platform completed the state-transition check but the database write to mark the version as rejected returned no result. This is an internal storage error, not a problem with the version data. | Wait a moment and retry the rejection request. If the error persists, contact support with the request ID and the version ID. | error | No | 500 |
| DALP-0404 | Failed to mark KYC update request as fulfilled. | The platform verified the update request is open and belongs to the authenticated user but the write to set it as fulfilled returned no result. The request status is unchanged. | Retry the fulfill request. If the error persists, contact support with the request ID. | error | No | 500 |
| DALP-0405 | Failed to update KYC draft version. | The platform detected changed field values and attempted to update the existing draft version in-place, but the write returned no result. The draft content is unchanged. | Retry the upsert request with the same data. If the error persists, contact support with the request ID and the user ID. | error | No | 500 |
| DALP-0406 | Failed to link new KYC version to profile. | The platform created a new draft version record but the subsequent write to record it as the profile's latest version returned no result. The new version exists but is not yet linked to the profile. | Retry the upsert request. If the error persists, contact support with the request ID and the user ID. | error | No | 500 |
| DALP-0407 | Failed to update KYC version status. | The platform validated the requested state transition but the database write to update the version record returned no result. This can happen during a submit-for-review or a changes-requested step. | Escalate with the request ID and the version ID. Do not retry the same call. | error | No | 500 |
| DALP-0408 | Failed to save KYC version field updates. | The platform confirmed the version is a draft and prepared the field changes, but the database write to apply them returned no result. No fields were modified. | Escalate with the request ID and the version ID. Do not retry the same call. | error | No | 500 |
| DALP-0422 | KYC version no longer a draft; document not saved. | The KYC version was submitted for review between the time the file was uploaded and the time the upload confirmation arrived. The platform requires the version to be in draft status to accept new documents, so the uploaded file was removed from storage. | Check the current version status. If it is under review, no further document uploads are possible for this version. Start a new draft version if additional documents are needed. | error | No | 500 |
| DALP-0635 | Gas requirement computation failed for this chain. | The chain is missing a gas-pause profile, has an undefined operations budget, or its pending base fee fell below the configured floor. | Reach out to support with the request id; this is a server-side configuration issue and is not user-correctable. | error | No | 503 |
| DALP-0672 | The user and wallet were created, but identity registration did not finish. | Creating a user runs in two steps. The first step created the user and wallet, and the second step that registers the on-chain identity did not finish before the request ended. | Send the same create request again with the same organization and email. The platform reuses the existing user and wallet and resumes identity registration. | warning | Yes | 409 |
| DALP-0673 | Custody credentials for this organization are unavailable. | The organization's custody record, secret slot, or provider configuration is missing or unreadable, and custody operations fail closed rather than substituting another provider. | Contact support with the request id so an operator can restore the organization's custody configuration. | error | No | 500 |
| DALP-9080 | Convert is settling this holder's accrued-interest backlog to target tokens; re-submit to finish the conversion. | A full convert with closeInterestOnConversion settles convertible interest in bounded windows (104 periods each). This holder's backlog needs more windows than one request drains, or a drain batch was queued asynchronously, so the final convert was withheld to avoid an UnsettledConvertibleInterest revert. | Re-submit the same convert request. Each attempt drains further batches from the durable on-chain cursor; the conversion completes once the backlog is fully settled. | error | Yes | 409 |
| DALP-9161 | Created proposal was not indexed in time. | The propose transaction settled but the Ledger Index did not surface the proposal row within the retry budget. | Retry the read shortly; the proposal appears once indexing catches up. | error | Yes | 500 |
| DALP-9195 | Another custody operation is still in progress. | The platform could not acquire the organization's custody rotation lock before the wait window ended. | Wait for the active custody operation to finish, then retry the rotation. | error | Yes | 503 |
| DALP-9246 | Account abstraction is not configured for this organization. | A required organization account-abstraction setting is missing or incomplete. | Configure the required system account-abstraction address setting for this organization. | info | No | 503 |
| DALP-9258 | The system configuration cannot be used for this read. | The active organization system configuration cannot be used for this read. | Repair the organization system and wallet configuration, then retry. | info | No | 503 |
| DALP-9293 | The network change was saved but is not active in this process yet. | The registry write committed, but this process could not reload the updated network catalog. | Read the network again before retrying. The saved change converges on the next successful catalog reload. | error | No | 503 |
| DALP-9310 | Participant creation is temporarily unavailable. | The selected system's identity infrastructure is not ready for participant creation. | Finish system bootstrap, wait for the identity infrastructure to be indexed, then retry with the same Idempotency-Key. | error | Yes | 503 |
Dependency errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0010 | System indexer context unavailable. | Platform API could not build the system context from indexed system registry data. | Retry after the indexer catches up. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0011 | Transaction queue operation failed. | Platform API could not complete a transaction queue operation outside the known contract-error and Workflow Engine error mappings. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0012 | Transaction provider read failed. | The configured chain RPC provider could not read transaction state for this request. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0013 | Smart wallet approval submission failed. | Platform API could not preview, sign, or submit the smart-wallet approval workflow after reserving the account-abstraction nonce. | Retry after a short backoff. The nonce reservation is released best-effort and stale reservations expire automatically. | error | Yes | 503 |
| DALP-0014 | Workflow Engine admin query failed. | Platform API could not query the Workflow Engine admin plane to determine whether an organization deployment workflow is active. | Retry after a short backoff. If deployment state still cannot be checked, contact support with the request id. | error | Yes | 503 |
| DALP-0017 | System directory is missing the system factory address. | Platform API could not resolve a system factory contract address from the request or directory service before starting deployment. | Retry after the system directory has been configured, or pass an explicit system factory contract address. | error | Yes | 503 |
| DALP-0019 | Indexer count value could not convert safely. | An indexer aggregate count could not be converted into a non-negative JavaScript safe integer for the API response. | Retry after the indexer data has been corrected or reindexed. If it continues, contact support with the request id and affected stats endpoint. | error | Yes | 503 |
| DALP-0020 | Deployment stream polling failed. | The deployment event stream could not read the latest workflow status from the Workflow Engine. | Reconnect to the stream or poll deployment status after a short backoff. If it continues, contact support with the request id. | error | Yes | 503 |
| DALP-0039 | System is not bootstrapped in the indexer yet. | The system exists or is being created, but indexed registry children required by this operation are not available yet. | Retry after the indexer catches up. If the system was never deployed, deploy it first. | info | Yes | 404 |
| DALP-0041 | System access control context is unavailable. | The system was indexed without the access-control state required to evaluate the caller's roles. | Retry after indexing catches up. If the problem continues, contact support with the request id. | error | Yes | 500 |
| DALP-0042 | Trusted issuer context is unavailable. | The route could not load indexed trusted-issuer context for the active system. | Retry after indexing catches up. If the problem continues, contact support with the request id. | error | Yes | 500 |
| DALP-0045 | Ledger Index reindex admin is unreachable. | Platform API could not contact the Ledger Index Indexing Pipeline service that starts blockchain reindex jobs. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0047 | Ledger Index reindex admin is unavailable. | The Ledger Index reindex admin accepted the request path but reported that reindexing cannot be started now. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0056 | Could not prepare the prior deployment for retry. | Platform API could not safely inspect or purge the previous Workflow Engine workflow before submitting a retry. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0058 | System factory address is missing from the directory. | The system directory did not return the factory address required to start deployment. | Retry after directory configuration has propagated. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0073 | XvP settlement message signing failed. | The wallet signing service failed while signing the XvP settlement message. | Retry after a short backoff. If signing continues to fail, contact support with the request id. | error | Yes | 503 |
| DALP-0075 | Denomination asset metadata pending indexing. | The fixed-yield schedule references a denomination asset whose metadata is not available in the indexer. | Retry after indexing catches up. | error | Yes | 503 |
| DALP-0076 | Denomination asset pending indexing. | The fixed-yield operation needs the denomination asset row, but the indexer has not exposed it yet. | Retry after indexing catches up. | error | Yes | 503 |
| DALP-0079 | Yield schedule deployment pending indexing. | The fixed-yield deployment transaction completed but the created schedule is not visible in the indexer yet. | Retry after indexing catches up. | error | Yes | 503 |
| DALP-0082 | Service temporarily unavailable. | A required backend service is temporarily unavailable. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0083 | Indexer data temporarily incomplete. | Platform API is reading from an indexer schema that is still rolling out or reindexing. | Retry after the indexer rollout completes. If the problem continues, contact support with the request id. | warning | Yes | 503 |
| DALP-0092 | Auth user query unavailable. | The platform could not resolve an active organization from the authenticated session. This is required for user administration operations. | Include a valid X-Organization header that matches an organization the authenticated user belongs to, then retry. | error | Yes | 503 |
| DALP-0093 | Active organization required to execute identity recovery. | The identity recovery execute route requires an active organization context from the session. The X-Organization header was absent or did not resolve to a known organization. | Set the X-Organization header to a valid organization identifier and retry the request. | error | Yes | 503 |
| DALP-0094 | Active organization required to preview identity recovery. | The identity recovery preview route requires an active organization context from the session. The X-Organization header was absent or did not resolve to a known organization. | Set the X-Organization header to a valid organization identifier and retry the request. | error | Yes | 503 |
| DALP-0111 | Database connection not available. Check server configuration. | The transaction queue helper started without a database connection attached to the request context. This happens when the route's middleware chain did not attach a database session before calling the queue. | Contact support with the request id. This indicates a server configuration issue, not a problem with the request itself. | error | Yes | 503 |
| DALP-0113 | Transaction processing service not available. Check server configuration. | The transaction queue helper started without a workflow engine client attached to the request context. The platform requires this client to submit and track on-chain transactions. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0129 | No feed registered for subject {topicId} and topicId {feedAddress}. Check that a feed exists and the indexer has caught up. | The platform could not find an active feed for the given subject and topic identifier in the system index. The feed may not have been registered, or the indexer has not yet processed its registration. | Confirm the feed has been registered for the subject and topic, then retry after the indexer catches up. Contact support with the request ID if the problem persists. | error | Yes | 503 |
| DALP-0133 | Transaction hash format wasn't accepted: "{transactionHash}". Expected 0x-prefixed hex string from the Workflow Engine. | The workflow engine returned a transaction hash that is not a valid 0x-prefixed hexadecimal string. This indicates an internal state issue in the feed submission workflow. | Retry the feed submission. If the error persists, contact support with the request ID and the transaction hash value shown in the message. | error | Yes | 503 |
| DALP-0142 | kycActionRequests query not available. Register the KYC schema to enable this query. | The route handler reached a KYC action-requests query that is unavailable because the KYC database schema was not registered for this route context. This is a server configuration issue. | Contact support with the request ID. This indicates a route or middleware composition problem that requires a platform fix. | error | Yes | 503 |
| DALP-0143 | kycDocuments query not available. Register the KYC schema to enable this query. | The route handler reached a KYC documents query that is unavailable because the KYC database schema was not registered for this route context. This is a server configuration issue. | Contact support with the request ID. This indicates a route or middleware composition problem that requires a platform fix. | error | Yes | 503 |
| DALP-0144 | kycProfiles query not available. Register the KYC schema to enable this query. | The route handler reached a KYC profiles query that is unavailable because the KYC database schema was not registered for this route context. This is a server configuration issue. | Contact support with the request ID. This indicates a route or middleware composition problem that requires a platform fix. | error | Yes | 503 |
| DALP-0145 | kycVersions query not available. Register the KYC schema to enable this query. | The route handler reached a KYC versions query that is unavailable because the KYC database schema was not registered for this route context. This is a server configuration issue. | Contact support with the request ID. This indicates a route or middleware composition problem that requires a platform fix. | error | Yes | 503 |
| DALP-0146 | Object storage is not available. | The platform could not reach the object storage service. The storage backend may be unreachable, or the object storage provider is not configured for this organization. | Retry the request. If the problem persists, contact support with the request ID. | error | Yes | 503 |
| DALP-0151 | The workflow engine call failed. | A call to the workflow execution service returned an error that does not map to a more specific error code. The service may be temporarily unavailable or returned an unexpected response. | Retry the request. If the problem persists, contact support with the request ID. | error | Yes | 503 |
| DALP-0174 | Object storage is not configured. | The theme logo upload reached the platform's storage layer, but no object storage provider was available for this organization's scope. The storage integration may not be configured. | Contact support with the request id. This indicates object storage has not been provisioned for this deployment. | error | Yes | 503 |
| DALP-0201 | RPC URL not configured for the current chain. Check network configuration. | The platform could not resolve a primary RPC URL for this chain from the loaded network configuration. Without an RPC endpoint, the approval workflow cannot be built or submitted. | Verify that the network configuration for this chain includes a valid primary RPC URL, then retry. | error | Yes | 503 |
| DALP-0202 | RPC URL not configured for gas-status checks. Check network configuration. | The platform could not resolve a primary RPC URL for this chain from the loaded network configuration. Without an RPC endpoint, the live wallet balance cannot be retrieved. | Verify that the network configuration for this chain includes a valid primary RPC URL, then retry the gas-status request. | error | Yes | 503 |
| DALP-0205 | Smart wallet address not available after workflow completion. Retry the request. | The smart wallet creation workflow completed successfully, but the resulting wallet address was not returned in the workflow output. This is a transient result-assembly failure. | Retry the request. If the wallet was created on-chain you can also look it up by the transaction hash. Contact support with the request id if retries do not succeed. | error | Yes | 503 |
| DALP-0222 | System context not available. Check server configuration and ensure systemMiddleware is active. | The addon factory create route reached its execution step but the system context was not populated. The route requires system middleware to run before the handler. | Contact support with the request id. This indicates a server configuration issue with middleware ordering. | error | Yes | 503 |
| DALP-0224 | Database not available. Required for resolving EntryPoint address. | The paymaster-signer initialization step queries the indexer for the ERC-4337 EntryPoint address, but the database context was unavailable or the EntryPoint record was not found. | Retry after verifying the account abstraction deployment module ran and the indexer is synced. Contact support if the issue continues. | error | Yes | 503 |
| DALP-0225 | Database not available. Required for resolving FeedsDirectory address during PriceResolver addon initialization. | The PriceResolver addon initialization needs the FeedsDirectory contract address from the indexer. The database context was unavailable when the platform tried to resolve this prerequisite. | Retry after confirming the feeds directory is deployed and the indexer has indexed it. Contact support if the issue continues. | error | Yes | 503 |
| DALP-0238 | Transaction processing service not available. Check server configuration and ensure restateMiddleware is active. | The addon factory create route requires a workflow execution client to submit durable on-chain transactions, but the client was not present in the request context. This indicates a server configuration problem, not a request data problem. | Contact support with the request id. This indicates the restateMiddleware is missing from the route composition on the server. | error | Yes | 503 |
| DALP-0239 | Bundler wallet address is not configured. Set BUNDLER_WALLET_ADDRESS in organization settings first. | The bundler balance endpoint requires the organization's bundler EOA wallet address to be stored in settings, but no value has been recorded for BUNDLER_WALLET_ADDRESS. | Set BUNDLER_WALLET_ADDRESS in the organization settings, then retry the request. | error | Yes | 503 |
| DALP-0256 | System context not available. Ensure systemMiddleware is active. | The platform reached an identity mutation route but the system context was not populated by the middleware chain. The request cannot proceed without a resolved system. | Contact support with the request id; this indicates a route composition or middleware ordering issue on the server. | error | Yes | 503 |
| DALP-0258 | Database context not available. Ensure databaseMiddleware is active. | The platform reached an identity operation but the database context was not populated by the middleware chain. The request cannot proceed without a database connection. | Contact support with the request id; this indicates a route composition or middleware ordering issue on the server. | error | Yes | 503 |
| DALP-0275 | Transaction processing service not available. Check server configuration and ensure restateMiddleware is active. | The platform attempted to queue the identity creation transaction but the workflow execution client was not available. The transaction processing middleware was not applied to this route. | Contact support with the request id. This indicates a server-side configuration problem with the transaction processing service. | error | Yes | 503 |
| DALP-0280 | System context not available. Check server configuration and ensure systemMiddleware is active. | The paymaster list route ran without a system context. The system resolution middleware did not populate the system before the handler executed. | Contact support with the request id. This indicates a server-side configuration problem with the system middleware. | error | Yes | 503 |
| DALP-0281 | Directory address not configured. Check network config has a directory contract address set. | The platform attempted to resolve the EntryPoint address from the network Directory contract, but the Directory contract address is not set in the network configuration. This prevents paymaster balance reads and smart-wallet approvals from proceeding. | Contact support with the request id. The network configuration is missing the Directory contract address required for account-abstraction operations. | error | Yes | 503 |
| DALP-0287 | System context not available. Check server configuration and ensure systemMiddleware is active. | The token-factory route handler ran without a resolved system context, which is required to identify the token factory registry and proceed with factory operations. | Contact support with the request ID. This indicates a server-side middleware configuration issue. | error | Yes | 503 |
| DALP-0292 | Transaction processing service not available. Check server configuration and ensure restateMiddleware is active. | The token factory create route requires a transaction processing client to submit the durable factory deployment workflow. The service was not available in the current request context. | Contact support with the request ID. This indicates a server-side middleware configuration issue. | error | Yes | 503 |
| DALP-0293 | Trusted-issuer claim-topic routes run synchronously and do not support the 'Prefer: respond-async' header. | The add-claim-topic and remove-claim-topic routes use a session advisory lock to serialize concurrent mutations on the same issuer. Async mode would release the lock before the on-chain write settles, risking a stale topic set on the next mutation. | Remove the Prefer: respond-async header and resend the request. These routes always return a synchronous result. | error | Yes | 503 |
| DALP-0317 | Transaction processing service not available. Check server configuration. | The workflow engine client was not initialised when the token creation route attempted to start the creation workflow, so the transaction could not be queued. | Retry the request after a short delay. If the problem persists, contact support with the request id. | error | Yes | 503 |
| DALP-0330 | Fixed-treasury-yield feature state not yet indexed for this token. | The platform looked up the fixed-treasury-yield feature row (denomination asset and treasury address) for this token but found no indexed record, or the record contains zero-address values. The platform's index has not yet processed the feature initialization event. | Retry after a short delay to allow the platform's index to process the feature initialization. If the error persists, contact support with the request ID. | error | Yes | 503 |
| DALP-0331 | Maturity-redemption feature state not yet indexed for this token. | The platform looked up the maturity-redemption feature row for this token but found no indexed record. The platform's index has not yet processed the feature initialization event. | Retry after a short delay to allow the platform's index to process the feature initialization. If the error persists, contact support with the request ID. | error | Yes | 503 |
| DALP-0333 | Token features for {featureName} are not available. | The platform could not read the feature state for this token from the chain or the index. The chain node or a downstream data source returned an error. | Retry after a short delay. If the error persists, contact support with the request ID. | error | Yes | 503 |
| DALP-0339 | Token data validation failed for {value}. | The platform retrieved a token record from the index but the data did not pass schema validation. The indexed record contains unexpected or missing fields. | Contact support with the request ID. This indicates a data integrity issue in the platform's index that requires investigation. | error | Yes | 503 |
| DALP-0347 | Token {tokenAddress} requires indexing and enrollment before the price feed description can be built. | The token does not yet have an existing price feed and its symbol has not been indexed on this system. The platform needs the token symbol to construct a new feed description. | Confirm the token is enrolled on the current system and that the indexer has processed it, then retry the set-price request. | error | Yes | 503 |
| DALP-0351 | Bond not yet indexed for this token. The indexer has not processed the bond initialization yet. Please retry later. | The platform looked up the bond record for this token in the indexer and found no entry with a denomination asset set. The bond initialization transaction has not been processed yet. | Wait for the indexer to process the bond initialization block, then retry the top-up request. | error | Yes | 503 |
| DALP-0359 | Token sale deployment confirmed on-chain but the indexer has not yet recorded the sale address. | The token sale creation transaction was confirmed on-chain, but the indexer had not yet processed the event and returned a sale address within the wait window. | Retry the request with idempotency. The sale exists on-chain and will become available once the indexer catches up. | error | Yes | 503 |
| DALP-0377 | Transaction processing service not available. Check server configuration. | The platform attempted to enqueue a transfer or forced-transfer transaction but the durable workflow service was not reachable. This indicates a service availability problem, not a problem with the request itself. | Retry the request after the service recovers. If the problem persists, contact support with the request id. | error | Yes | 503 |
| DALP-0378 | TransferApprovalComplianceModule parameters for this token failed to decode from indexer state. Re-index the compliance data or update the module configuration. | The platform read the TransferApprovalComplianceModule configuration from the indexer but could not decode the module address or approval-authority parameters. The indexed compliance state is absent or inconsistent. | Trigger a re-index of the token's compliance state, or verify the module is correctly configured on-chain. Retry after the indexer has processed the latest compliance events. | error | Yes | 503 |
| DALP-0382 | Transaction hash format wasn't accepted: "{transactionHash}". Expected 0x-prefixed hex string from the Workflow Engine. | The platform received a transaction hash from the durable workflow service that is not a valid 0x-prefixed hex string. This indicates the workflow produced an unexpected result format. | Retry the request. If the problem persists, contact support with the request id so the workflow output can be inspected. | error | Yes | 503 |
| DALP-0430 | Workflow engine client is not available. | The wallet-creation route requires a connection to the workflow engine to dispatch the wallet provisioning workflow, but the client was not initialized for this request. This is a platform-side configuration or connectivity issue. | Retry in a moment. If the problem continues, contact support with the request ID so the workflow engine connectivity can be investigated. | error | Yes | 503 |
| DALP-0431 | Could not resolve the created XvP settlement from the indexer after retries. | The XvP create route submitted the settlement creation transaction and confirmed it on-chain, but the indexer did not produce the settlement row within the retry window. The indexed settlement is required to return the settlement ID and state to the caller. | Retry the request. If the settlement ID is needed immediately, query the indexer directly after a short delay. Contact support with the request ID if the problem persists. | error | Yes | 503 |
| DALP-0432 | Yield schedule token linkage pending indexing. | The indexer has not linked the fixed-yield schedule to its token metadata yet. | Retry after indexing catches up. | error | Yes | 503 |
| DALP-0437 | The Workflow Engine rejected the workflow call as malformed. | A Workflow Engine endpoint returned HTTP 400 before Platform API could complete the downstream operation. | Retry only after verifying the API request shape and workflow input. If the request is valid, contact support with the request id. | info | No | 400 |
| DALP-0438 | The Workflow Engine rejected the workflow call as unauthorized. | A Workflow Engine endpoint returned HTTP 401, so Platform API could not authenticate the downstream workflow call. | Retry after the service credentials are corrected. If you are an API consumer, contact support with the request id. | warning | No | 401 |
| DALP-0439 | The Workflow Engine rejected the workflow call as not available. | A Workflow Engine endpoint returned HTTP 403, so the downstream workflow refused Platform API's call. | Retry after the workflow permissions or service identity are corrected. If you are an API consumer, contact support with the request id. | warning | No | 403 |
| DALP-0440 | Workflow Engine workflow endpoint was not found. | A Workflow Engine endpoint returned HTTP 404, which means the expected workflow service, handler, or invocation target was not available. | Retry after the workflow deployment and service discovery have caught up. If it continues, contact support with the request id. | warning | Yes | 404 |
| DALP-0441 | Workflow Engine workflow call conflicted with the current workflow state. | A Workflow Engine endpoint returned HTTP 409 because the downstream workflow state did not allow this call at this time. | Refresh the resource or deployment status, wait for the active workflow step to finish, then retry if the operation is still valid. | info | No | 409 |
| DALP-0442 | Workflow Engine workflow call rejected: unprocessable input. | A Workflow Engine endpoint returned HTTP 422 because the downstream workflow accepted the call envelope but rejected its semantic input. | Verify the requested operation is valid for the current resource state. If the request is valid, contact support with the request id. | info | No | 422 |
| DALP-0443 | Workflow Engine workflow call failed internally. | A Workflow Engine endpoint returned HTTP 500 while processing the downstream operation. | Retry if the operation is idempotent. If it continues, contact support with the request id so the workflow failure can be investigated. | error | No | 500 |
| DALP-0444 | Workflow Engine workflow call timed out. | A Workflow Engine endpoint returned HTTP 504 before the downstream operation completed. | Check the resource or deployment status before retrying so you do not duplicate a workflow step that may still complete. | warning | Yes | 504 |
| DALP-0445 | Transaction queue rejected the operation as malformed. | The transaction queue returned BAD_REQUEST before a transaction could be accepted for processing. | Verify the route input, wallet verification payload, and queued transaction parameters before retrying. | info | No | 400 |
| DALP-0446 | Transaction queue operation conflicted with current queue state. | The transaction queue returned CONFLICT because the requested transaction cannot be accepted in the current queue or resource state. | Refresh the transaction or resource state, wait for any active queued operation to finish, then retry if the operation is still valid. | info | No | 409 |
| DALP-0447 | Transaction queue rejected the operation: unprocessable input. | The transaction queue accepted the operation envelope but rejected its semantic transaction input before dispatch. | Verify the requested chain operation is valid for the current contract and token state before retrying. | info | No | 422 |
| DALP-0448 | Transaction queue confirmation timed out. | The transaction queue did not observe the queued transaction confirmation before its timeout window expired. | Check the transaction status before retrying so you do not submit a duplicate operation. | warning | Yes | 504 |
| DALP-0451 | Directory contract indexing pending. | The directory contract address is configured, but the indexer has not produced the directory row needed for component comparison. | Retry after the indexer processes the directory registration. If it continues, contact support with the request id. | error | Yes | 404 |
| DALP-0458 | Could not prepare the prior migration for retry. | Platform API could not reset the previous system migration workflow journal and state before submitting a fresh run. | Retry in a moment. If the problem continues, contact support with the request id. | error | Yes | 500 |
| DALP-0460 | System migration failed: {reason}. | The system migration workflow reported a terminal failure: {reason}. | Review the failed migration step and retry after correcting the underlying issue. If it continues, contact support with the request id. | error | No | 500 |
| DALP-0468 | Maturity-redemption treasury classification pending: the indexer has not finished this step yet. | The indexer populates treasury_is_contract via a single eth_getCode on every MaturityRedemptionFeatureCreated / TreasuryUpdated, but the column is still null for this feature. The indexer has not finished the classification step yet (typical during a partial reindex / backfill). Without that flag we cannot decide whether the approve flow is allowed (EOA treasuries) or must be blocked (contract treasuries), so we refuse to proceed rather than risk a misclassified on-chain failure. | Wait for the indexer to catch up and retry. If the column stays null for an extended period, verify the indexer is healthy and that MaturityRedemptionFeatureCreated / TreasuryUpdated for this feature were ingested. | error | Yes | 503 |
| DALP-0473 | Fixed-treasury-yield treasury classification pending: the indexer has not finished this step yet. | The indexer populates treasury_is_contract via a single eth_getCode on every FixedTreasuryYieldFeatureCreated / TreasuryUpdated, but the column is still null for this feature. The indexer has not finished the classification step yet (typical during a partial reindex / backfill). Without that flag we cannot decide whether the approve-yield-allowance flow is allowed (EOA treasuries) or must be blocked (contract treasuries), so we refuse to proceed rather than risk a misclassified on-chain failure. | Wait for the indexer to catch up and retry. If the column stays null for an extended period, verify the indexer is healthy and that FixedTreasuryYieldFeatureCreated / TreasuryUpdated for this feature were ingested. | error | Yes | 503 |
| DALP-0478 | Maturity-redemption treasury has not granted enough allowance to cover this redemption. | Before redeem(amount) runs, the Platform API handler reads allowance(treasury, featureAddress) on the denomination asset and compares it to the on-chain calculatePayout(amount) payout. The treasury is an externally-owned wallet and its ERC-20 allowance to the maturity-redemption feature contract is below that payout, so TreasuryPayoutLib.payoutFrom would revert with ERC20InsufficientAllowance inside the redeem transaction. The preflight refuses up front so the redeemer is not charged gas for a doomed tx. | Sign in as the configured treasury wallet (see data.treasury) and grant the maturity-redemption feature an allowance of at least data.required base units of the denomination asset via the bond's Manage maturity → Approve allowance control, then retry the redemption. Since ERC-20 approve overwrites (not adds), agents should submit data.required as the approve amount, not data.required - data.allowance. The error's data payload carries allowance and required as base-unit decimal strings, plus the denominationAsset, feature, and treasury addresses. | error | Yes | 422 |
| DALP-0495 | Compliance provider health check failed. | Platform API could not reach the provider health endpoint or the provider returned an unhealthy response. | Retry after a short backoff; if the failure persists, verify provider availability and provider credentials. | error | Yes | 503 |
| DALP-0496 | Compliance provider rejected applicant creation. | The provider applicant or monitored-subject creation call failed before DALP could persist the subject mapping. | Verify provider credentials and the submitted subject fields, then retry applicant creation. | error | No | 502 |
| DALP-0518 | Workflow Engine admin API unreachable. | Platform API could not contact the Workflow Engine admin endpoint required to inspect or mutate workflow state. | Retry after a short backoff. If the problem continues, check the Workflow Engine cluster health and contact support with the request id. | error | Yes | 503 |
| DALP-0521 | Luna m-of-n quorum activation window expired. | The Thales Luna 7 partition was waiting on out-of-band m-of-n approval and the configured retry window elapsed before the operator quorum signed off, so the workflow gave up. | Activate the partition on the HSM and re-submit the transaction. If expiries are frequent, lengthen the signing window via the signer config (luna.quorum.retryWindowMs). | info | Yes | 408 |
| DALP-0522 | Luna m-of-n quorum classification flagged as likely wrong. | The Luna vendor-extension reported the partition as activated, but the signing call still returned m-of-n-pending three times in a row. Either the firmware misreports activation or a concurrent caller is consuming the quorum. | Inspect the partition state on the HSM directly. If activation is genuinely pending, retry once the operator approves; otherwise contact support with the request id so the classification heuristic can be tuned. | info | No | 409 |
| DALP-0525 | Compliance provider rejected transaction registration. | The provider transaction-registration call (Sumsub KYT) failed before DALP could persist the transaction-id mapping. | Verify provider credentials and the submitted transaction fields, then retry transaction registration. | error | No | 502 |
| DALP-0602 | Currency-feed creation queue unavailable. | The addCurrencyFeeds workflow dispatch was not durably accepted. The new currencies were not persisted. | Retry the request. If it continues, contact support with the request id. | error | Yes | 503 |
| DALP-0609 | KYC document is temporarily unavailable. | Platform API could not verify or decrypt the stored KYC document envelope. | Retry later. If the document remains unavailable, contact support with the request id. | error | Yes | 503 |
| DALP-0613 | Organization price-feed submission signer is not available. | Platform API could not resolve an organization Vault EOA that can sign price-feed submissions for the organization identity. | Retry after organization deployment and indexing complete. If it continues, contact support with the request id. | error | Yes | 503 |
| DALP-0641 | The indexer has not yet caught up to the most recent write. | This read was held until the indexer drained past the most recent write for this organization, and that did not finish within the allowed wait. | Retry after a short backoff. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0649 | Refund splitter refund-loop status could not be read. | Platform API could not resolve the indexed AA refund-loop prerequisites or read the required on-chain splitter state. | Retry after the indexer and RPC provider are healthy. If the problem continues, contact support with the request id. | error | Yes | 503 |
| DALP-0654 | Live balanceOf(treasury) read for the treasury-health route failed against the chain provider. | The treasury-health badge issues exactly one live IERC20.balanceOf(treasury) call against the configured chain provider. That call either reverted or could not be reached, so the badge cannot render an authoritative balance and refuses to fall back to indexer state (the balance is operator-mutable and the indexer's tokenBalances row would be stale). | Retry once the chain provider is reachable. If the failure persists, verify the configured RPC endpoint for the active chain and the denomination asset address before retrying. | error | Yes | 502 |
| DALP-0656 | Indexer v_bond_status view has not yet computed a row for the attached maturity-redemption feature. | The /v2/tokens/:tokenAddress/treasury/health route reads the indexed v_bond_status view for the authoritative denominationRequired ceiling driving the redemption approval. The maturity-redemption feature is attached but the view has not landed a row yet, so collapsing the missing required amount to zero would render a false green badge while the indexer catches up. | Retry after the indexer catches up to the latest idxr_token_bonds insert. If the failure persists, verify the indexer is making forward progress on the active chain. | error | Yes | 503 |
| DALP-0658 | Indexer is reindexing; deploy is temporarily unavailable. | The blockchain indexer is rebuilding its dataset (a zero-downtime reindex), so onboarding deploy reads would observe stale or partial state until it catches up. | Wait for the Retry-After interval, then retry the deploy. Clients that did not opt into this backpressure are unaffected. | info | Yes | 503 |
| DALP-0660 | Identity provider verification is temporarily unavailable. | Platform API could not reach the identity provider to complete the verification for this signing request. | Retry after a short backoff; if it persists, contact support with the request id. | error | Yes | 503 |
| DALP-0692 | Test event could not be queued for delivery. | The delivery engine refused the hand-off, so the platform discarded the test event and scheduled no delivery attempt. | Retry the test event. If it keeps failing, ask your operator to confirm the delivery engine is running before wiring up this endpoint. | error | Yes | 503 |
| DALP-9079 | Couldn't read ERC-20 metadata because the RPC endpoint was temporarily unavailable. | The preflight reads symbol() and decimals() live from the chain; that RPC request failed to reach a usable response (connection error, timeout, or rate limit) rather than the contract reverting. | Retry after the Retry-After interval. If it persists, check the network's RPC endpoint health. | error | Yes | 503 |
| DALP-9087 | The wallet balance is too low to cover this transaction's gas. | The network rejected the transaction because the signing wallet does not hold enough of the network's gas token to pay for it: the gas the transaction needs multiplied by the gas price, plus any value it sends. On a network where gas is not free, transactions from this wallet stop here until someone tops it up. | Send the network's gas token to the wallet, then submit the transaction again. The error data carries shortfallWei (the smallest amount to add), recommendedTotalWei (a buffered target that also covers the next few operations), the wallet address, the chainId, and the gas tokenSymbol to send. | error | Yes | 422 |
| DALP-9163 | Poll ballot could not be signed. | The wallet signing service failed while signing the PollBallot typed data with the caller's managed key. | Retry after a short backoff. If signing continues to fail, contact support with the request id. | error | Yes | 503 |
| DALP-9185 | A background operation could not be completed. | A service required to finish the background operation rejected the request before it completed. | Retry the request. If the operation keeps failing, contact support with the request id. | error | Yes | 500 |
| DALP-9189 | Token-sale chain time is temporarily unavailable. | The latest block timestamp could not be read from the configured network endpoint, so time-dependent token-sale state cannot be projected. | Retry after the network endpoint recovers. | error | Yes | 503 |
| DALP-9240 | Airdrop data is temporarily unavailable. | The indexed airdrop projection could not be read for this request. | Retry after the indexer database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9241 | XvP settlements are temporarily unavailable. | The indexed XvP settlement list could not be read for this request. | Retry after the indexer database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9242 | User asset balances are temporarily unavailable. | The indexed user-asset projection could not be read for this request. | Retry after the indexer database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9244 | The tenant wallet could not be resolved. | The request could not resolve the tenant wallet required for this operation. | Verify the participant wallet assignment and wallet service availability, then retry. | error | Yes | 503 |
| DALP-9245 | The paymaster signer is temporarily unavailable. | The paymaster signer host could not complete the requested operation. | Verify the paymaster, custody, secrets, and transaction services, then retry. | error | Yes | 503 |
| DALP-9247 | Account-abstraction data is temporarily unavailable. | The account-abstraction persistence operation failed. | Retry the request; if it continues to fail, inspect database health and repository diagnostics. | error | Yes | 503 |
| DALP-9253 | The system projection is temporarily unavailable. | The indexed system projection could not be resolved for this request. | Retry after the indexer catches up or verify the organization system setting. | error | Yes | 503 |
| DALP-9259 | Token data is temporarily unavailable. | The indexed token projection could not be read for this request. | Retry after the indexer database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9260 | Portfolio data is temporarily unavailable. | The indexed portfolio data required by this endpoint could not be read or persisted. | Retry after the indexer database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9261 | Market data is temporarily unavailable. | The market-data projection required by this endpoint could not be read or persisted. | Retry after the market-data database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9262 | Operational data is temporarily unavailable. | The operational projection required by this endpoint could not be read or persisted. | Retry after the operations database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9263 | Settlement data is temporarily unavailable. | The settlement projection required by this endpoint could not be read or persisted. | Retry after the settlement database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9264 | Platform data is temporarily unavailable. | The platform data required by this endpoint could not be read or persisted. | Retry after the platform database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9265 | System data is temporarily unavailable. | The system data required by this endpoint could not be read or persisted. | Retry after the systems database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9266 | Token feature data is temporarily unavailable. | The token-feature data required by this endpoint could not be read or persisted. | Retry after the token database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9267 | The token write could not be persisted. | A persistence operation required by the token mutation failed. | Retry after the token database is available; if the failure persists, inspect its write health. | error | Yes | 503 |
| DALP-9268 | Transaction data is temporarily unavailable. | A persistence operation required by the transaction endpoint failed. | Retry after the transaction database is available; if the failure persists, inspect its query health. | error | Yes | 503 |
| DALP-9288 | Token factory registry is not ready for this system. | The active system has no indexed token-factory registry address, so the token list cannot authorize which factories belong to the system. | Wait for the system token-factory registry to index, then retry the request. | error | Yes | 503 |
| DALP-9304 | The reserved-balance transaction did not complete. | The on-chain transaction that reserves the order's balance reverted or timed out, so the order was rejected and its pending reservation was rolled back. | Check the wallet balance and the venue's custodian role on the reserved token, then submit a new order. | error | Yes | 503 |
| DALP-9307 | The market-data stream lost its source. | A stream poll could not read the book or the trade log, so the stream ended instead of serving stale depth. | Reconnect the stream; if the failure persists, check the platform's database and engine health. | error | Yes | 503 |
| DALP-9320 | The reporting source could not be read. | A source the report derives from did not answer, so the platform rendered no section rather than an empty one. A period with no activity is a nil return and never reports this error. | Repeat the request. If it keeps failing, check the platform database and Ledger Index health. | error | Yes | 503 |
Contract errors surfaced at the API
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0081 | Contract operation failed. | The smart contract rejected the operation with a known DALP error. | Use the DALP code and suggested response step to correct the request or token state. | warning | No | 422 |
| DALP-0497 | Compliance trusted-issuer registration failed. | The tenant trusted issuer registry rejected the provider issuer EOA registration transaction. | Verify the provider issuer address, claim topic, tenant registry address, and transaction trace before retrying provisioning. | error | No | 502 |
| DALP-0506 | Claim issuer participant deployment failed. | The on-chain identity factory rejected the claim-issuer participant identity deployment for the compliance provider. | Verify the system identity factory and signer configuration, then retry provisioning. The provider row stays in failed status until provisioning succeeds. | error | No | 502 |
Vendor boundary errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-9092 | The membership service refused to create this invitation. | The service that owns organization memberships rejected the invitation for a reason this catalog does not yet describe, so no invitation was created. | Send the request id to support so the rejection reason can be traced, and expect an immediate repeat to fail the same way. | error | No | 502 |
Unclassified errors
| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | HTTP Status |
|---|---|---|---|---|---|---|
| DALP-0084 | The platform could not complete this request. | An unexpected failure occurred after the request passed validation. | Retry once. If it continues, contact support with the request id. | error | No | 500 |
Surface coverage
| Surface | Transport | Coverage | Public adapter behavior |
|---|---|---|---|
| Better Auth | http | excluded | pass-through |
| Known contract revert | REST | proof-slice | Preserve CONTRACT_ERROR data and DALP code while adding unified registry metadata. |
| Workflow Engine dependency failures | REST | proof-slice | Return retryable dependency guidance through the unified public envelope. |
| Indexer database dependency failures | REST | in-scope | Report degraded indexer schema reads through registry observability while preserving safe fallback behavior. |
| Bundler JSON-RPC handler | json-rpc | proof-slice | Preserve JSON-RPC 2.0 error framing and include registry data under error.data. |
| RPC compatibility | RPC | proof-slice | Carry the same registry identity and public copy through the RPC-compatible error payload. |
| REST | REST | proof-slice | Return the unified public error envelope for current REST failures. |
| Platform API SSE streams | sse | proof-slice | Emit a protocol-valid error event after stream start or direct envelope before stream start. |
| HTTP unknown fallback | http | proof-slice | Return the safe unknown public envelope after redaction and telemetry emission. |