GuideReference

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:

// 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);

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 here.

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 endpoint for detailed monitoring

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