{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["source-link","tx-example","amendment-disclaimer","admonition"]},"type":"markdown"},"seo":{"title":"EscrowFinish","siteUrl":"https://opensource.ripple.com","meta":[{"name":"google-site-verification","content":"bLwyBi1imklcIuQxZ7JeI_kRF5Mg7yfr6arpEQV2nsE"}],"description":"Deliver escrowed funds to the intended recipient."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"escrowfinish","__idx":0},"children":["EscrowFinish"]},{"$$mdtype":"Tag","name":"SourceLink","attributes":{"path":"src/libxrpl/tx/transactors/escrow/EscrowFinish.cpp","xrpld_release":"release/3.4.x"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Deliver funds from an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/payment-types/escrow.md"},"children":["escrow"]}," to the recipient."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"example-escrowfinish-json","__idx":1},"children":["Example ","EscrowFinish"," JSON"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n    \"Account\": \"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn\",\n    \"TransactionType\": \"EscrowFinish\",\n    \"Owner\": \"rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn\",\n    \"OfferSequence\": 7,\n    \"Condition\": \"A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100\",\n    \"Fulfillment\": \"A0028000\"\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"TxExample","attributes":{"txid":"317081AF188CDD4DBE55C418F41A90EC3B959CDB3B76105E0CBE6B7A0F56C5F7","server":""},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"escrowfinish-fields","__idx":2},"children":["EscrowFinish"," Fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/transactions/common-fields"},"children":["common fields"]},", ","EscrowFinish"," transactions use the following fields:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"JSON Type"},"children":["JSON Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Internal Type"},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/binary-format/"},"children":["Internal Type"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Required?"},"children":["Required?"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Owner"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String - ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/data-types/basic-data-types#addresses"},"children":["Address"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["AccountID"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The source account that funded the escrow."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OfferSequence"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["UInt32"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Transaction sequence of ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/references/escrowcreate"},"children":["EscrowCreate transaction"]}," that created the escrow to finish."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Condition"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String - Hexadecimal"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Blob"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The (previously-supplied) ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://tools.ietf.org/html/draft-thomas-crypto-conditions-02#section-8.1"},"children":["PREIMAGE-SHA-256 crypto-condition"]}," of the escrow."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CredentialIDs"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Array of Strings"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Vector256"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Set of Credentials to authorize a deposit made by this transaction. Each member of the array must be the ledger entry ID of a Credential entry in the ledger. For details, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/transactions/types/payment#credential-ids"},"children":["Credential IDs"]},". ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"Credentials","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Fulfillment"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String - Hexadecmial"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Blob"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://tools.ietf.org/html/draft-thomas-crypto-conditions-02#section-8.1.4"},"children":["PREIMAGE-SHA-256 crypto-condition fulfillment"]}," matching the escrow's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Condition"]},". If present, must not be empty."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Gas"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Number"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["UInt32"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["No"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The maximum amount of gas that this transaction can use to execute the escrow's smart function, if it has one. Required if the escrow has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Bytecode"]}," field; must be omitted otherwise. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Any account may submit an EscrowFinish transaction."]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the escrow has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishAfter"]}," time, you cannot execute it before this time. Specifically, if the corresponding ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/references/escrowcreate"},"children":["EscrowCreate transaction"]}," specified a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FinishAfter"]}," time that is after the close time of the most recently-closed ledger, the EscrowFinish transaction fails."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the escrow has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Condition"]},", you cannot execute it unless you provide a matching ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Fulfillment"]}," for the condition."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the escrow has a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Bytecode"]}," with a smart function, the smart function must return success for the escrow to execute. If the smart function does not return success, the transaction fails with moving funds, but can modify the escrow entry's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Data"]}," field. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You cannot execute an escrow after it has expired. Specifically, if the corresponding ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/references/escrowcreate"},"children":["EscrowCreate transaction"]}," specified a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["CancelAfter"]}," time that is before the close time of the most recently-closed ledger, the EscrowFinish transaction fails."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Note"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["On ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/networks-and-servers/parallel-networks.md"},"children":["test networks"]}," created before ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rippled"]}," version 1.6.0 (released in 2017), it may be possible ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/accounts/deleting-accounts"},"children":["to delete"]}," the destination account of a pending escrow. In this case, an attempt to finish the escrow fails with the result ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_TARGET"]},", but the escrow remains unless it has expired normally. If another payment re-creates the destination account, the escrow can be finished successfully. The destination account of an escrow can only be deleted if the escrow was created before the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/resources/known-amendments#fix1523"},"children":["fix1523 amendment"]}," became enabled. No such escrows exist on the XRP Ledger Mainnet, so this edge case is not possible on Mainnet or any test networks created using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["rippled"]}," version 1.6.0 or later."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"special-transaction-cost","__idx":3},"children":["Special Transaction Cost"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The minimum ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/transactions/transaction-cost"},"children":["transaction cost"]}," to submit an EscrowFinish transaction increases if it contains a fulfillment. If the transaction has no fulfillment, the transaction cost is the standard ledger base fee, typically 10 drops. If the transaction contains a fulfillment, the transaction cost is 330 ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/data-types/basic-data-types#specifying-currency-amounts"},"children":["drops of XRP"]}," plus another 10 drops for every 16 bytes in size of the preimage. If the validators vote to increase or lower the base fee, the cost per 16 bytes is adjusted accordingly. The exact formula is:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"(32 + ceiling(preimage_size ÷ 16)) × base_fee\n"},"children":[]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["base_fee"]}," is the base transaction fee (typically 10 drops)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["preimage_size"]}," is the size of the fulfillment in bytes"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ceiling"]}," is the ceiling function, meaning to round up to the nearest integer"]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"smart-escrow-metadata","__idx":4},"children":["Smart Escrow Metadata"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the escrow to be finished contains a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/concepts/programmability"},"children":["smart function"]},", the EscrowFinish transaction's ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/transactions/metadata"},"children":["metadata"]}," includes the following additional fields:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Field"},"children":["Field"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"JSON Type"},"children":["JSON Type"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Internal Type"},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/binary-format/"},"children":["Internal Type"]}]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GasUsed"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UInt32"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The amount of gas actually used in executing the smart function. This affects the amount of XRP burned by the transaction sender."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["VMReturnCode"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Number"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Int32"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The return code from the smart function."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-cases","__idx":5},"children":["Error Cases"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Besides errors that can occur for all transactions, ","EscrowFinish"," transactions can result in the following ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/references/protocol/transactions/transaction-results/"},"children":["transaction result codes"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Error Code"},"children":["Error Code"]},{"$$mdtype":"Tag","name":"th","attributes":{"align":"left","data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecBYTECODE_REJECTED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The escrow's smart function did not return success. It may have returned ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," or a negative value, or thrown an error. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecCRYPTOCONDITION_ERROR"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The crypto-condition check failed. This can happen when: ",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The fulfillment did not match the escrow's crypto-condition."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The transaction specified a fulfillment but the escrow doesn't have a crypto-condition."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The crypto-condition specified in the transaction doesn't match the one in the escrow entry."]}]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecFROZEN"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The destination's trust line for the escrowed trust line token is deep frozen. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecINSUFFICIENT_RESERVE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Unable to create a trust line or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPToken"]}," entry due to lack of reserves. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecLOCKED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The destination's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPToken"]}," entry for the escrowed MPT is locked. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_AUTH"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Authorization requirements were not met. For example, the issuer requires authorization and the destination is not authorized. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_DST"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The escrow's destination account does not exist."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_ENTRY"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The destination account does not have an ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPToken"]}," entry to hold the escrowed MPT. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_LINE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The destination account does not have a trust line to hold the escrowed trust line token. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_PERMISSION"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The time-based conditions to finish the escrow haven't been met or the escrow is expired. Alternatively, the escrow's destination requires ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/accounts/depositauth"},"children":["Deposit Authorization"]}," and this transaction was not sent by the destination account nor authorized with the appropriate preauthorization or ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://xrpl.org/docs/concepts/decentralized-storage/credentials"},"children":["credentials"]},". ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"Credentials","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecNO_TARGET"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The specified escrow does not exist."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecOBJECT_NOT_FOUND"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The MPT issuance does not exist for the escrowed MPT. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"TokenEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tefNO_BYTECODE"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The transaction specified a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Gas"]}," field but the escrow does not have a smart function. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tefBYTECODE_NOT_INCLUDED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The transaction did not specify a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Gas"]}," field, but escrow has a smart function so it requires gas to run. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temBAD_LIMIT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Gas"]}," field of the transaction is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0"]}," or is larger than the network's current gas limit. ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temTEMP_DISABLED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Smart functions have been temporarily disabled by ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/concepts/fee-voting"},"children":["fee voting"]},". ",{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"SmartEscrow","compact":false,"statusOnly":false,"mode":""},"children":[]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"see-also","__idx":6},"children":["See Also"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/xls-100-smart-escrows/references/escrow-entry"},"children":["Escrow entry"]}]}]}]},"headings":[{"value":"EscrowFinish","id":"escrowfinish","depth":1},{"value":"Example EscrowFinish JSON","id":"example-escrowfinish-json","depth":2},{"value":"EscrowFinish Fields","id":"escrowfinish-fields","depth":2},{"value":"Special Transaction Cost","id":"special-transaction-cost","depth":2},{"value":"Smart Escrow Metadata","id":"smart-escrow-metadata","depth":2},{"value":"Error Cases","id":"error-cases","depth":2},{"value":"See Also","id":"see-also","depth":2}],"frontmatter":{"seo":{"description":"Deliver escrowed funds to the intended recipient.","title":"EscrowFinish"},"labels":["Escrow","Payments"],"txIcon":"finish","requiredAmendment":"Escrow"},"editPage":{"to":"https://github.com/ripple/opensource.ripple.com/tree/main/docs/xls-100-smart-escrows/references/escrowfinish.md"},"lastModified":"2026-10-02T22:02:37.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/xls-100-smart-escrows/references/escrowfinish","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}