Skip to content

Engine errors ​

Every error the engine program raises, from its IDL. When an SDK call fails, client.explain(error) returns the code and name of the engine error behind it, or null if the engine raised none. Retry later yes means the cause can pass with time, so the same call can succeed later.

CodeNameRetry laterMeaning
6000Overflownoan amount is too large for the arithmetic
6001DivideByZeronothe arithmetic divided by zero
6002Truncatednothe instruction data was cut short
6003NonCanonicalnothe instruction data was not encoded canonically
6004UnknownKindnothe intent kind is not one the program knows
6005UnknownStatusnothe intent holds a status this version does not know
6006InvalidParamsnothe order terms are inconsistent
6007AmountMismatchnothe amounts do not match what the intent escrows
6008InsufficientOutputyesthe fill pays less than the intent requires right now
6009InvalidTransitionnothe intent is not in a state that allows this
6010IntentExpirednothe intent has expired and can no longer be filled
6011NotExpiredyesthe intent has not expired yet
6012NonceUsednothis nonce is already used
6013NonceOutOfWindownothis nonce is outside the owner's 256-nonce window or inside the agent nonce lanes
6014NonceRegressionnothe nonce base can only move forward
6015Unauthorizednoa signer or a named account does not match the one recorded on-chain (owner, rent payer, mandate agent, admin, guardian or upgrade authority)
6016CreatePausedyescreating intents is paused by the guardian or admin
6017KindDisablednothis intent kind is not enabled
6018UnknownKindBitsnothe kind mask names kinds the program does not know
6019InvalidPauseFlagsnothe pause flags are empty or name pauses the program does not know
6020FeeTooHighnothe configured fee exceeds the program's maximum
6021NotPendingAdminnoonly the proposed admin can accept the admin role
6022ExpiryNotInFuturenothe expiry must be later than the current chain time
6023SameMintnothe input and output mints must differ
6024MintNotAllowednothis mint cannot be used: it has a token extension the program refuses
6025RefundNotCanonicalnorefunds go only to the owner's canonical token account
6026ReceiverNotAllowednothe receiver account is not owned by the named receiver authority, the authority is an engine account, or (for a mandate) the receiver is not an account the owner controls
6027AuctionOutlivesExpirynothe dutch auction must end at or before the intent expires
6028FillPausedyesfills are paused by the guardian or admin, and with them new claims and stand-by joins
6029FeeAccountNotCanonicalnoa fee must go to its payee's canonical token account (the treasury's, the agent's or the judge's)
6030FeeAccountMissingnoa fee account was not passed: the treasury's, agent's or judge's at fill, or the relayer's at a signed create
6031SolverOutputNotAllowednothe solver's output account is not acceptable for this fill
6032SigProgramnothe signature instruction must come from the Ed25519 program
6033SigHeadernothe Ed25519 instruction is malformed
6034SigPubkeynothe signature was made by a different key than the owner
6035SigMessagenothe signed message does not match this intent
6036KindMismatchnothe instruction does not match the intent's kind
6037ResultOutOfBoundsnothe attested result is outside the intent's bounds
6038SigMissingnothe Ed25519 signature instruction is missing
6039InvalidDomainnothe config domain must not be zero
6040SignatureExpirednothe signed intent passed its submit-by time
6041FlashCpinoa flash fill cannot be started from inside another program
6042FlashEndProgramnothe flash fill must end with this program's end_fill
6043FlashEndDiscriminatornothe flash fill's closing instruction is not end_fill
6044FlashEndIntentnothe flash fill ends a different intent than it began
6045FlashEndOrdernothe flash fill's begin and end are out of order
6046ReceiverCannotReceivenothe receiver token account cannot receive: frozen, closed, not initialized, for another mint or owner, or with an extension other than ImmutableOwner
6047RefundCannotReceivenothe refund account cannot take the refund: frozen, for another mint or owner, or with a foreign delegate, close authority or extension
6048FeeAboveBoundnothe current fees exceed the bound the solver accepted
6049ExtTooLongnothe extension data is too long
6050ExtMalformednothe extension data is malformed: badly encoded, tags unsorted or repeated, or a partner with a zero key or zero bps
6051ExtUnknownnothe extension data holds a field the program does not know
6052FlagsUnknownnothe intent flags name options the program does not know
6053FillKindDisablednothe admin stopped fills of this kind, and with them new claims and stand-by joins
6054UnsupportedVersionnoan account has a version this program does not support
6055AmountInMismatchnothe fill must sell exactly the intent's remaining amount
6056EpochRegressionnothe signing epoch can only move forward
6057TreasuryMismatchnothe treasury account must be the configured fee recipient
6058CrankBountyTooHighnothe crank bounty exceeds the program's maximum
6059CreateFeeTooHighnothe create fee exceeds the program's maximum
6060PartnerCutTooHighnothe partner cut must be at most 10000 bps
6061PartnerFeeTooHighnoa partner fee can be at most 100 bps
6062PartnerAccountMissingyesthe partner has no token account for the input mint yet
6063PartnerAccountNotCanonicalnothe partner fee must go to the partner's canonical token account
6064MandateInvalidnothe mandate's terms are unsound: kinds must be swap, limit or dutch
6065MandateExpirednothe mandate has expired
6066MandateKindnothe mandate does not allow this kind of intent
6067MandateTtlnothe intent lives longer than the mandate allows
6068MandateCapnothe intent draws more than the mandate's per-intent cap (amount sold plus agent fee)
6069MandateBudgetnothe mandate's total budget would be exceeded
6070MandateCountnothe mandate has already created as many intents as it allows
6071MandatePricenothe minimum output is below the price floor the owner set
6072MandateRevokednothis mandate no longer stands: the owner revoked it, granted that id again, or advanced their signing epoch
6073MandateMismatchnothe intent differs from the mandate's fixed terms: same mints, no flags, the owner's partner only, and proceeds to an account the owner holds
6074CreateCostAboveCeilingyesthe engine's create fee or crank bounty rose above what this transaction allows
6075NonceJumpTooLargenoone advance may move the nonce base at most 2^32 past its current value and never into the agent nonce lanes
6076EpochJumpTooLargenoone advance may raise the signing epoch at most 2^48
6077NotAProofnothe collaborative split settles only a proof intent that commits a spec hash
6078SplitCountMismatchnothe recipient wallets, their weights, and the passed token accounts must be equal in number and within the engine's recipient cap
6079RecipientNotCanonicalnoeach split recipient account must be the recipient wallet's canonical associated token account for the input mint
6080SplitNotConservednothe split left lamports in the escrow
6081MintCapMissingnothis create or exit did not pass the input mint's cap account, which the engine needs when it requires caps and whenever escrow it counted leaves
6082MintCapMismatchnothe account passed as the mint cap is not the engine's writable cap account for the input mint
6083MintCapPerOrdernothe amount escrowed exceeds the per-order cap the engine set for the input mint
6084MintCapWindowyesintents selling this mint have used the engine's escrow cap for the current window
6085MintCapInvalidnoa mint cap needs a per-order cap above zero, a window cap at least the per-order cap, and a window of at least 60 seconds
6086CommitteeInvalidnoa committee needs 1 to 8 distinct members in ascending order, a threshold from 1 to its member count, a fee wallet, and an address that is the hash of exactly those terms
6087CommitteeSignersnothe votes name fewer members than the committee's threshold, or a member it does not have
6088CommitteeMismatchnothe committee passed is not the judge the escrow names
6089ClaimTermsnoa claim's terms are out of bounds: at most 7 days and 100 SOL of stake, and a claim cannot run past the escrow's expiry
6090ClaimHeldyesanother worker holds this job's claim
6091ClaimsMissingnothis escrow takes claims, so a release or cancel must pass its claims board
6092ClaimsOpennothis escrow already takes claims
6093NotClaimantnoonly the worker holding the claim can drop it
6094StakeAccountMismatchnothe stake goes to the claimant when it is paid, otherwise to the escrow's owner
6095ProfileInvalidnoa profile needs 1 to 8 distinct lowercase skill tags of at most 16 letters, digits or dashes, an https endpoint of at most 128 printable characters, and a document url only together with its sha256
6096ClaimCooldownyesthis worker dropped its claim on the job and may claim it again once that claim would have ended
6097ReleaseCannotSettlenothe judge fee leaves less of the escrow than the rounded-up protocol and partner fees, so no release could pay
6098LineWaitingyesworkers stand by for this job, so it goes to them in line order and cannot be claimed directly
6099LineEmptynonobody stands by for this job, so no line is left to advance
6100JobNotHeldnonobody holds this job and nobody stands by, so claim it instead of standing by
6101LineEntryMismatchnoa line entry passed is not the line's next one, or a drop or advance passed none while workers wait
6102MintCapTotalyesintents selling this mint already hold the engine's total escrow limit for it
6103CommitteeRequirednothis escrow reaches the committee floor the engine sets for its token, so its attestor must be a committee of at least 2 judges, passed with the create
6104CommitteeFloorsFullnothe engine already keeps a committee floor for as many tokens as it can
6105AccountOutdatednoan account has an earlier layout or version than this program reads
6106NotLegacynoclose-legacy closes only accounts of an earlier layout or version, and this one is current
6107LegacyPayeeMismatchnoclose-legacy pays the wallet the account's layout records as its payer, or the config's fee recipient when it records none
6108LegacyVaultOpennoclose-legacy closes an intent only once its vault is gone
6109LegacyMigratesnoclose-legacy never closes a config or user state
6110AlreadyCurrentnomigrate rewrites only accounts of an earlier layout or version, and this one is current
6111UnknownLayoutnomigrate reads only the layouts earlier programs wrote
6112ConfigMissingnomigrating an open escrow reads the fee schedule from the config
6113LegacyLineOpennoclose-legacy never closes a claim board or stand-by entry of an open escrow, so the line keeps its order
6114ClaimListInvalidnoa claim list names 1 to 32 distinct wallets, none of them the empty address, and never more than the size its owner set
6115ClaimListIncompleteyesthe owner has not yet added every wallet its claim list names, so nobody can claim or stand by until the list is complete
6116NotListednothe escrow's owner named the wallets that may claim it, and this wallet is not one of them
6117ClaimListMissingnothis escrow's claims board records a claim list, so a claim, stand-by or closing settle must pass it
6118ClaimListSetnothis escrow's claim list is already set, and a set list never changes