> For the complete documentation index, see [llms.txt](https://docs.rango.exchange/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.rango.exchange/api-integration/main-api-multi-step/api-reference/create-transaction.md).

# Create Transaction

## Create Transaction API

When a user starts swapping or when a step of swap succeeds, to get the transaction for the next step, this method should be called.

In multi-step routes, you should loop over the `routeResponse.route` array and call this method (`createTransaction`) per each step.&#x20;

{% tabs %}
{% tab title="Typescript (SDK)" %}

```typescript
const transaction = await rango.createTransaction({
    requestId: "1978d8fa-335d-4915-a039-77f1a17315f5", // bestRoute.requestId
    step: 1,
    userSettings: {
        slippage: 3,
        infiniteApprove: false
    },
    validations: {
        balance: true,
        fee: true,
        approve: true
     },
})
```

{% endtab %}

{% tab title="Node.js (Axios)" %}

```typescript
const response = await axios.post(
  'https://api.rango.exchange/tx/create',
  {
    'requestId': '1978d8fa-335d-4915-a039-77f1a17315f5',
    'step': 1,
    'userSettings': {
      'slippage': 3,
      'infiniteApprove': false
    },
    'validations': {
      'balance': true,
      'fee': true,
      'approve': true
    }
  },
  {
    params: {
      'apiKey': 'c6381a79-2817-4602-83bf-6a641a409e32'
    },
    headers: {
      'content-type': 'application/json'
    }
  }
);
```

{% endtab %}

{% tab title="Bash (cURL)" %}

```bash
curl --request POST \
     --url 'https://api.rango.exchange/tx/create?apiKey=c6381a79-2817-4602-83bf-6a641a409e32' \
     --header 'content-type: application/json' \
     --data '
{
  "requestId": "1978d8fa-335d-4915-a039-77f1a17315f5",
  "userSettings": {
    "slippage": 3,
    "infiniteApprove": false
  },
  "validations": {
    "balance": true,
    "fee": true,
    "approve": true
  },
  "step": 1
}
'
```

{% endtab %}
{% endtabs %}

{% embed url="<https://rango-api.readme.io/reference/createtransaction>" %}
Create Transaction Swagger
{% endembed %}

### Create Transaction Request&#x20;

{% tabs %}
{% tab title="API Definition" %}

* **`requestId`** <mark style="color:red;">\*</mark> String
  * Description: The unique ID which is generated in the best route endpoint.
* **`step`** <mark style="color:red;">\*</mark>  Number
  * Description: The current step number in a multi-step route, starting from 1.
  * Example: `1`
* **`userSettings`** <mark style="color:red;">\*</mark>&#x20;
  * Description: User settings for the swap, including slippage and infinite approval.
* **`validations`** <mark style="color:red;">\*</mark>
  * Description: The validation checks we are interested to check by Rango before starting the swap.
    {% endtab %}

{% tab title="SDK Models (Typescript)" %}

```typescript
export type CreateTransactionRequest = {
  requestId: string
  step: number
  userSettings: UserSettings
  validations: CreateTransactionValidation
}

export type UserSettings = {
  slippage: string
  infiniteApprove?: boolean
}

export type CreateTransactionValidation = {
  balance: boolean
  fee: boolean
  approve: boolean
}
```

{% endtab %}
{% endtabs %}

### Create Transaction Response

{% tabs %}
{% tab title="API Definition" %}

* **`ok`**
  * Description: If true, Rango has created a non-null transaction, and the error message is null.
* **`transaction`**
  * Description: Transaction's raw data. It is one of the transaction possible interfaces: `EvmTransaction`, `CosmosTransaction,` `TransferTransaction` (for UTXO), `SolanaTransaction`, `StarknetTransaction`, `TronTransaction` or `null`.&#x20;
* **`error`**
  * Description: Error message about the incident if ok == false.
* **`errorCode`**
  * Description: Error code shows the type of error.
* **`traceId`**
  * Description: Trace Id helps Rango support team to trace an issue.
    {% endtab %}

{% tab title="SDK Models (Typescript)" %}

```typescript
export type CreateTransactionResponse = {
  error: string | null
  ok: boolean
  transaction: Transaction | null
}

export type Transaction =
  | EvmTransaction
  | CosmosTransaction
  | SolanaTransaction
  | TronTransaction
  | StarknetTransaction
  | TonTransaction
  | Transfer
  
export interface BaseTransaction {
  type: TransactionType
  blockChain: string
}

export interface EvmTransaction extends BaseTransaction {
  type: TransactionType.EVM
  isApprovalTx: boolean
  from: string | null
  to: string
  data: string | null
  value: string | null
  nonce: string | null
  gasLimit: string | null
  gasPrice: string | null
  maxPriorityFeePerGas: string | null
  maxFeePerGas: string | null
}

export interface SolanaTransaction extends BaseTransaction {
  type: TransactionType.SOLANA
  txType: 'LEGACY' | 'VERSIONED'
  from: string
  identifier: string
  recentBlockhash: string | null
  signatures: SolanaSignature[]
  serializedMessage: number[] | null
  instructions: SolanaInstruction[]
}

export interface CosmosTransaction extends BaseTransaction {
  type: TransactionType.COSMOS
  fromWalletAddress: string
  data: CosmosMessage
  rawTransfer: CosmosRawTransferData | null
}

export interface TronTransaction extends BaseTransaction {
  type: TransactionType.TRON
  isApprovalTx: boolean
  raw_data: TrxRawData | null
  raw_data_hex: string | null
  txID: string
  visible: boolean
  __payload__: object
}

export interface StarknetTransaction extends BaseTransaction {
  type: TransactionType.STARKNET
  isApprovalTx: boolean
  calls: StarknetCallData[]
}

export interface TonTransaction extends BaseTransaction {
  type: TransactionType.TON
  validUntil: number
  network?: TonChainID
  from?: string
  messages: TonMessage[]
}

export interface Transfer extends BaseTransaction {
  type: TransactionType.TRANSFER
  method: string
  asset: AssetWithTicker
  amount: string
  decimals: number
  fromWalletAddress: string
  recipientAddress: string
  memo: string | null
}

```

{% endtab %}

{% tab title="Sample Response" %}
{% content-ref url="/pages/aUairuEGG5JTWVqIVUZE" %}
[Sample Transactions](/api-integration/main-api-multi-step/sample-transactions.md)
{% endcontent-ref %}
{% endtab %}
{% endtabs %}
