> For the complete documentation index, see [llms.txt](https://docs.cheesecakelabs.com/stellar-plus/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cheesecakelabs.com/stellar-plus/reference/core/pipelines/classic-transaction.md).

# Classic Transaction

<figure><img src="/files/rocTDXAE6EfrzKihQs7K" alt=""><figcaption></figcaption></figure>

The ClassicTransaction pipeline is a multi-belt pipeline that covers the entire lifecycle process of a Classic Transaction. It implements the following inner pipelines in sequence:

1. Build Transaction
2. Classic Signing Requirements
3. Sign Transaction
4. Submit Transaction

## Input

```typescript
type SorobanTransactionPipelineInput = {
  txInvocation: TransactionInvocation
  operations: xdr.Operation[]
  options?: {
    executionPlugins?: SupportedInnerPlugins[]
  }
}
```

* **txInvocation**: A Transaction Invocation object containing the core parameters to build the transaction, such as fee, source account, signers, etc.
* **operations**:  An array of operations.
* **options**: An optional 'options' object with parameters to customize this transaction's execution. Refer to the 'Options' section down below for further details.

## Options

The options object provided in the input parameter for a Classic Transaction pipeline execution can be used to customize this execution's behavior accordingly.

* **executionsPlugins**: Accepts an array of plugins supported by the Classic Transaction pipeline and its inner pipelines to be used in this single transaction execution. This allows for a single-use customization to be used on target transactions and specific scenarios.

## Supported Plugins

As Classic Transaction is composed of inner pipelines, it supports a more robust plugin integration with three possible ways of customizing the pipeline behavior:

**Classic Pipeline plugin:**

Provided when instantiating the pipeline, plugins that are of type `ClassicTransactionPipelineType` pipeline or `Generic` can be used to modify the main pipeline during the `preProcess`, `postProcess` or `processError` phases.

**Classic Pipeline Supported plugins:**

Provided when instantiating the pipeline, plugins that are of the type of one of the inner pipelines will be included in the inner pipeline during execution.

**Execution Plugins:**

Provided in the input options, plugins that are of the type of one of the inner pipelines will be included in the inner pipeline only during this single execution.
