Last updated
Edit

AccountDelete

[Source]

Added by the DeletableAccounts amendment

An AccountDelete transaction deletes an account and any objects it owns in the XRP Ledger, if possible, sending the account's remaining XRP to a specified destination account. See Deleting Accounts for the requirements to delete an account.

Example AccountDelete JSON

{
    "TransactionType": "AccountDelete",
    "Account": "rWYkbWkCeg8dP6rXALnjgZSjjLyih5NXm",
    "Destination": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe",
    "DestinationTag": 13,
    "Fee": "200000",
    "Sequence": 2470665,
    "Flags": 2147483648
}

Query example transaction. >

AccountDelete Fields

In addition to the common fields, AccountDelete transactions use the following fields:

FieldJSON TypeInternal TypeRequired?Description
DestinationString - AddressAccountIDYesThe address of an account to receive any leftover XRP after deleting the sending account. Must be a funded account in the ledger, and must not be the sending account.
DestinationTagNumberUInt32NoArbitrary destination tag that identifies a hosted recipient or other information for the recipient of the deleted account's leftover XRP.

Special Transaction Cost

As an additional deterrent against ledger spam, the AccountDelete transaction requires a much higher than usual transaction cost: instead of the standard minimum of 0.00001 XRP, AccountDelete must destroy at least the owner reserve amount, currently 0.2 XRP. This discourages excessive creation of new accounts because the reserve requirement cannot be fully recouped by deleting the account.

The transaction cost always applies when a transaction is included in a validated ledger, even if the transaction fails to delete the account. (See Error Cases.) To greatly reduce the chances of paying the high transaction cost if the account cannot be deleted, submit the transaction with fail_hard enabled.

Error Cases

Besides errors that can occur for all transactions, AccountDelete transactions can result in the following transaction result codes:

Error CodeDescription
temDISABLEDOccurs if the DeletableAccounts amendment is not enabled.
temDST_IS_SRCOccurs if the Destination matches the sender of the transaction (Account field).
tecDST_TAG_NEEDEDOccurs if the Destination account requires a destination tag, but the DestinationTag field was not provided.
tecNO_DSTOccurs if the Destination account is not a funded account in the ledger.
tecNO_PERMISSIONOccurs if the Destination account requires deposit authorization and the sender is not preauthorized.
tecTOO_SOONOccurs if the sender's Sequence number is too high. The transaction's Sequence number plus 256 must be less than the current Ledger Index. This prevents replay of old transactions if this account is resurrected after it is deleted.
tecHAS_OBLIGATIONSOccurs if the account to be deleted is connected to objects that cannot be deleted in the ledger. (This includes objects created by other accounts, such as escrows and for example NFT's minted, even if owned by another account.)
tefTOO_BIGOccurs if the sending account is linked to more than 1000 objects in the ledger. The transaction could succeed on retry if some of those objects were deleted separately first.