Skip to main content

Platform API errors DALP-9500 to DALP-9999

Cause, fix, HTTP status and retry flag for every Platform API error with a code from DALP-9500 to DALP-9999.

This page lists the 56 errors the Platform API can return with a code from DALP-9500 to DALP-9999. Match the id in the error envelope to the DALP Code column, then read Retryable and Suggested Fix. The Platform API error reference explains each column, including Severity, and the DALP error index lists the page for every code range.

DALP Code
Machine name
Category
Message
Why
Suggested Fix
Severity
Retryable
HTTP Status
DALP-9500
TOKEN_PERMIT_NONCE_CONFLICT
domain
The permit nonce changed.
Another permit reserved the next nonce for this owner before this request could store its signature.
Retry the signing request so the platform can allocate the next available permit nonce.
info
Yes
409
DALP-9501
TOKEN_PERMIT_FEATURE_UNAVAILABLE
operational
The permit feature is unavailable.
The permit feature state has not finished indexing, or its declared signing domain does not match the indexed one.
Wait for the permit feature state to finish indexing, then retry.
info
Yes
503
DALP-9502
TOKEN_PERMIT_SIGNING_FAILED
dependency
The permit signature could not be produced.
The configured custody signer did not complete the permit signing request, or a chain read the signing needs failed.
Restore the custody signer, then retry.
error
Yes
503
DALP-9505
TOKEN_PERMIT_PERSISTENCE_FAILED
dependency
Permit storage is unavailable.
The platform could not read or save the permit state required by this operation.
Restore permit storage, then retry without changing the request scope.
error
Yes
503
DALP-9506
TOKEN_AMOUNT_DENOMINATION_UNAVAILABLE
dependency
The token denomination is not indexed.
The symbol and decimals needed to encode the submitted amount are not indexed for the token yet.
Wait for the token symbol and decimals to be indexed, then retry with the same idempotency key.
error
Yes
503
DALP-9510
CLAIM_TOPIC_ALREADY_EXISTS
domain
A claim topic with this name already exists.
A claim topic with this name is already registered in the active system.
Use the existing topic, or choose a different name.
info
No
409
DALP-9518
FEED_TOPIC_CONFLICT
client
Topic name {topicName} does not match topic id {topicId}.
The request supplied both a topic name and a topic id, and the id computed from the name differs from the id given.
Use the computed topic id or submit only one topic identifier.
info
No
409
DALP-9519
FEED_CONTRACT_INVALID
client
Contract {feedAddress} does not expose the feed interface.
The contract at the given address did not answer the required feed interface on the selected chain.
Verify the feed address and confirm the contract is deployed on the selected chain.
info
No
422
DALP-9523
ADMINISTRATOR_REQUIRED
permission
A global platform administrator is required.
The authenticated user is not a global platform administrator.
Authenticate as a global platform administrator and retry the request.
info
No
403
DALP-9524
REQUEST_CHAIN_SYSTEM_REQUIRED
domain
The organization has no deployed system on chain {chainId}.
The active organisation has no deployed system on the network the request selected: the X-Chain-Id network, or the organisation's default network.
Deploy the organization system before using system-scoped APIs.
info
No
404
DALP-9525
FINANCIAL_YIELD_OPERATION_REJECTED
domain
The dividend operation for {dividendId} could not be completed.
data.reason names the dividend state that refused the operation: the dividend or its snapshot is not indexed, computed or final yet, the snapshot is already recorded, or the confirmation does not match the computed snapshot.
Read data.reason. For dividend-not-indexed, snapshot-not-computed or snapshot-awaiting-finality, wait and send the same request again. For snapshot-already-recorded, nothing is left to do. For snapshot-confirmation-mismatch, preview the current snapshot and confirm or approve it again.
error
Yes
503
DALP-9526
TRANSACTION_QUEUE_DEAD_LETTER
dependency
The transaction queue stopped work on this transaction before it settled.
The transaction queue moved the transaction to DEAD_LETTER: its retries ran out, or the chain or the custody provider gave no answer, before the transaction settled. A call that was broadcast, or filed with a custody provider, can still land on the chain after this answer.
Do not submit the transaction again until it settles. Read the transaction request with its transaction id. Submit again with a new idempotency key only when that read shows mayStillLand: false; a read without that key gives no permission. If the transaction never settles, give the transaction id to an Organisation owner, an Organisation admin or a Platform admin. Any of them can force-fail it with POST /api/v2/transaction-requests/{transactionId}/transitions and action: "fail"; an Organisation owner or a Platform admin can also force-fail it in the Console under Organisation settings, Platform status.
error
No
422
DALP-9531
ASSET_SORT_FAMILY_MISMATCH
client
Sort names a column the asset's chain family cannot order on.
The holdings collection under one asset advertises both chain families' sort keys, and the asset decides which family answers. The sort names a column that family cannot order on. The refusal names the field, the family, and the columns that family can be ordered on.
Sort the holdings on a column the named family can be ordered on, omit sort to take that family's own ordering, or read the asset in the family whose column you are sorting on.
info
No
400
DALP-9532
REQUEST_DEADLINE_EXCEEDED
operational
The request deadline expired.
The request ran past the deadline the platform gives one request, so the platform stopped the work. The operation that request started may still be running.
Check the status of the operation before you submit the request again, and let the Retry-After interval pass first.
warning
No
504
DALP-9534
SYSTEM_TRUSTED_ISSUER_ID_INVALID
client
The issuer identifier and the request body name different chain families.
A trusted issuer is named by an address on one family and by a party id on the other, and this request mixed them: the issuerId segment and the body must describe the same family. The platform submitted no command and changed nothing.
Send the identifier that matches the body, or send the body that matches the identifier, then retry.
info
No
400
DALP-9540
APPROVAL_NOT_FOUND
client
Approval request was not found.
No approval request exists under this identifier in the calling organization.
Read the approvals list for the current identifier and state, then decide again.
info
No
404
DALP-9541
APPROVAL_REFUSED
domain
The approval decision was refused.
The platform's maker-checker rules and the policy version the request was raised under decide who may approve and whether the decision is still valid. The maker cannot approve their own request. A role the pinned policy does not name cannot approve. A signature that leaves the policy's approver floor short is recorded against the request rather than admitting it. A borrowed session cannot approve when the pinned policy sets operatorMayApprove to false. A payload that moved invalidates the approval. An expired request accepts no decision. A policy that names no approving role admits any role the platform has already admitted as an approver. A request already decided accepts no second decision. A decision that lost a race to another writer is refused.
Read the request again for its current state and row version, and have a distinct operator decide it.
info
No
409
DALP-9542
OPERATIONS_CASE_NOT_FOUND
client
Operations case was not found.
No operations case exists under this identifier in the calling organization.
List the cases with GET /api/v2/operations/cases, then acknowledge the case with the caseId from the list.
info
No
404
DALP-9543
OPERATIONS_CASE_REFUSED
domain
The operations case refused this acknowledgement or resolution.
A case that lapsed, that somebody already resolved or acknowledged, or whose row version moved under the caller accepts no acknowledgement or resolution. The reason field names which: already-resolved, already-acknowledged, expired or row-version-moved.
Read the cases list again for the current state and row version. Repeat the call only when reason is row-version-moved; a case in any other state accepts no further acknowledgement or resolution.
info
No
409
DALP-9546
ADMIN_MUTATION_POLICY_GROUP_UNKNOWN
client
The administrative mutation policy names an unknown protection group.
Every routeGroups entry must be one of the published protection groups, because a name that matches no route would silently protect nothing.
Send only the protection groups the policy field lists, or use the standard preset.
info
No
422
DALP-9547
ADMIN_MUTATION_ALREADY_HELD
domain
An identical change is already held for approval.
Another user already submitted exactly this administrative change and it waits for a second user. Holding a second copy would let two requests run the same change.
Read the held approval named in the organisation's approvals inbox and have a second user decide it, or submit a different change.
info
No
409
DALP-9561
WEBHOOK_SYSTEM_SCOPE_REQUIRED
permission
Webhook request has no deployed system.
The request resolved no deployed system for the endpoint to subscribe to.
Reissue the request under a system the active tenant has deployed.
info
No
404
DALP-9563
TOKEN_CREATE_COMPLIANCE_MODULE_INCOMPATIBLE
client
V1 compliance modules cannot be installed on a v2 asset: {modules}. {remedies}.
A DALP asset is a v2 token. A v1 compliance module looks for the older token interface, which a v2 token does not report, so it would reject every mint. data.typeIds lists the v1 modules in the request, and data.remedies names the v2 module that replaces each one.
Replace each module in data.typeIds with its -v2 module, for example collateral-v2 instead of collateral. A module without a v2 version cannot be used on a DALP asset yet; remove it from initialModulePairs.
info
No
400
DALP-9564
TOKEN_COMPLIANCE_MODULE_GENERATION_INCOMPATIBLE
client
V1 compliance modules cannot be installed on a v2 asset: {modules}. {remedies}.
A DALP asset is a v2 token. A v1 compliance module looks for the older token interface, which a v2 token does not report, so once installed it would reject every mint. data.typeIds lists the v1 module in the request, and data.remedies names the v2 module that replaces it.
Install the -v2 module instead, for example collateral-v2 instead of collateral. A module without a v2 version cannot be installed on a DALP asset yet.
info
No
400
DALP-9565
COLLECTION_PAGE_CURSOR_MISMATCH
client
The page cursor does not belong to this query.
A page cursor is only valid for the sort and filters of the request that returned it. This cursor was issued for a different sort or filter, or it was altered.
Send the meta.nextCursor from the previous page together with the same sort and filters, or start again without page[cursor].
info
No
400
DALP-9590
TOKEN_ADDRESS_RESTRICTION_ACTIVE
domain
An active wallet restriction holds this address frozen.
Wallet restriction {{restrictionId}} froze {{holderAddress}} on {{tokenAddress}} and is still active, so unblocking the address on this one token would undo the restriction's freeze.
Lift the wallet restriction instead. That unblocks the address on every token the restriction covers and records who lifted it.
info
No
409
DALP-9701
ESCROW_NOT_FOUND
client
The escrow was not found.
The address names no escrow created by your organisation's escrow factory, or your role cannot read escrows.
Use an escrow address from the escrows list, signed in as an organisation owner or platform administrator.
info
No
404
DALP-9702
ESCROW_FORCED_TRANSFER_REFUSED
client
The forced transfer was refused.
The forced transfer breaks a lock rule, or the escrow or the transaction queue refused it. A listed lock must be an open lock of the owner, and the amount must be greater than zero and within the owner's free balance and listed locks. The amount draws on the owner's free balance first, and only the remainder draws on the listed locks. Paid units go only to the rail wallet, and unpaid units go only back to their owner. A lock whose cash-out the bank may still pay cannot move. A lock that backs an unpaid cash-out cannot move while its rail wallet has no open compromised rotation.
Check the listed locks and the amount against the owner's escrow balance. Return unpaid units to their owner, send paid units to the rail wallet, and retry a cash-out still at the bank once the bank reports.
info
No
409
DALP-9703
ESCROW_CUSTODIAN_REQUIRED
client
Only a token custodian can force a transfer out of an escrow.
Your wallet does not hold the custodian role on the token, or the token is not one of this organisation's.
Ask a token administrator to grant your wallet the custodian role, then retry.
info
No
403
DALP-9810
REQUEST_CHAIN_SCOPE_CONFLICT
client
The request names one chain family and reads another.
A shared asset route answers for an EVM token or a Canton instrument, and the request settles which one in more than one place: the X-Chain-Id or X-Network-Id header, filter[family], instrumentAdmin, or the route itself. Two of them disagree, or the route serves only the other family, so there is no single family to answer from. The message names the conflict.
Send one family consistently: drop the header or filter that names the other family, or read a Canton instrument with its instrumentAdmin on a route that serves Canton instruments.
info
No
400
DALP-9813
GATEWAY_ADDON_NOT_DEPLOYED
client
The custody gateway add-on is not deployed.
The organisation's system on this network has no custody gateway add-on, or its access manager is not indexed yet.
Deploy the custody gateway add-on on this network, then read it again.
info
No
404
DALP-9814
GATEWAY_NOT_FOUND
client
The custody gateway was not found.
No gateway of this add-on is indexed at this address, or none serves the wallet you act with.
List the gateways of the add-on and use one of their addresses.
info
No
404
DALP-9815
GATEWAY_TOKEN_ALREADY_ENABLED
client
The coin is already enabled.
The coin is already enabled on the custody gateway add-on.
List the enabled coins; to change a coin's behaviour, change its defaults.
info
No
409
DALP-9816
GATEWAY_PROFILE_NOT_FOUND
client
The gateway profile was not found.
No profile with this id exists on the add-on.
List the profiles of the add-on and use one of their ids.
info
No
404
DALP-9817
GATEWAY_PROFILE_IN_USE
client
The gateway profile is in use.
At least one gateway is assigned to this profile.
Move or retire the gateways of this profile before removing it.
info
No
409
DALP-9818
GATEWAY_ALREADY_EXISTS
client
The client already has a gateway.
A gateway already exists for this client identity.
Read the existing gateway instead of creating another.
info
No
409
DALP-9819
GATEWAY_SETTING_REFUSED
client
The gateway setting was refused.
A setting name is unknown or repeated, or its value does not fit the setting or is not greater than zero. The coin's defaults omit a required setting, or name a setting the coin cannot take when it is enabled.
Use a setting name the add-on knows once per request, with a value of the type the setting takes.
info
No
422
DALP-9820
GATEWAY_SIGNER_REFUSED
client
The selected wallet cannot sign this gateway write.
The selected wallet is not an active signer that can send add-on writes on this network.
Select a wallet of the organisation that can sign on this network, then retry.
info
No
409
DALP-9821
GATEWAY_APPROVAL_REQUIRED
client
The gateway change needs checker approval.
The add-on's checkers must approve this change before it can be sent.
Propose each listed call to the add-on's access manager, collect the approvals, then send the same request again.
info
No
422
DALP-9822
GATEWAY_CANNOT_WAIT_FOR_CUSTODY
client
The coin cannot wait for custody.
The coin's custody receipt cannot hold deposits while the custodian confirms them.
Give the custody receipt the Hold feature with the gateway add-on as reserver, or leave waiting for custody off.
info
No
422
DALP-9823
GATEWAY_CUSTODY_DESTINATION_REFUSED
client
Coins must go to a Fireblocks wallet to wait for custody.
Waiting for custody needs coins to go to a wallet of one of the organisation's Fireblocks custody providers.
Set coins-go-to to a Fireblocks wallet of the organisation, or turn waiting for custody off.
info
No
422
DALP-9824
GATEWAY_WRITE_REFUSED
client
The gateway refused the change.
The add-on refuses this change in its current state, the gateway is closed, or the withdrawal leaves nothing after the fee.
Read data.revert, correct the request or the add-on's state, then send it again.
info
No
422
DALP-9825
GATEWAY_SIGNER_NOT_SET_UP
client
The gateway signer is not set up.
The organisation has no keeper or screener wallet of this kind on this network.
Set up the signer first, then retry.
info
No
404
DALP-9826
GATEWAY_SIGNER_SET_UP_REFUSED
client
The gateway signer could not be set up with this custody provider.
The custody provider configuration cannot hold a signing wallet for this organisation on this network.
Choose a custody provider configuration of the organisation that can sign on this network, then retry.
info
No
422
DALP-9827
GATEWAY_PAYOUT_NOT_APPROVED
client
The payout address is not approved.
The payout address is not on the gateway's approved list, or it is suspended.
Ask a gateway manager to approve the address, or name an address that is approved.
info
No
422
DALP-9828
GATEWAY_RECEIPTS_UNAVAILABLE
client
The wallet holds too few available receipts.
The wallet holds fewer receipts than requested once the receipts held for custody are set aside.
Request no more than the available receipts, or wait for the custodian to answer the held deposits.
info
No
422
DALP-9829
GATEWAY_RECORD_NOT_FOUND
client
The gateway record was not found.
No deposit, withdrawal request or unsupported record of this gateway is indexed under this id. A receipt token that no coin of the add-on uses answers the same way.
List the gateway's records and use one of their ids.
info
No
404
DALP-9830
GATEWAY_PERMISSION_MANAGER_REQUIRED
client
The wallet cannot change gateway roles.
Only a holder of the custody gateway permission manager role on the system grants or revokes gateway roles.
Act from a wallet that holds the custody gateway permission manager role, or ask a system administrator to grant it.
info
No
422
DALP-9831
GATEWAY_SIGNER_IN_USE
client
DALP still signs gateway calls with this wallet.
DALP signs gateway calls with this wallet, so revoking its role here would leave the keeper or screener sending calls the gateway refuses.
Rotate the keeper or screener to a new signer wallet first, then revoke the role from this wallet.
info
No
409
DALP-9832
REGISTRY_UNAVAILABLE
dependency
The custody provider's destination registry could not complete this step.
The custody provider that keeps its own withdrawal allow list did not register, read or remove this destination, so the platform cannot tell whether the destination is approved there.
Retry the step. The entry keeps the state it already had, and a withdrawal to a destination that is not active is refused in the meantime.
error
Yes
503
DALP-9833
GATEWAY_DEPOSIT_STATE_REFUSED
client
The deposit is not in a stage that allows this transition.
The deposit is not in a stage that allows this transition.
Read the deposit's stage, then send a transition that stage allows.
info
No
409
DALP-9834
GATEWAY_WITHDRAWAL_STATE_REFUSED
client
The withdrawal request is not in a stage that allows this transition.
The withdrawal request is not in a stage that allows this transition, or it no longer owes the review step this transition gives.
Read the request's stage, needsScreening and needsApproval, then send a transition they allow.
info
No
409
DALP-9835
GATEWAY_ROLE_REQUIRED
client
Your wallet does not hold the role this transition needs.
This transition is signed by your own wallet, which does not hold the role the add-on requires for it.
Ask a gateway manager to grant your wallet the named role, then send the transition again.
info
No
403
DALP-9836
EXTERNAL_TOKEN_METADATA_TOO_LONG
client
The token's name or symbol is longer than DALP registers.
DALP registers a token's name and symbol exactly as the chain reports them and never shortens them, so a token whose name exceeds 50 characters or whose symbol exceeds 24 is not registered.
Register a token whose name and symbol are within the limit.
info
No
422
DALP-9837
REGISTRY_REFUSED
client
The custody provider's destination registry refused this step.
The custody provider that holds this destination's own allow list refused the request, or the provider configuration that registered the destination is no longer available, so the platform cannot confirm the destination there.
Check the destination and the custody provider configuration, then clear or revoke the entry once the provider reports it. Retrying the same step cannot succeed.
info
No
409
DALP-9838
ASSISTANT_PLAN_NOT_FOUND
client
Plan not found.
No plan with that identifier was built by the caller in the active organisation. A plan another member built answers the same way, so the reply never confirms that it exists. A step index the plan does not have also answers with this error.
List the plans and use the identifier of a plan the caller built.
info
No
404

The previous page is DALP-9400 to DALP-9499. The next page is DALP-12000 to DALP-12099.

Was this page helpful?