Skip to main content

Errors

API error codes​

CodeMeaning
INVALID_REQUESTMissing or malformed field, or no account on the needed chain
UNAUTHORIZEDNo valid session, or the quote belongs to another account
INSUFFICIENT_LIQUIDITYReserve larger than available capacity
DIRECTION_NOT_OFFEREDNo pool sells that direction
STRIKE_TOO_CLOSEStrike nearer spot than the pool allows
INVALID_TENORTenor outside 1 to 365 days
TENOR_DISABLEDNo accepting pool offers the tenor and structure
INVALID_CAPLimit (cap) missing, out of range, or does not match the open-cover rule
INVALID_STRIKEStrike on the wrong side of spot or outside 0.5× to 2×; a strike sent as a rate that today's rate has moved past; or strikeDistanceBps with more than 2 decimals
STRUCTURE_NOT_OFFEREDPool does not sell that structure
QUOTE_EXPIREDOlder than 120 s, or spot moved while pricing
QUOTE_USEDNonce already consumed
QUOTE_INVALIDSignature or terms do not verify
SLIPPAGE_EXCEEDEDCost above max_cost, or past deadline
ORACLE_NOT_READYNo live rate, or no agreed settlement rate yet
ORACLE_PRICE_REJECTEDAgreed rate failed the pool's checks
POSITION_SETTLEDAlready settled
NOTHING_TO_CLAIMNo payout, or already claimed
WITHDRAWAL_NOT_READYRequest cannot be executed yet
POOL_NOT_FOUNDUnknown pool
POOL_NOT_ACCEPTINGPool not selling, or closed to outside deposits
CHAIN_NOT_ENABLEDChain or feature not enabled on this deployment
CHAIN_DRAININGChain only settles existing business
ROUTING_FAILED, NO_ROUTE, DESTINATION_FUNDS_MISSINGFunding route problems
INSUFFICIENT_BALANCENot enough USDC
TRANSACTION_REJECTEDThe network rejected the transaction
PAUSEDProtocol paused for new business
UNKNOWNUnexpected error; retry with backoff

Business account error codes​

Returned by /api/organisations as { error: { code, message } }.

CodeMeaning
NOT_OFFEREDBusiness accounts are not available on this deployment
NO_PASSKEYThe user must create their wallet passkey first
TOO_MANY_ORGANISATIONSThe user has created the most business accounts allowed
NOT_A_MEMBER, NOT_ALLOWEDNot an active member, or the member's role does not allow this
BAD_EMAIL, BAD_ROLE, BAD_NAMEInvalid invitation or name
ALREADY_MEMBER, PASSKEY_IN_USEThe person, or their passkey, already belongs to the business
BAD_INVITE, INVITE_EXPIRED, WRONG_ACCOUNTThe invitation is used, withdrawn, expired, or for a different email
LAST_ADMINThe change would leave the business without an admin
CHANGE_IN_PROGRESSAnother member change is still being approved
NOT_CONFIRMEDThe chain does not show the change yet; confirm again shortly
NOT_DEPLOYED, DEPLOY_FAILEDThe business account is not set up yet, or setting it up failed

Transfer allow-list policy errors​

#NameRaised when
4100NotInstalledThe account or rule has no allow-list
4101AlreadyInstalledThe allow-list is already installed on that rule
4102NoRecipientsThe list is empty
4103TooManyRecipientsMore than 10 recipients
4104OnlyCallContractAllowedInstalled on a rule not scoped to one contract
4105NoAuthenticatedSignerNone of the rule's signers signed
4106NotATransferAny token function other than transfer, including approve
4107WrongSenderThe transfer is not from the business account
4108RecipientNotAllowedThe recipient is not on the list
4109NegativeAmountThe amount is negative
4110DuplicateRecipientA recipient appears twice
4111WrongContractThe call is to a different contract than the rule's

Currency pool contract errors​

#NameRaised when
1AlreadyInitializedinitialize called twice
2NotInitializedContract not initialised
3UnauthorizedCaller lacks the role
4InvalidTermsStrike, limit, spot or fair rate out of bounds; structure rules
5InvalidAmountBelow 10 USDC, or no tenors at creation
6PoolNotFound
7PositionNotFound
8PausedPool creation, deposit or purchase while paused
9PoolNotAcceptingPool not selling
10TenorNotOfferedTenor missing or inactive
11TenorInvalidTenor outside 1 to 365, or preference above 365
12MarkupOutOfRangeMarkup outside 9,000 to 50,000 bps
13MaxTenorsReachedMore than 16 tenors
14StructureNotOfferedPool does not sell the structure
15CapOutOfBoundsLimit outside the pool's distance range (limited cover)
16OpenCapMismatchOpen-cover limit does not equal open_cap(...)
17InsufficientCapacityBackers' free money smaller than the reserve
18SlippageExceededPast deadline, or total above max_cost
19QuoteExpiredQuote older than 120 s or dated in the future
20QuoteReusedNonce already used
21NotReadySettling before expiry, or no consensus yet
22InvalidOracleConsensus expiry mismatch, or rate outside 0.5× to 2× spot
23AlreadySettledPosition not active
24NotClaimablePosition not settled
25NothingToClaimZero payout, or nothing to withdraw
26NotEnoughSharesWithdrawal above available free money, or no account
27RequestClosedWithdrawal already executed or cancelled
28NoticeNotOverWithdrawal not yet unlocked
29SettlementPendingNot raised by the current code
30CapitalReservedRequested amount no longer free
31PoolHasNoValueNot raised by the current code
32ExternalLpClosedOutside deposits not allowed
33PairNotEnabledPair not enabled for new pools
34ArithmeticOverflow or invalid arithmetic
35RequestNotFoundUnknown withdrawal request
36OraclePolicyTooLooseOracle quorum, tolerance, freshness or cooldown weaker than required
37DirectionNotOfferedPool sells the other direction
38StrikeTooCloseStrike nearer spot than the pool's minimum
39TooManyLpsPool already has 50 underwriters

Oracle contract errors​

#NameRaised when
1AlreadyInitialized
2NotInitialized
3UnauthorizedNot the owner
4InvalidOracleSetToo few or too many operators, or a removal would leave fewer than the quorum
5OracleAlreadyRegistered
6OracleNotRegisteredSubmitter not registered
7InvalidQuorumQuorum below 2 or above operator count
8InvalidToleranceTolerance above the maximum, or zero freshness window
9InvalidEventId 0, or expiry differs from the first submission's
10InvalidPriceZero price
11AlreadyResolvedConsensus already recorded
12CooldownActiveSame operator within the cooldown
13TooEarlyBefore expiry