# expired (/docs/errors/expired)

The call arrived after its window closed: a weights commit past its reveal period, an order past its expiry, or a contribution after the period ended.

The expired object cannot be revived. restart the flow with fresh state — make a new commit, place a new order, or move on.

## Remediation [#remediation]

The window has closed; restart the flow with fresh state

## Chain errors [#chain-errors]

The exact chain error names (from the extrinsic receipt) that classify to `expired`; the description says what triggered the failure and where to check. Each name has its own page:

| Chain error                                                             | Description                                                                                                                                                                                                                                                          |
| ----------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`ContributionPeriodEnded`](/docs/errors/chain/ContributionPeriodEnded) | A contribution was made at or after the crowdloan's `end` block. Compare the `end` field of the `Crowdloans` entry with the current block number; the creator can extend it with `update_end` while the crowdloan is not finalized.                                  |
| [`ExpiredWeightCommit`](/docs/errors/chain/ExpiredWeightCommit)         | The hash supplied to `reveal_weights` matches a commit whose reveal window has already passed, so it can no longer be revealed. Check the `commit_reveal_period` hyperparameter and reveal within the allowed epochs after committing; re-commit and reveal on time. |
| [`InvalidRevealRound`](/docs/errors/chain/InvalidRevealRound)           | A timelocked weights commit specified a `reveal_round` older than the latest stored DRAND round, so it could be decrypted immediately. Query the drand pallet's `LastStoredRound` and commit with a future round number.                                             |
| [`OrderCancelled`](/docs/errors/chain/OrderCancelled)                   | The order was previously cancelled via `cancel_order` and can never be executed. Check the `Orders` storage entry for the order id; a `Cancelled` status is terminal, so the signer must sign and submit a fresh order.                                              |
| [`OrderExpired`](/docs/errors/chain/OrderExpired)                       | The current chain time is past the order's `expiry` field, which is a unix timestamp in milliseconds, so the order can no longer execute. Compare the `expiry` in the signed order payload with the chain's current `Timestamp` value.                               |

The same explanation is available in the terminal: `btcli explain expired` (or `btcli explain <ChainErrorName>` for one exact chain error).
