# Sui reference

This page lists the Sui-specific API fields, limits, and errors in Ripple Custody. For procedures, see [Set up Sui with the API](/pt-br/products/custody/accounts-and-assets/blockchains/sui/set-up-api) and [Send and receive Sui assets with the API](/pt-br/products/custody/accounts-and-assets/blockchains/sui/send-and-receive-api).

## Ledger parameters

`v0_CreateLedger` and `v0_UpdateLedger` take the following `parameters` for a Sui ledger. You must provide every field.

| Field | Type | Description |
|  --- | --- | --- |
| `type` | string | `Sui` |
| `nativeTickerName` | string, 1–100 characters | The display name of the native currency. |
| `nativeTickerSymbol` | string, 1–100 characters | The symbol of the native currency. |


## Ticker ledger details

A Sui ticker's `ledgerDetails` has `type` set to `Sui` and a `properties` object of one of the following types.

| `properties.type` | Asset | Other fields |
|  --- | --- | --- |
| `Native` | SUI | None. |
| `Coin` | Any other Sui coin | `coinType` (string): the coin's Move type tag, in the form `0x<package>::<module>::<name>`, without generic type parameters. |


## Transaction order parameters

For a Sui transaction order, `parameters` has the following fields.

| Field | Type | Required | Description |
|  --- | --- | --- | --- |
| `type` | string | Yes | `Sui` |
| `operation` | object | Yes | A `NativeTransfer` or `CoinTransfer` operation. |
| `feeStrategy` | object | Yes | `{"type": "Priority", "priority": "Low" | "Medium" | "High"}`. The tier has no effect on Sui. We recommend `Low`. |
| `maximumFee` | string | No | The maximum fee, in MIST, as an integer string. |
| `validityEpochs` | integer, 1–14 | No | The number of epochs, about 24 hours each, that the transaction stays valid after preparation. Defaults to the network setting. |


### Operation fields

| Operation | Field | Type | Required | Description |
|  --- | --- | --- | --- | --- |
| `NativeTransfer` | `type` | string | Yes | `NativeTransfer` |
|  | `destination` | object | Yes | The recipient: an `Address`, `Account`, or `Endpoint` destination. |
|  | `amount` | string | Yes | The amount in MIST, as a non-negative integer string. |
| `CoinTransfer` | `type` | string | Yes | `CoinTransfer` |
|  | `destination` | object | Yes | Same as `NativeTransfer`. |
|  | `amount` | string | Yes | The amount in the coin's smallest unit, as a non-negative integer string. |
|  | `coinType` | string | Yes | The coin's Move type tag. |


## Transaction estimate

A dry run of a Sui order returns an estimate with `type` set to `Sui`:

| Field | Type | Description |
|  --- | --- | --- |
| `fee` | string | The gas budget, in MIST. The sending account must hold at least this amount of SUI. |
| `storageRebate` | string | The storage fee that the network refunds, in MIST. |


## Address format

`0x` followed by 64 hexadecimal characters, 66 characters in total. The address is the BLAKE2b-256 hash of the signature scheme flag and the account's Ed25519 public key.

## Limits

| Limit | Value |
|  --- | --- |
| Decimal places for SUI | 9 (1 SUI = 1,000,000,000 MIST) |
| Validity window | 1 to 14 epochs |
| Epoch length | About 24 hours |
| Confirmations | 1 checkpoint |


## Errors and troubleshooting

| Symptom | Cause | Resolution |
|  --- | --- | --- |
| A dry run or order fails with `InvalidDestination` for a regulated coin. | The recipient is on the coin's deny list, or will be in the next epoch. | Don't send the coin to this recipient. Contact the coin's issuer if you think the entry is wrong. |
| An order fails with `InvalidDestination` for another reason. | The address isn't a valid Sui address. | Check that the address is `0x` followed by 64 hexadecimal characters. |
| An order fails for insufficient funds when you send a coin. | The account doesn't hold enough SUI for the gas budget. | Send SUI to the account, and then submit the order again. |
| An order has the `Expired` status. | The network didn't finalize the transaction before its expiration epoch. | Submit a new order. For long signing flows, set a larger `validityEpochs`. |
| An incoming transfer of a new coin doesn't appear. | Ripple Custody couldn't read the coin's on-chain metadata. | Contact your Ripple liaison. |


To check on-chain state independently of Ripple Custody, look up the address or transaction digest in a Sui explorer, such as [SuiScan](https://suiscan.xyz) or [SuiVision](https://suivision.xyz).