# DALP-2000 to DALP-2999

Source: https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-2000-2999
Cause, fix and retry flag for every on-chain contract error with a code from DALP-2000 to DALP-2999.

This page lists the 12 errors in the contract error reference with a code from DALP-2000 to DALP-2999. Match the error's `id`, or its `dalpCode` on a contract error or a failed deployment step, for example `DALP-2001`, to the DALP Code column, then read Retryable and Suggested Fix. The [contract error reference](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference#how-to-use-this-reference) explains each column, including Severity, and the [DALP error index](https://docs.settlemint.com/docs/api-reference/errors) lists the page for every code range.

| DALP Code | Message | Why | Suggested Fix | Severity | Retryable | Solidity Error |
| --- | --- | --- | --- | --- | --- | --- |
| DALP-2001 | Sender not approved settlement. | The caller attempted to revoke their approval on an XvP settlement, but their address has no recorded approval. The settlement contract only permits revoking an approval that the same address previously granted. | Only call revokeApproval from an address that has already called approve on this settlement. Verify the address and settlement contract before retrying. | error | No | `SenderNotApprovedSettlement()` |
| DALP-2003 | You are not a participant in this settlement. | The contract checks every flow's sender address against the caller. Your account does not appear as a sender in any of this settlement's configured flows, so the contract cannot grant you access. | Verify that you are using the correct account and settlement reference. | error | No | `SenderNotInvolvedInSettlement()` |
| DALP-2004 | Settlement already cancelled. | The settlement reached a cancelled terminal state before this call arrived. Once cancelled, the contract blocks all further operations on this settlement. | No further step is possible. Create a new settlement if needed. | error | No | `XvPSettlementAlreadyCancelled()` |
| DALP-2005 | Settlement already completed. | The contract already executed this settlement and transferred all token flows. It blocks further operations once execution completes. | No further step is needed. The settlement completed successfully. | error | No | `XvPSettlementAlreadyExecuted()` |
| DALP-2006 | Settlement expired and the contract blocked execution. | The settlement's cutoff date has passed. The contract blocks execution and approval once the cutoff timestamp passes. | Create a new settlement with an updated deadline. | error | No | `XvPSettlementExpired()` |
| DALP-2007 | Settlement expired and the contract already returned the funds. | The contract already processed this expired withdrawal. It sets a withdrawn flag after the first successful call to withdrawExpired and rejects any repeat calls. | No further withdrawal is needed. The contract returned the funds when the settlement expired. | error | No | `XvPSettlementExpiredWithdrawalAlreadyProcessed()` |
| DALP-2008 | Not all parties have approved this settlement. | Execution requires every local sender in the settlement to have called approve. At least one local sender has not approved, so the settlement is not fully approved. | Check which participants still need to approve, then ask them to do so. | error | Yes | `XvPSettlementNotApproved()` |
| DALP-2009 | This settlement has not expired. | The withdrawExpired call requires the settlement's cutoff timestamp to have passed. The settlement is still within its active window, so the expired withdrawal path is not available yet. | Wait until the cutoff date has passed, then call `withdrawExpired`. | error | Yes | `XvPSettlementNotExpired()` |
| DALP-2010 | A settlement with external flows needs a hashlock. | This settlement includes flows on external chains, which requires a hashlock to coordinate cross-chain execution. You did not provide a hashlock when you created the settlement, so the contract rejected initialization. | Create the settlement again with a hashlock for its cross-chain flows. | error | No | `HashlockRequired()` |
| DALP-2011 | Settlement cutoff date is not in the future. | The XvP settlement factory requires the cutoff date to be strictly greater than the current block timestamp. The value supplied was equal to or before the current time. | Set the cutoff date to a Unix timestamp that is at least one second after the current block time. | error | No | `InvalidCutoffDate()` |
| DALP-2012 | The settlement has no payment flows defined. | The settlement requires at least one payment flow specifying what token each party sends and receives. You submitted the settlement with an empty flows array. | Add at least one payment flow specifying the tokens and amounts to exchange. | error | No | `EmptyFlows()` |
| DALP-2013 | You have already approved this settlement. | The contract records one approval per sender address. Your account has already called approve for this settlement, and the approval is already on-chain. | No further step is needed. The contract has recorded your approval. | warning | No | `SenderAlreadyApprovedSettlement()` |

The previous page is [DALP-1100 to DALP-1199](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-1100-1199). The next page is [DALP-3000 to DALP-3999](https://docs.settlemint.com/docs/api-reference/errors/error-code-reference/dalp-3000-3999).
