> For the complete documentation index, see [llms.txt](https://docs.orda.network/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.orda.network/developers/api/onchain-transactions/executing-a-quote.md).

# Executing a Quote

After receiving a quote from the API, you'll need to handle the transaction execution process. This involves managing token approvals (if needed) and executing the main transfer transaction.

\
**How it works**

Quote execution follows a straightforward process:

1\. Receive and process the quote response

2\. Execute token approval transaction if required

3\. Execute the main transfer transaction

4\. Monitor transaction status until completion

**Prerequisites**

Before executing a quote, you need:

* A valid quote response from a previous call to `POST https://api.orda.network/v1.1/quote`
* The ability to sign blockchain transactions (via libraries such as ethers.js or web3.js)
* A connected wallet or key management system

\
The execution process involves two potential steps:

**Step 1: Handle Token Approval (if needed)**

If the quote response includes `approvalTxParams`, you must:

* Execute the approval transaction using the provided parameters
* Wait for the approval to be confirmed on the blockchain
* Handle any approval-related errors appropriately

**Step 2: Execute Main Transaction**

After handling any approval requirements:

* For Direct transfers, use `transferTxParams`
* For Provider transfers, use `transactionRequest`
* Wait for transaction confirmation
* Monitor the transaction status using the transaction ID

Here's a simplified example of the core implementation logic:

```typescript
// If approval is needed, execute it first and wait for confirmation
if (quote.approvalTxParams) {
const approvalTx = await sendTransaction(quote.approvalTxParams);
await waitForConfirmation(approvalTx);
}

// Execute the main transaction
const txParams = quote.type === 'Direct'
? quote.transferTxParams
: quote.transactionRequest;
const tx = await sendTransaction(txParams);

// Monitor status until completion
await monitorTransaction(quote.transactionId);
```

typescript

**Best Practices**

* Approval Handling
  * Always check for `approvalTxParams` before proceeding
  * Wait for approval confirmation before executing the main transfer
  * Handle approval failures appropriately
* Transaction Execution
  * Use proper gas estimation from the quote
  * Handle both direct and cross-chain transfers
  * Monitor transaction status until completion
* User Experience
  * Show clear loading states during transactions
  * Provide feedback during approval and transfer steps
  * Handle errors gracefully with user-friendly messages
* Security
  * Validate all transaction parameters
  * Never modify gas limits without proper estimation
  * Always wait for transaction confirmations

**Common issues**

* User interaction errors:
  * User rejection of transactions is a common occurrence. Implement proper error handling to detect when users decline to sign transactions and provide appropriate guidance.
* Blockchain-related errors:
  * **Insufficient funds**: Ensure users have enough native tokens for gas fees plus transaction amount
  * **Network congestion**: Consider implementing dynamic gas price strategies during high-

    congestion periods
  * **Failed transactions**: Parse error messages from the blockchain to provide useful feedback
* Integration issues:
  * **Quote expiration**: Ensure quotes are executed within their validity window
  * **Incorrect parameter handling**: Double-check parameter mapping, especially when dealing

    with hexadecimal values
  * **Status monitoring failures**: Implement proper retry logic for status monitoring

**Status Monitoring**

The transaction status can be one of:

`Pending` Transaction is in progress

`Completed` Transaction successfully completed

`Failed` Transaction failed

Learn more about Transaction Status endpoint[ ](https://docs.scalar.com/editor#/version-11-alpha/reference/tag/crypto-to-crypto/GET/status)[here](/developers/api/onchain-transactions/monitoring-status.md).

**Next steps**

After executing a quote, you can:

1\. Implement webhook notifications to receive real-time updates about transaction status

2\. Build a transaction history interface to show users their past transactions

3\. Integrate with the [Monitoring Status](/developers/api/onchain-transactions/monitoring-status.md) endpoint for detailed monitoring

For implementation details, request format examples, and additional sample code, refer to our API Reference.
