Skip to main content
Once a request is submitted, execution can still fail during the fill or, if a fill isn’t possible, during the refund. These failures are surfaced as failReason (fill) and refundFailReason (refund) on the request object, distinct from the quote errors returned before a request is ever submitted. This guide outlines the possible fill and refund failure reasons and what each one means.

Fill Errors

failReason explains why a fill did not complete after a request was submitted.

Deposit & Validation Errors

Error CodeDescription
DEPOSIT_CHAIN_MISMATCHFor strict deposit addresses, the deposit landed on a different chain than the one the address was registered for.
INCORRECT_DEPOSIT_CURRENCYFor strict deposit addresses, the token received doesn’t match the currency quoted for this request.
DOUBLE_SPENDA second deposit was detected at an address whose first deposit was already processed.
DEPOSITED_AMOUNT_TOO_LOW_TO_FILLThe amount deposited is less than the quoted amount needed to complete the swap.
ORIGIN_CURRENCY_MISMATCHThe currency detected on origin doesn’t match the origin currency specified in the request.
TTL_EXPIREDThe request’s time-to-live window passed before it could be filled.
DEPOSIT_CONFIRMATION_TIMEOUTThe deposit transaction wasn’t confirmed within the expected window, so the request timed out and was routed to a refund.
DEPOSIT_REORGEDThe deposit transaction was removed from the canonical chain by a block reorganization, so the request was failed.
ORPHANED_DEPOSIT_REFUNDA deposit at a deposit address couldn’t be matched to a fillable request, so the funds were refunded to the depositor.
BLOCKED_WALLETAn address associated with the request was flagged by wallet screening at fill time, so the fill was blocked. Funds are not automatically refunded and are subject to compliance review.

Solver Capacity & Balance Errors

Error CodeDescription
SOLVER_CAPACITY_EXCEEDEDThe solver’s available capacity for this route has been exceeded.
SOLVER_BALANCE_TOO_LOWThe solver doesn’t have enough native tokens or balance to construct the fill transaction.
SPONSOR_BALANCE_TOO_LOWThe sponsor covering transaction fees doesn’t have sufficient balance.
INSUFFICIENT_FUNDS_FOR_RENTThe user’s balance isn’t enough to cover rent/storage fees (Solana).
NEGATIVE_NEW_AMOUNT_AFTER_FEESAfter deducting fees, the resulting amount is zero or negative.
AMOUNT_TOO_LOW_TO_REFUNDThe amount to refund is zero or negative, or below the chain’s minimum transfer threshold, so no refund could be issued.
GASLESS_PERMIT_BALANCE_TOO_LOWThe balance available from a gasless permit wasn’t enough to complete the request, so the funds were refunded.

Swap Routing & Pricing Errors

Error CodeDescription
NO_QUOTESNo liquidity providers returned a valid quote for this swap at fill time.
NO_INTERNAL_SWAP_ROUTES_FOUNDNo internal DEX route was found between the specified currencies on this chain.
SWAP_IMPACT_TOO_HIGHThe swap’s price impact at fill time exceeds the acceptable threshold.
INSUFFICIENT_POOL_LIQUIDITYThe DEX pool doesn’t have enough reserves to complete the swap at any price.
SLIPPAGEThe swap couldn’t complete within the given slippage tolerance.
TOO_LITTLE_RECEIVEDThe onchain swap executed, but the output amount was below the guaranteed minimum.
GENERATE_SWAP_FAILEDGenerating the swap transaction (routing, calldata) failed before execution.
REVERSE_SWAP_FAILEDThe reversal swap used to return funds to the user for a refund failed to execute or quote.

Transaction Construction & Gas Errors

Error CodeDescription
TRANSACTION_TOO_LARGEThe serialized transaction exceeds the maximum payload size for the origin chain or RPC.
SWAP_USES_TOO_MUCH_GASThe swap transaction would consume more gas than a single block allows.
NEW_CALLDATA_INCLUDES_HIGHER_RENT_FEEA refreshed permit increased the rent/storage fee beyond the acceptable limit (Solana).
INVALID_GAS_PRICEThe submitted gas price is outside acceptable bounds.
QUOTED_GAS_LIMIT_EXCEEDEDThe gas limit required at fill time was significantly higher than the gas limit quoted, so the fill was aborted.
JUPITER_INVALID_TOKEN_ACCOUNTThe token account required for the swap doesn’t exist or is invalid (Solana/Jupiter).

Onchain Execution & Revert Errors

Error CodeDescription
EXECUTION_REVERTEDThe swap contract call reverted during execution.
TRANSACTION_REVERTEDThe transaction reverted at the blockchain level.
MISSING_REVERT_DATAThe transaction reverted, but the reason couldn’t be decoded from the returned data.
CONTRACT_PAUSEDThe target contract is currently paused and not accepting calls.
TOKEN_NOT_TRANSFERABLEThe token enforces a non-transferable restriction (for example, a soulbound token).
TRANSFER_FAILEDA token transfer reverted at the contract level.
TRANSFER_FROM_FAILEDTransferring tokens from the user to the contract failed (for example, insufficient allowance).
TRANSFER_AMOUNT_EXCEEDS_ALLOWANCEThe approved allowance is less than the amount being transferred.
TRANSFER_AMOUNT_EXCEEDS_BALANCEThe sender’s token balance is less than the amount being transferred.
INSUFFICIENT_NATIVE_TOKENS_SUPPLIEDThe native token value supplied with the transaction is less than required.
INCORRECT_PAYMENTThe value or amount sent doesn’t match what the swap requires.
ZERO_SELL_AMOUNTThe swap was attempted with a zero input amount.
INVALID_SENDERThe address executing the swap isn’t authorized to do so.
INVALID_SIGNERThe signer on the order doesn’t match the address expected by the contract.
DESTINATION_TOKEN_TRANSFER_REJECTEDA token transfer reverted during the destination-side swap — typically the token itself rejecting the transfer (transfer tax, max wallet/transaction limits, or a blacklist).

Order & Signature Errors

Error CodeDescription
ORDER_EXPIREDThe order’s expiration timestamp passed before it could be executed.
ORDER_IS_CANCELLEDThe order was cancelled onchain before it could be filled.
ORDER_ALREADY_FILLEDThe order was already fully executed and can’t be filled again.
SIGNATURE_EXPIREDThe signature used for token approval expired before execution.
INVALID_SIGNATUREThe provided signature is invalid or doesn’t match the expected signer.
INVALID_NONCEThe nonce provided has already been used or isn’t valid for this signer.
SEAPORT_INEXACT_FRACTIONThe Seaport order specifies a fractional amount that can’t be fulfilled exactly.
SEAPORT_INVALID_FULFILLERThe caller isn’t an authorized fulfiller for this Seaport order.
PROTOCOL_DEADLINE_EXPIREDThe protocol order’s deadline expired before the fill could complete, so a no-fill-or-refund was submitted onchain.

Account Abstraction Errors

Error CodeDescription
ACCOUNT_ABSTRACTION_INVALID_NONCEThe nonce in the account abstraction user operation is invalid or stale.
ACCOUNT_ABSTRACTION_SIGNATURE_ERRORThe account abstraction user operation’s signature is invalid.
ACCOUNT_ABSTRACTION_GAS_LIMITThe gas required for account abstraction verification exceeds the allowed limit.

NFT Minting Errors

Error CodeDescription
MINT_NOT_ACTIVEThe NFT mint phase isn’t currently active.
ERC_1155_TOO_MANY_REQUESTEDThe quantity requested exceeds the contract’s allowed batch size.
MINT_QUANTITY_EXCEEDS_MAX_PER_WALLETThe wallet has already minted the maximum quantity allowed.
MINT_QUANTITY_EXCEEDS_MAX_SUPPLYThe requested quantity would exceed the collection’s maximum supply.

Other

Error CodeDescription
FLUID_DEX_ERRORThe Fluid DEX protocol returned an error during the swap.
MANUAL_ADMIN_REFUNDThe request was manually refunded by the Relay team via an admin action.
UNKNOWNThe fill failed for a reason that didn’t match a known error pattern.
N/AThe fill completed without failure.

Refund Errors

refundFailReason explains why a refund could not be completed after a fill failed. This field defaults to N/A when no refund failure has occurred.
Error CodeDescription
AMOUNT_TOO_LOW_TO_REFUNDThe amount to refund is zero or negative, or below the chain’s minimum transfer threshold, so no refund could be issued.
NEGATIVE_NEW_AMOUNT_AFTER_FEESAfter deducting fees, the resulting amount is zero or negative.
SWAP_CURRENCY_NOT_ON_ORIGINThe swap’s output currency isn’t available to bridge back to the origin chain, so the refund can’t be issued in the original currency.
REFUND_RECIPIENT_IS_VASPThe refund recipient was identified as a Virtual Asset Service Provider (VASP), which requires manual review before the refund can be issued.
N/ANo refund failure has occurred.