> 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/off-ramps/executing-a-quote.md).

# Executing a Quote

After receiving a crypto-to-fiat quote using the Request Crypto-to-Fiat Quote guide, the next step is to execute the transaction. This guide explains the process and best practices for initiating the conversion and handling the subsequent steps.

**Prerequisites**

Before executing an off-ramp quote, ensure you have:

* A valid `transactionId` obtained from a recent quote request.
* Complete and verified recipient KYC information (name, tax ID, tax ID country).
* Accurate fiat withdrawal details for the recipient (e.g., bank account/branch, IBAN, PIX key depending on the region).
* Recipient's email address for notifications.
* Details about the source of the funds (chain ID, wallet address).

**Best Practices**

* **Quote Handling:**
  * Always use a fresh quote. Quotes expire quickly due to market volatility. Re-request a quote if there's a delay before execution.
  * Store the `transactionId` securely, as it links the execution request to the specific pricing agreed upon.
  * Clearly display the final fiat amount, exchange rate, and fees from the quote to the user before they confirm execution.
* **Execution Handling:**
  * Ensure all required KYC and bank details are accurate before submitting the execution request to prevent payout failures.
  * Provide a valid recipient email address for transaction status updates.
  * Securely store the `transactionId` returned upon successful execution initiation. This ID is crucial for tracking the transaction's progress.
* **User Experience:**
  * Clearly communicate the steps involved: quote confirmation, crypto deposit, fiat payout.
  * Provide estimated processing and payout times.
  * Offer a way for users to track the transaction status using the `transactionId`.
  * Handle potential errors (e.g., invalid bank details, expired quote) gracefully with clear, user-friendly messages.
* **Security:**
  * Continue to follow authentication best practices as outlined in the Authentication Guide.
  * Validate all user inputs server-side before making the API call.
  * Securely manage API credentials (Client ID and Secret).
  * Handle sensitive recipient data (KYC, bank info) securely and in compliance with relevant regulations.

**Error Handling**

Be prepared to handle potential errors during execution, such as:

* Invalid or expired `providerQuoteId`.
* Missing or incorrect KYC or bank information.
* Authentication failures.
* API rate limiting.
* Network issues or timeouts.
* Insufficient funds or issues during the crypto deposit step.

**Status Monitoring**

Once the execution is initiated, the transaction will progress through several stages. You can track its status using the `transactionId`. Common statuses include:

* `pending`: The transaction is initiated and awaiting crypto deposit or processing.
* `completed`: The fiat payout has been successfully processed.
* `failed`: The transaction could not be completed due to an error.

For detailed information on tracking the transaction lifecycle, see the Monitor Off-Ramp Status guide. (Note: Assumes this path exists or will be created)
