{"templateId":"markdown","versions":[{"version":"v1.43","label":"v1.43 LTS","link":"/products/custody/accounts-and-assets/blockchains/sui/set-up-api","default":true,"active":true,"folderId":"c15a2701"},{"version":"v1.42","label":"v1.42 STS","link":"/products/custody/v1.42/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.41","label":"v1.41 STS","link":"/products/custody/v1.41/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.34","label":"v1.34 LTS","link":"/products/custody/v1.34/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.26","label":"v1.26 LTS","link":"/products/custody/v1.26/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.19","label":"v1.19 LTS","link":"/products/custody/v1.19/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"},{"version":"v1.15","label":"v1.15 LTS","link":"/products/custody/v1.15/accounts-and-assets/blockchains/sui/set-up-api","default":false,"active":false,"folderId":"c15a2701"}],"sharedDataIds":{"sidebar":"sidebar-products/custody/@v1.15/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["partial"]},"type":"markdown"},"seo":{"title":"Set up Sui with the API","description":"User guides, API reference, and support resources.","siteUrl":"https://docs.ripple.com","lang":"en-US"},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"set-up-sui-with-the-api","__idx":0},"children":["Set up Sui with the API"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To use Sui, add the Sui ledger, allowlist the tokens that you want to send, and create accounts on the ledger. Sui accounts don't need any ledger-specific setup: after you create an account, it can receive and send straight away."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$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":"Prerequisite"},"children":["Prerequisite"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Details"},"children":["Details"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["A Sui node connection"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your Customer Partner Engineer (CPE) sets up the connection between ","Ripple Custody"," and a Sui node. Contact your Ripple liaison to enable Sui."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Ledger accounting refactor phase 2"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Phase 2 is active in your environment. Sui transactions use the refactored processing path. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/support/change-history/v140#ledger-accounting-refactor-phase-2"},"children":["Ledger accounting refactor phase 2"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["New IDs in UUID format"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["An intent ID for each intent, and an account ID for each account."]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"submit-each-intent","__idx":2},"children":["Submit each intent"]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"System change process"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["All new requests to change the system state follow the same process. To familiarize yourself with this process first, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals"},"children":["Manage intents and approvals"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For each intent on this page:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Prepare the request body in the standard intent proposal format, with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["payload"]}," block shown for the step. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/intent-request-structure#user-signed-proposal-request-body"},"children":["User-signed proposal request body"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/intents/intentdryrun"},"children":["Perform a dry run for an intent"]}," operation, with the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["request"]}," field excluded. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#dry-run-an-intent-with-the-api"},"children":["Dry run an intent with the API"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sign the request body and call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/intents/createintent"},"children":["Propose an intent"]}," operation. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#submit-an-intent-with-the-api"},"children":["Submit an intent with the API"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Check the intent status. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/governance/intents/manage-intents-and-approvals#check-state-with-the-api"},"children":["Check state with the API"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"add-the-sui-ledger","__idx":3},"children":["Add the Sui ledger"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Add each Sui network that you use as a ledger with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_CreateLedger"]}," intent. You can submit this intent only in the root domain."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"id\": \"sui\",\n    \"alias\": \"Sui\",\n    \"parameters\": {\n      \"type\": \"Sui\",\n      \"nativeTickerName\": \"Sui\",\n      \"nativeTickerSymbol\": \"SUI\"\n    },\n    \"description\": null,\n    \"customProperties\": {},\n    \"type\": \"v0_CreateLedger\"\n  }\n}\n","lang":"json"},"children":[]},{"$$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":"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":["id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The ledger ID, which you choose, as for other ledgers. The standard payloads use ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sui"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sui-testnet"]},". For the payloads, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/dynamic-ledgers-payloads"},"children":["Dynamic ledger payloads"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Sui"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.nativeTickerName"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The display name of the native currency."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["parameters.nativeTickerSymbol"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The symbol of the native currency."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For more information about adding ledgers, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/dynamic-ledgers"},"children":["Dynamic ledgers"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"allowlist-sui-coins","__idx":4},"children":["Allowlist Sui coins"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Ripple Custody"," creates a token automatically the first time one of your addresses receives a coin type that it doesn't know yet. It reads the symbol, decimals, and coin type from the coin's on-chain metadata. To send the token, allowlist it first. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/tokenization/token-management/api/allowlist-token"},"children":["Allowlist tokens"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can also allowlist a Sui coin before you receive it, with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_ValidateTickers"]}," intent. Set ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledgerDetails.properties.type"]}," to ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Coin"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["coinType"]}," to the coin's type tag. This example allowlists Circle USDC on Sui mainnet:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"tickers\": [\n      {\n        \"id\": \"4c2e8a1f-6b3d-4f9e-a5c7-2d8b1e4f7a3c\",\n        \"ledgerId\": \"sui\",\n        \"kind\": \"Token\",\n        \"name\": \"USDC\",\n        \"symbol\": \"USDC\",\n        \"decimals\": 6,\n        \"ledgerDetails\": {\n          \"type\": \"Sui\",\n          \"properties\": {\n            \"type\": \"Coin\",\n            \"coinType\": \"0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC\"\n          }\n        },\n        \"lock\": \"Unlocked\",\n        \"customProperties\": {}\n      }\n    ],\n    \"type\": \"v0_ValidateTickers\"\n  }\n}\n","lang":"json"},"children":[]},{"$$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":"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":["tickers[].decimals"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The coin's decimals, from its on-chain metadata."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Sui"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.properties.type"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Native"]}," for SUI. ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Coin"]}," for any other Sui coin."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tickers[].ledgerDetails.properties.coinType"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Coin"]}," only. The coin's Move type tag, in the form ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["0x<package>::<module>::<name>"]},", without generic type parameters."]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get each coin's type tag and decimals from its issuer or from a Sui explorer. Enter the type tag exactly. A wrong type tag registers a different coin."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"create-an-account","__idx":5},"children":["Create an account"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Create a Sui account with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["v0_CreateAccount"]}," intent, and include your Sui ledger ID in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledgerIds"]},". ","Ripple Custody"," derives the account's Ed25519 key in your vault, and the Sui address from its public key."]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"payload\": {\n    \"id\": \"6e1b9d4f-2a7c-4e8b-b3f5-9c1d7a4e2b6f\",\n    \"alias\": \"sui-treasury-01\",\n    \"providerDetails\": {\n      \"vaultId\": \"0b9e4d2f-6a1c-4e7b-8d3f-5c9a1e7b3d6f\",\n      \"keyStrategy\": \"VaultHard\",\n      \"type\": \"Vault\"\n    },\n    \"ledgerIds\": [\"sui\"],\n    \"lock\": \"Unlocked\",\n    \"description\": \"Sui treasury account\",\n    \"customProperties\": {},\n    \"type\": \"v0_CreateAccount\"\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To get the account's Sui address, call the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/reference/api/openapi/accounts/getlatestaddress"},"children":["Retrieve latest external address"]}," operation, with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["ledgerId"]}," set to your Sui ledger ID. For more information about accounts, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/accounts/manage-accounts-api"},"children":["Manage accounts with the API"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":6},"children":["Next steps"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Share the address with your counterparties, and start to send and receive. For more information, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/custody/accounts-and-assets/blockchains/sui/send-and-receive-api"},"children":["Send and receive Sui assets with the API"]},"."]}]},"headings":[{"value":"Set up Sui with the API","id":"set-up-sui-with-the-api","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Submit each intent","id":"submit-each-intent","depth":2},{"value":"Add the Sui ledger","id":"add-the-sui-ledger","depth":2},{"value":"Allowlist Sui coins","id":"allowlist-sui-coins","depth":2},{"value":"Create an account","id":"create-an-account","depth":2},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"Set up Sui with the API"}},"lastModified":"2026-10-23T14:40:24.138Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/custody/accounts-and-assets/blockchains/sui/set-up-api","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}