# Work with smart contracts

You can call and deploy smart contracts on Ethereum Virtual Machine (EVM) ledgers.

## Call a smart contract

To call a smart contract:

1. Navigate to **Transactions**.
2. Click **Create an order**.
3. Click the **Transaction order** tab.
4. Select the source account from which to debit the fees.
5. Select a ledger with smart contract support.
6. Select **Smart contract**.
7. Select **Contract call**.
8. Select the destination account or endpoint to which to credit the fees. You can also manually specify the address.
When a smart contract is registered as an endpoint, the hex-encoded string is automatically generated by the UI, so no additional tool is required to create it.
9. Select the method of the smart contract that you want to call.
10. In the **Fee** section, specify the following fee information:
  - The fee strategy to use to calculate the transaction fees.
  - A maximum fee as a percentage or amount, if required. The maximum fee must take into consideration the fee calculation method for the ledger. The transaction is not broadcast if the fees are higher than this cap.
Ripple Custody displays the estimated fee for the transaction.
[Learn more about how Ripple Custody calculates transaction fees](/products/custody/transactions/reference#fee-strategies-by-ledger)
11. Click **Submit for Approval** and [sign the operation with the app](/products/custody/identity-and-access/authentication/ui-authentication#sign-ui-operations).


The new transaction order, along with its associated transaction and transfers, is created when the intent is successfully executed.

## Deploy a smart contract

Ripple Custody deploys smart contracts to the standard contract deployment address for the ledger.

To deploy a smart contract:

1. Navigate to **Transactions**.
2. Click **Create an order**.
3. Click the **Transaction order** tab.
4. Select the source account from which to debit the fees.
5. Select a ledger with smart contract support.
6. Select **Smart contract**.
7. Select **Contract deployment**.
8. In **Input data**, enter the details of the application binary information (ABI) data in hex-encoded format.
9. In the **Fee** section, specify the following fee information:
  - The fee strategy to use to calculate the transaction fees.
  - A maximum fee as a percentage or amount, if required. The maximum fee must take into consideration the fee calculation method for the ledger. The transaction is not broadcast if the fees are higher than this cap.
Ripple Custody displays the estimated fee for the transaction.
[Learn more about how Ripple Custody calculates transaction fees](/products/custody/transactions/reference#fee-strategies-by-ledger)
10. Click **Submit for Approval** and [sign the operation with the app](/products/custody/identity-and-access/authentication/ui-authentication#sign-ui-operations).


The new transaction order, along with its associated transaction and transfers, is created when the intent is successfully executed.

## View a smart contract associated with an endpoint

To view the smart contract:

1. Navigate to **Endpoints**.
2. Click the endpoint associated with a smart contract.
The smart contract application binary interface (ABI) data is available in **ABI SmartContract** in JSON format.
3. To view the results of specific queries, in **Contract queries**, select a query and then click **Query**.