{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["source-link","admonition","amendment-disclaimer","tx-example","code-page-name"]},"redocly_category":"Documentation","type":"markdown"},"seo":{"title":"ConfidentialMPTClawback","siteUrl":"https://xrpl.org/","llmstxt":{"hide":false,"title":"XRPL Developer Portal & Documentation","description":"Explore XRP Ledger documentation, blogs, and other blockchain developer resources needed to start building and integrating with the ledger.","details":{"content":"XRP Ledger concepts, use cases, tutorials, references, and other blockchain developer resources. Also, stay up to date with release announcements and more through the XRPL Blog."},"sections":[{"title":"Introduction","description":"A high-level introduction to the XRP Ledger.","includeFiles":["docs/introduction/**/*.*","about/faq.md"],"excludeFiles":["docs/introduction/index.md"]},{"title":"Use Cases","description":"Real-world applications and business scenarios for the XRP Ledger.","includeFiles":["docs/use-cases/**/*.*"],"excludeFiles":["docs/use-cases/index.md","docs/use-cases/defi/index.md"]},{"title":"Agentic Transactions","description":"XRPL AI Starter Kit to help autonomous agents discover, set up, and execute agentic transactions on the XRP Ledger.","includeFiles":["docs/agents/**/*.*"],"excludeFiles":[]},{"title":"Concepts","description":"Core concepts including accounts, tokens, transactions, consensus, and more.","includeFiles":["docs/concepts/**/*.*"],"excludeFiles":["docs/concepts/index.md","docs/concepts/decentralized-storage/index.md","docs/concepts/payment-types/index.md"]},{"title":"Tutorials","description":"Step-by-step guides for building on the XRP Ledger in JavaScript, Python, Go, and more.","includeFiles":["docs/tutorials/**/*.*"],"excludeFiles":[]},{"title":"References","description":"Protocol specification, transaction types, ledger entries, and API methods.","includeFiles":["docs/references/**/*.*"],"excludeFiles":["docs/references/xrp-api.md","docs/references/data-api.md","docs/references/protocol/index.md","docs/references/protocol/ledger-data/ledger-entry-types/index.md","docs/references/protocol/transactions/index.md","docs/references/protocol/transactions/types/index.md","docs/references/http-websocket-apis/api-conventions/index.md","docs/references/http-websocket-apis/public-api-methods/*/index.md","docs/references/http-websocket-apis/admin-api-methods/*/index.md"]},{"title":"Infrastructure","description":"Install, configure, and troubleshoot xrpld and Clio servers.","includeFiles":["docs/infrastructure/**/*.*"],"excludeFiles":["docs/infrastructure/index.md","docs/infrastructure/*/index.md","docs/infrastructure/installation/build-run-xrpld-in-reporting-mode.md","docs/infrastructure/configuration/data-retention/index.md","docs/infrastructure/configuration/server-modes/index.md"]},{"title":"Blog (2023+)","description":"Recent XRPL Blog posts (showing 2023 and newer).","includeFiles":["blog/2023/**/*.*","blog/2024/**/*.*","blog/2025/**/*.*","blog/2026/**/*.*"],"excludeFiles":[]},{"title":"Resources","description":"Developer resources and contribution guidelines.","includeFiles":["resources/**/*.*"],"excludeFiles":["resources/index.md"]}],"excludeFiles":[]},"description":"Claw back a holder's entire confidential balance, removing it from circulation."},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"confidentialmptclawback","__idx":0},"children":["ConfidentialMPTClawback"]},{"$$mdtype":"Tag","name":"SourceLink","attributes":{"path":"src/libxrpl/tx/transactors/token/ConfidentialMPTClawback.cpp","xrpld_release":"release/3.3.x"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Claw back a holder's ",{"$$mdtype":"Tag","name":"em","attributes":{},"children":["entire"]}," confidential balance (inbox and spending), removing it from circulation."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Unlike a regular ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/tokens/fungible-tokens/clawing-back-tokens"},"children":["Clawback"]},", confidential balances are encrypted, so the issuer must provide the plaintext total amount to claw back and a Zero-Knowledge Proof (ZKP) validating the amount."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"danger","name":"Caution"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Issuers should ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["lock"]}," the MPT issuance for the holder before submitting this transaction to ensure state consistency during proof verification. See ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/concepts/tokens/fungible-tokens/confidential-transfers#confidential-clawback"},"children":["Confidential Clawback"]},"."]}]},{"$$mdtype":"Tag","name":"AmendmentDisclaimer","attributes":{"name":"ConfidentialTransfer","compact":false,"statusOnly":false,"mode":""},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"example-confidentialmptclawback-json","__idx":1},"children":["Example ","ConfidentialMPTClawback"," JSON"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"TransactionType\": \"ConfidentialMPTClawback\",\n  \"Account\": \"rDB2bV1SRJcJEvJjhi7H5NUxwRpF4o3Ain\",\n  \"Holder\": \"rhdqgMJT8JwqqBJuYU7cAxD7CGX1DeqC7m\",\n  \"MPTokenIssuanceID\": \"003CE81F85A1B66910DD3571C42D38A9F5A8EF78F3C8E2C0\",\n  \"MPTAmount\": \"10000\",\n  \"ZKProof\": \"E4A57C2D220860067BF61BE8DA18C4A920B90998C4B7D53C0EF0D1EB27D6E7DD51CDC8BA598F60C861C708C629930F8B91704CC9135AB22088C74FBCB888850A\",\n  \"Fee\": \"10\",\n  \"Sequence\": 3991586\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"TxExample","attributes":{"txid":"371BD1CEE530C458E382B476BE303B4BA130293DA24D929CEB000E8363039AFC","server":"devnet"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"confidentialmptclawback-fields","__idx":2},"children":["ConfidentialMPTClawback"," Fields"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In addition to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/references/protocol/transactions/common-fields"},"children":["common fields"]},", ",{"$$mdtype":"Tag","name":"CodePageName","attributes":{"name":"ConfidentialMPTClawback"},"children":[]}," 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":"/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":["Holder"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String"]},{"$$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 account from which funds are being clawed back."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTAmount"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["UInt64"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The plaintext total amount being removed."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTokenIssuanceID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["UInt192"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The unique identifier for the MPT issuance."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ZKProof"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["String"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Blob"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["Yes"]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["A 64-byte compact Clawback sigma proof that proves the issuer's on-ledger balance mirror (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IssuerEncryptedBalance"]},") decrypts to the plaintext total amount (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTAmount"]},") being clawed back."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-cases","__idx":3},"children":["Error Cases"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Besides errors that can occur for all transactions, ",{"$$mdtype":"Tag","name":"CodePageName","attributes":{"name":"ConfidentialMPTClawback"},"children":[]}," transactions can result in the following ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/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":["tecBAD_PROOF"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The Zero-Knowledge Proof verification failed. The proof does not show that the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IssuerEncryptedBalance"]}," (the mirror balance) encrypts the plaintext ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTAmount"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tecINSUFFICIENT_FUNDS"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The issuance's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConfidentialOutstandingAmount"]}," or total ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OutstandingAmount"]}," is less than the requested ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTAmount"]},"."]}]},{"$$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 transaction lacks the required permissions. Common causes include:",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The issuance does not have the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Can Clawback"]}," or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Can Hold Confidential Balance"]}," flag enabled.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The issuance is missing the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IssuerEncryptionKey"]}," field.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The holder's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPToken"]}," is missing the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IssuerEncryptedBalance"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["HolderEncryptionKey"]}," field, meaning the holder never opted in to confidential transfers."]}]},{"$$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 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Holder"]}," account 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 ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTokenIssuance"]}," or the holder's ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPToken"]}," does not exist."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temBAD_AMOUNT"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTAmount"]}," is zero or exceeds the maximum allowable MPT amount."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temDISABLED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ConfidentialTransfer"]}," amendment is not enabled."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["temMALFORMED"]}]},{"$$mdtype":"Tag","name":"td","attributes":{"align":"left"},"children":["The transaction is malformed. Common causes include:",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Account"]}," is not the issuer of the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["MPTokenIssuanceID"]},".",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Account"]}," and the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Holder"]}," are the same.",{"$$mdtype":"Tag","name":"br","attributes":{},"children":[]},"- The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ZKProof"]}," length is not 64 bytes."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"see-also","__idx":4},"children":["See Also"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/references/protocol/ledger-data/ledger-entry-types/mptoken"},"children":["MPToken entry"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/docs/references/protocol/ledger-data/ledger-entry-types/mptokenissuance"},"children":["MPTokenIssuance entry"]}]}]}]},"headings":[{"value":"ConfidentialMPTClawback","id":"confidentialmptclawback","depth":1},{"value":"Example ConfidentialMPTClawback JSON","id":"example-confidentialmptclawback-json","depth":2},{"value":"ConfidentialMPTClawback Fields","id":"confidentialmptclawback-fields","depth":2},{"value":"Error Cases","id":"error-cases","depth":2},{"value":"See Also","id":"see-also","depth":2}],"frontmatter":{"seo":{"description":"Claw back a holder's entire confidential balance, removing it from circulation.","title":"ConfidentialMPTClawback"},"labels":["Multi-Purpose Tokens, MPTs","Tokens","Confidential Transfers"],"requiredAmendment":"ConfidentialTransfer"},"editPage":{"to":"https://github.com/XRPLF/xrpl-dev-portal/tree/master/docs/references/protocol/transactions/types/confidentialmptclawback.md"},"lastModified":"2026-07-31T15:04:33.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/docs/references/protocol/transactions/types/confidentialmptclawback","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}