# Decode **POST /wallets/{walletId}/transactions-decode**

status: stable

Decode a serialized transaction, either freshly constructed, partially signed or fully-signed. ## Servers - https://localhost:8090/v2: https://localhost:8090/v2 () ## Parameters #### Path parameters - **walletId** (string(hex)) ## Body parameters Content-type: application/json - **decrypt_metadata** (object) The metadata passphrase for decryption. - **transaction** (string(base64|base16)) The CBOR-encoded transaction, represented in either hex or base64 encoding. This always includes the transaction body and the witness set, even if the latter is empty. ## Responses ### 415: Unsupported Media Type #### Body Parameters: application/json (object) - **message** (string) May occur when providing an invalid 'Content-Type' header. - **code** (string) ### 406: Not Acceptable #### Body Parameters: application/json (object) - **message** (string) May occur when providing an invalid 'Accept' header. - **code** (string) ### 404: Not Found #### Body Parameters: application/json (object) - **message** (string) May occur when a given walletId does not match with any known wallets (because it has been deleted, or has never existed). - **code** (string) - **info** (object) ### 400: Bad Request #### Body Parameters: application/json (object) - **message** (string) May occur when a request is not well-formed; that is, it fails to parse successfully. This could be the case when some required parameters are missing or, when malformed values are provided. - **code** (string) ### 403: Forbidden #### Body Parameters: application/json (object) - **message** (string) The supplied encrypted metadata object is not compatible with standard specified by CIP-83 (https://cips.cardano.org/cip/CIP-83). - **code** (string) ### 202: Accepted #### Body Parameters: application/json (object) - **id** (string(hex)) A unique identifier for this transaction - **fee** (object) Coins, in Lovelace. Only relates to 'Ada'. Refer to `assets` for multi-assets wallets instead. - **inputs** (array[object]) Inputs that could be external or belong to the wallet. - **outputs** (array[object]) Outputs that could be external or belong to the wallet. - **collateral** (array[object]) Inputs that could be external or belong to the wallet. - **collateral_outputs** (array[object]) Outputs that could be external or belong to the wallet. - **withdrawals** (array[object]) Withdrawals that could be external or belong to the wallet. - **mint** (object) - **burn** (object) - **certificates** (array[object]) - **metadata** (object | null) **⚠️ WARNING ⚠️** _Please note that metadata provided in a transaction will be stored on the blockchain forever. Make sure not to include any sensitive data, in particular personally identifiable information (PII)._ Extra application data attached to the transaction. Cardano allows users and developers to embed their own authenticated metadata when submitting transactions. Metadata can be expressed as a JSON object with some restrictions: 1. All top-level keys must be integers between `0` and `2^64 - 1`. 2. Each metadata value is tagged with its type. 3. Strings must be at most 64 bytes when UTF-8 encoded. 4. Bytestrings are hex-encoded, with a maximum length of 64 bytes. Metadata aren't stored as JSON on the Cardano blockchain but are instead stored using a compact binary encoding (CBOR). The binary encoding of metadata values supports three simple types: * Integers in the range `-(2^64 - 1)` to `2^64 - 1` * Strings (UTF-8 encoded) * Bytestrings And two compound types: * Lists of metadata values * Mappings from metadata values to metadata values It is possible to transform any JSON object into this schema. However, if your application uses floating point values, they will need to be converted somehow, according to your requirements. Likewise for `null` or `bool` values. When reading metadata from chain, be aware that integers may exceed the javascript numeric range, and may need special "bigint" parsing. - **deposits_taken** (array[object]) A list of deposits associated with a transaction. - **deposits_returned** (array[object]) A list of deposits associated with a transaction. - **script_validity** (string | null) Indicates whether the phase-2 monetary policy script (e.g. Plutus script) used in the transaction validated or not. Validity may be null if this transaction was from an era that doesn't support phase-2 monetary policy scripts, or is a pending transaction (we don't know if validation passed or failed until the transaction hits the ledger). - **validity_interval** (object) - **witness_count** (object) Specifies the number of verification key and bootstrap wintesses. As scripts act as witnesses they are also included. Scripts can be specified and spent in a given transaction or defined to be consumed later. In the latter case they are defined in transaction outputs (feature possible from Babbage era) in one transaction and referenced in other later transaction(s). The script referencing is realized via including of reference in a reference input. If reference script is present here it included the form of the script and reference to be used later, ie. tx id and index of tx out where the script was included. [Powered by Bump.sh](https://bump.sh)