Last updated
Edit

tem Codes

These codes indicate that the transaction was malformed, and cannot succeed according to the XRP Ledger protocol. They have numerical values in the range -299 to -200. The exact code for any given error is subject to change, so don't rely on it.

Tip
Transactions with tem codes are not applied to ledgers, and cannot cause any changes to XRP Ledger state. A tem result is final unless the rules for a valid transaction change. (For example, using functionality from an Amendment before that amendment is enabled results in temDISABLED; such a transaction could succeed later if it becomes valid when the amendment is enabled.)

CodeExplanation
temBAD_AMM_TOKENSThe transaction incorrectly specified one or more assets. For example, the asset's issuer does not match the corresponding asset in the AMM's pool, or the transaction specified the same asset twice. (Added by the AMM amendment)
temBAD_AMOUNTAn amount specified by the transaction (for example the destination Amount or SendMax values of a Payment) was invalid, possibly because it was a negative number.
temBAD_AUTH_MASTERThe key used to sign this transaction does not match the master key for the account sending it, and the account does not have a Regular Key set.
temBAD_CURRENCYThe transaction improperly specified a currency field. See Specifying Currency Amounts for the correct format.
temBAD_EXPIRATIONThe transaction improperly specified an expiration value, for example as part of an OfferCreate transaction. Alternatively, the transaction did not specify a required expiration value, for example as part of an EscrowCreate transaction.
temBAD_FEEThe transaction improperly specified its Fee value, for example by listing a non-XRP currency or some negative amount of XRP.
temBAD_ISSUERThe transaction improperly specified the issuer field of some currency included in the request.
temBAD_LIMITThe TrustSet transaction improperly specified the LimitAmount value of a trust line.
temBAD_NFTOKEN_TRANSFER_FEEThe NFTokenMint transaction improperly specified the TransferFee field of the transaction. (Added by the NonFungibleTokensV1_1 amendment.)
temBAD_OFFERThe OfferCreate transaction specifies an invalid offer, such as offering to trade XRP for itself, or offering a negative amount.
temBAD_PATHThe Payment transaction specifies one or more Paths improperly, for example including an issuer for XRP, or specifying an account differently.
temBAD_PATH_LOOPOne of the Paths in the Payment transaction was flagged as a loop, so it cannot be processed in a bounded amount of time.
temBAD_SEND_XRP_LIMITThe Payment transaction used the tfLimitQuality flag in a direct XRP-to-XRP payment, even though XRP-to-XRP payments do not involve any conversions.
temBAD_SEND_XRP_MAXThe Payment transaction included a SendMax field in a direct XRP-to-XRP payment, even though sending XRP should never require SendMax. (XRP is only valid in SendMax if the destination Amount is not XRP.)
temBAD_SEND_XRP_NO_DIRECTThe Payment transaction used the tfNoDirectRipple flag for a direct XRP-to-XRP payment, even though XRP-to-XRP payments are always direct.
temBAD_SEND_XRP_PARTIALThe Payment transaction used the tfPartialPayment flag for a direct XRP-to-XRP payment, even though XRP-to-XRP payments should always deliver the full amount.
temBAD_SEND_XRP_PATHSThe Payment transaction included Paths while sending XRP, even though XRP-to-XRP payments should always be direct.
temBAD_SEQUENCEThe transaction is references a sequence number that is higher than its own Sequence number, for example trying to cancel an offer that would have to be placed after the transaction that cancels it.
temBAD_SIGNATUREThe signature to authorize this transaction is either missing, or formed in a way that is not a properly-formed signature. (See tecNO_PERMISSION for the case where the signature is properly formed, but not authorized for this account.)
temBAD_SRC_ACCOUNTThe Account on whose behalf this transaction is being sent (the "source account") is not a properly-formed account address.
temBAD_TRANSFER_RATEThe TransferRate field of an AccountSet transaction is not properly formatted or out of the acceptable range.
temCANNOT_PREAUTH_SELFThe sender of the DepositPreauth transaction was also specified as the account to preauthorize. You cannot preauthorize yourself.
temDST_IS_SRCThe transaction improperly specified a destination address as the Account sending the transaction. This includes trust lines (where the destination address is the issuer field of LimitAmount) and payment channels (where the destination address is the Destination field).
temDST_NEEDEDThe transaction improperly omitted a destination. This could be the Destination field of a Payment transaction, or the issuer sub-field of the LimitAmount field fo a TrustSet transaction.
temINVALIDThe transaction is otherwise invalid. For example, the transaction ID may not be the right format, the signature may not be formed properly, or something else went wrong in understanding the transaction.
temINVALID_COUNTThe transaction includes a TicketCount field, but the number of Tickets specified is invalid.
temINVALID_FLAGThe transaction includes a Flag that does not exist, or includes a contradictory combination of flags.
temMALFORMEDUnspecified problem with the format of the transaction.
temREDUNDANTThe transaction would do nothing; for example, it is sending a payment directly to the sending account, or creating an offer to buy and sell the same currency from the same issuer.
temREDUNDANT_SEND_MAXRemoved in: rippled 0.28.0
temRIPPLE_EMPTYThe Payment transaction includes an empty Paths field, but paths are necessary to complete this payment.
temBAD_WEIGHTThe SignerListSet transaction includes a SignerWeight that is invalid, for example a zero or negative value.
temBAD_SIGNERThe SignerListSet transaction includes a signer who is invalid. For example, there may be duplicate entries, or the owner of the SignerList may also be a member.
temBAD_QUORUMThe SignerListSet transaction has an invalid SignerQuorum value. Either the value is not greater than zero, or it is more than the sum of all signers in the list.
temUNCERTAINUsed internally only. This code should never be returned.
temUNKNOWNUsed internally only. This code should never be returned.
temDISABLEDThe transaction requires logic that is disabled. Typically this means you are trying to use an amendment that is not enabled for the current ledger.