# Create **POST /wallets/{walletId}/transactions**

status: stable

Create and send transaction from the wallet. ## Servers - https://localhost:8090/v2: https://localhost:8090/v2 () ## Parameters ### Path parameters - **walletId** (string(hex)) ### Body: application/json (object) - **passphrase** (string) The wallet's master passphrase. - **payments** (array[object]) A list of target outputs with amounts specified. When creating a new transaction, the wallet software ensures that all user-specified transaction outputs have ada amounts that satisfy the ledger minimum UTxO rule: - If a user-specified transaction output has an ada `amount` that is **zero**, the wallet software will automatically assign a minimal amount of ada to the output so that it satisfies the ledger minimum UTxO rule. - If a user-specified transaction output has an ada `amount` that is **non-zero**, the wallet software will verify that the specified amount is large enough to satisfy the ledger minimum UTxO rule. If the amount is not large enough, the wallet software will return a `utxo_too_small` error, together with a revised ada amount that does satisfy the minimum UTxO rule. - **withdrawal** (string) When provided, instruments the server to automatically withdraw rewards from the source wallet when they are deemed sufficient (i.e. they contribute to the balance for at least as much as they cost). As a consequence, the resulting transaction may or may not have a withdrawal object. Summarizing: withdrawal field | reward balance | result --- | --- | --- `null` | too small | ✓ no withdrawals generated `null` | big enough | ✓ no withdrawals generated `"self"` | too small | ✓ no withdrawals generated `"self"` | big enough | ✓ withdrawal generated - **metadata** (object | null) - **time_to_live** (object) The TTL (time to live) is the time period in which the transaction will be accepted into node mempools. After the TTL has lapsed, the transaction is considered expired. At this point, nodes will give up on broadcasting the transaction, and the wallet will release the funds allocated to the transaction so they can be used for other payments. The TTL should be long enough that the transaction has time to be propagated through the network and confirmed, but short enough so that - in the event of failures - UTxO are returned to the wallet in a timely manner. The TTL value is given in seconds. It will be converted to a slot number internally. If the TTL is not provided for a payment, a reasonable default value will be used. ## Responses ### 400 Bad Request #### Body: 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: application/json (object) - **message** (string) May occur when trying to perform an operation not supported by this type of wallet. - **code** (string) ### 404 Not Found #### Body: 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) ### 406 Not Acceptable #### Body: application/json (object) - **message** (string) May occur when providing an invalid 'Accept' header. - **code** (string) ### 415 Unsupported Media Type #### Body: application/json (object) - **message** (string) May occur when providing an invalid 'Content-Type' header. - **code** (string) ### 425 Mempool is Full #### Body: application/json (object) - **message** (string) May occur when submitting a serialized transaction to a node with full mempool. - **code** (string) ### 202 Accepted #### Body: application/json (object) - **id** (string(hex)) A unique identifier for this transaction - **amount** (object) An amount of Ada spent or received, from the perspective of the wallet. That is, for outgoing transaction, it represents the amount of Ada consumed as inputs including the amount of Ada spent as fees or deposits. For incoming transaction, it represents the total amount of Ada received to addresses that belong to the wallet. - **fee** (object) Coins, in Lovelace. Only relates to 'Ada'. Refer to `assets` for multi-assets wallets instead. - **deposit_taken** (object) Coins, in Lovelace. Only relates to 'Ada'. Refer to `assets` for multi-assets wallets instead. - **deposit_returned** (object) Coins, in Lovelace. Only relates to 'Ada'. Refer to `assets` for multi-assets wallets instead. - **inserted_at** (object) A reference to a particular time slot, and the block height at that point. - **expires_at** (object) A reference to a particular time slot. - **pending_since** (object) A reference to a particular time slot, and the block height at that point. - **depth** (object) if: status == in_ledger
Current depth of the transaction in the local chain - **direction** (string) - **inputs** (array[object]) A list of transaction inputs. `assets` and `address` are always present for `outgoing` transactions but generally absent for `incoming` transactions. This information is present on the Cardano explorer, but is not tracked by the wallet. - **outputs** (array[object]) A list of target outputs with amounts specified. When creating a new transaction, the wallet software ensures that all user-specified transaction outputs have ada amounts that satisfy the ledger minimum UTxO rule: - If a user-specified transaction output has an ada `amount` that is **zero**, the wallet software will automatically assign a minimal amount of ada to the output so that it satisfies the ledger minimum UTxO rule. - If a user-specified transaction output has an ada `amount` that is **non-zero**, the wallet software will verify that the specified amount is large enough to satisfy the ledger minimum UTxO rule. If the amount is not large enough, the wallet software will return a `utxo_too_small` error, together with a revised ada amount that does satisfy the minimum UTxO rule. - **collateral** (array[object]) A list of transaction inputs used for collateral. - **collateral_outputs** (array[object]) A list of collateral return outputs with amounts specified. - **withdrawals** (array[object]) A list of withdrawals from stake addresses. - **status** (string) Current transaction status. ``` *-----------* ---> | PENDING |----------------* *-----------* | | | V V *-----------* *-----------* | |----------> EXPIRED | | | (ttl) *-----------* | SUBMITTED | | <----------------* | | | *-----------* (rollback) | | (in ledger) *-----------* | | | *---------------> IN_LEDGER | | | *-----------* ``` - **metadata** (object | null) - **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). - **certificates** (array[object]) Any certificate that could occur in an arbitrary transaction: might be related to delegation, pool activities, genesis or MIR. - **mint** (object) - **burn** (object) - **validity_interval** (object) - **script_integrity** (string(bech32)) A script data integrity hash - 32 bytes - **extra_signatures** (array[string(bech32)]) An extra signature hash - 28 bytes [Powered by Bump.sh](https://bump.sh)