# VaultDeposit

[[Source]](https://github.com/XRPLF/rippled/blob/release-3.1/src/xrpld/app/tx/detail/VaultDeposit.cpp)

Deposits a specified number of assets into a vault in exchange for shares.

For private vaults, the depositor must be authorized to interact with the vault’s shares and have [Credentials](/ja/docs/concepts/decentralized-storage/credentials) in the [Permissioned Domain](/ja/docs/concepts/tokens/decentralized-exchange/permissioned-domains) of the share.

Public vaults require no authorization, and anyone can deposit as long as they meet the asset type requirement and have sufficient funds.

Warning
A depositor cannot deposit assets into the vault if:

- The asset is frozen for the depositor.
- The trust line between the pseudo-account and the issuer is frozen, or the `MPToken` is locked.
- The vault is private and the depositor's credentials have expired.


If successful, the transaction moves the assets from the depositor's account to the vault's pseudo-account, issues the corresponding vault shares, and updates the vault’s balance.

SingleAssetVault
## Example  JSON


```json
{
  "TransactionType": "VaultDeposit",
  "Account": "ra5nK24KXen9AHvsdFTKHSANinZseWnPcX",
  "Fee": "12",
  "Flags": 0,
  "LastLedgerSequence": 7108682,
  "Sequence": 8,
  "VaultID": "77D6234D074E505024D39C04C3F262997B773719AB29ACFA83119E4210328776",
  "Amount" : {
    "currency" : "TST",
    "issuer" : "rP9jPyP5kyvFRb6ZiRghAGw5u8SGAmU4bd",
    "value" : "2.5"
  }
}
```

##  Fields

In addition to the [common fields](/ja/docs/references/protocol/transactions/common-fields#transaction-common-fields),  transactions use the following fields:

| Field Name | JSON Type | [Internal Type](/docs/references/protocol/binary-format) | Required? | Description |
|  --- | --- | --- | --- | --- |
| `VaultID` | String | Hash256 | Yes | The unique identifier of the vault to which the asset is deposited. |
| `Amount` | Object | Amount | Yes | The asset and quantity to be deposited into the vault. |


The deposited asset must match the vault’s designated asset for the transaction to succeed. Depending on the asset type, the following changes occur:

- **XRP**: The vault’s pseudo-account balance increases, and the depositor’s balance decreases.
- **Trust line token**: The [trust line](/ja/docs/concepts/tokens/fungible-tokens/trust-line-tokens#structure) balance between the vault's pseudo-account and the asset issuer is adjusted.
- **MPT**: The `MPToken.MPTAmount` of both the depositor and the vault's pseudo-account is updated.


##  Flags

There are no flags defined for  transactions.

## Transfer Fees

A single asset vault does not apply the [transfer fee](/ja/docs/concepts/tokens/fungible-tokens/transfer-fees) to  transactions. Additionally, whenever a protocol moves assets from or to a vault, the transfer fee isn't charged.

## Error Cases

Besides errors that can occur for all transactions,  transactions can result in the following [transaction result codes](/ja/docs/references/protocol/transactions/transaction-results):

| Error Code | Description |
|  --- | --- |
| `tecNO_ENTRY` | The `Vault` object with the provided `VaultID` does not exist on the ledger. |
| `tecOBJECT_NOT_FOUND` | A ledger entry specified in the transaction does not exist. |
| `tecWRONG_ASSET` | The asset of the vault does not match the asset being deposited. |
| `tecINSUFFICIENT_FUNDS` | The depositor does not have sufficient funds to make a deposit. |
| `tecLIMIT_EXCEEDED` | Adding the provided `Amount` to the `AssetsTotal` exceeds the `AssetsMaximum` value. |
| `tecNO_AUTH` | Either the vault is private and the depositing account does not have credentials in the share's Permissioned Domain, or the asset is a non-transferable MPT. |
| `tecFROZEN` | Either the trust line between the issuer and the depositor is frozen, or the asset is globally frozen. |
| `tecLOCKED` | Either the MPT asset is locked for the depositor, or if the asset is globally locked. |
| `temMALFORMED` | The transaction was not validly formatted. For example, if the `VaultID` is not provided. |
| `temDISABLED` | The Single Asset Vault amendment is not enabled. |
| `temBAD_AMOUNT` | The `Amount` field of the transaction is invalid. |


## See Also

- [Vault entry](/docs/references/protocol/ledger-data/ledger-entry-types/vault)