> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get an Offramp Quote

> Estimate the fiat payout and fees before placing an offramp order

Use a draft quote to show users what to expect before converting stablecoins to fiat. You can start from either side of the conversion. For example, enter 300 USDC to see the estimated payout in Mexican pesos, or enter 4,500 MXN to see how much USDC the user would need to send. The quote also includes the applicable fees.

Crossmint does not store a draft, and a draft cannot be paid or turned into an order. Display the quote, then discard the response. When the user proceeds, create a new order.

## Request a Quote

Call [Create Order](/offramp/api-reference/create-order) with `state: "draft"`. The rest of the body is the same as a real order. Use `exact-in` to fix the stablecoin the user sends, or `exact-out` to fix the fiat they receive (see [Send or Receive an Exact Amount](/offramp/guides/send-or-receive-an-exact-amount)). Both code samples pay out in MXN.

<Tabs>
  <Tab title="exact-in">
    The user sends exactly 300 USDC and the quote estimates how many MXN they receive after fees.

    ```bash cURL {5,18-19} theme={null}
    curl -X POST 'https://staging.crossmint.com/api/2022-06-09/orders' \
      -H 'X-API-KEY: <YOUR_SERVER_API_KEY>' \
      -H 'Content-Type: application/json' \
      -d '{
        "state": "draft",
        "recipient": {
          "paymentMethodId": "<PAYMENT_METHOD_ID>"
        },
        "payment": {
          "method": "base-sepolia",
          "currency": "usdc",
          "payerAddress": "<USER_WALLET_ADDRESS>",
          "receiptEmail": "alice@example.com"
        },
        "lineItems": {
          "currencyLocator": "fiat:mxn",
          "executionParameters": {
            "mode": "exact-in",
            "amount": "300"
          }
        }
      }'
    ```
  </Tab>

  <Tab title="exact-out">
    The user wants to receive exactly 4,500 MXN and the quote calculates how much USDC they must send, fees included.

    ```bash cURL {5,18-19} theme={null}
    curl -X POST 'https://staging.crossmint.com/api/2022-06-09/orders' \
      -H 'X-API-KEY: <YOUR_SERVER_API_KEY>' \
      -H 'Content-Type: application/json' \
      -d '{
        "state": "draft",
        "recipient": {
          "paymentMethodId": "<PAYMENT_METHOD_ID>"
        },
        "payment": {
          "method": "base-sepolia",
          "currency": "usdc",
          "payerAddress": "<USER_WALLET_ADDRESS>",
          "receiptEmail": "alice@example.com"
        },
        "lineItems": {
          "currencyLocator": "fiat:mxn",
          "executionParameters": {
            "mode": "exact-out",
            "amount": "4500"
          }
        }
      }'
    ```
  </Tab>
</Tabs>

## Read the Quote

Response excerpts for each mode. The amounts are illustrative.

<Tabs>
  <Tab title="exact-in">
    The user sends 300 USDC, pays 0.24 USDC in fees, and the remaining 299.76 USDC converts into an estimated 5,137.89 MXN (`quantity`).

    ```json Draft response (excerpt) {17,26,39,48} theme={null}
    {
      "order": {
        "orderId": "<ORDER_ID>",
        "phase": "payment",
        "lineItems": [
          {
            "metadata": {
              "name": "MXN",
              "description": "Mexican Peso",
              "imageUrl": "https://www.crossmint.com/assets/ui/flags/mx.svg"
            },
            "quote": {
              "status": "valid",
              "charges": {
                "fees": {
                  "type": "exact",
                  "amount": "0.24",
                  "currency": "usdc"
                }
              },
              "totalPrice": {
                "amount": "300",
                "currency": "usdc"
              }
            },
            "quantity": 5137.89,
            "delivery": {
              "status": "awaiting-payment",
              "recipient": {
                "locator": "paymentMethodId:<PAYMENT_METHOD_ID>",
                "paymentMethodId": "<PAYMENT_METHOD_ID>"
              }
            },
            "executionMode": "exact-in",
            "callData": {
              "mode": "exact-in",
              "amount": "300",
              "outFiatCurrency": "mxn",
              "effectiveAmount": "299.76"
            }
          }
        ],
        "quote": {
          "status": "valid",
          "quotedAt": "2026-09-15T19:16:57.608Z",
          "expiresAt": "2026-09-15T19:26:57.608Z",
          "totalPrice": {
            "amount": "300",
            "currency": "usdc"
          }
        },
        "payment": {
          "status": "requires-crypto-payer-address",
          "method": "base-sepolia",
          "currency": "usdc"
        }
      }
    }
    ```
  </Tab>

  <Tab title="exact-out">
    The user receives exactly 4,500 MXN, which costs 262.54 USDC to convert; 0.21 USDC in fees is added on top, so they send 262.75 USDC (`totalPrice`). Amounts are rounded here; the response keeps full precision.

    ```json Draft response (excerpt) {17,26,39,48} theme={null}
    {
      "order": {
        "orderId": "<ORDER_ID>",
        "phase": "payment",
        "lineItems": [
          {
            "metadata": {
              "name": "MXN",
              "description": "Mexican Peso",
              "imageUrl": "https://www.crossmint.com/assets/ui/flags/mx.svg"
            },
            "quote": {
              "status": "valid",
              "charges": {
                "fees": {
                  "type": "exact",
                  "amount": "0.210035",
                  "currency": "usdc"
                }
              },
              "totalPrice": {
                "amount": "262.753792",
                "currency": "usdc"
              }
            },
            "quantity": 4500,
            "delivery": {
              "status": "awaiting-payment",
              "recipient": {
                "locator": "paymentMethodId:<PAYMENT_METHOD_ID>",
                "paymentMethodId": "<PAYMENT_METHOD_ID>"
              }
            },
            "executionMode": "exact-out",
            "callData": {
              "mode": "exact-out",
              "amount": "4500",
              "outFiatCurrency": "mxn",
              "effectiveAmount": "262.543757"
            }
          }
        ],
        "quote": {
          "status": "valid",
          "quotedAt": "2026-09-15T21:13:28.476Z",
          "expiresAt": "2026-09-15T21:23:28.476Z",
          "totalPrice": {
            "amount": "262.753792",
            "currency": "usdc"
          }
        },
        "payment": {
          "status": "requires-crypto-payer-address",
          "method": "base-sepolia",
          "currency": "usdc"
        }
      }
    }
    ```
  </Tab>
</Tabs>

## Display the Quote

Use these fields to build the quote summary:

| Field                                    | Show the user                                              |
| ---------------------------------------- | ---------------------------------------------------------- |
| `quote.totalPrice.amount`                | Stablecoin to send, including Crossmint fees               |
| `lineItems[0].quote.charges.fees.amount` | Crossmint fees, included in the total                      |
| `lineItems[0].callData.effectiveAmount`  | Stablecoin actually converted, after fees                  |
| `lineItems[0].quantity`                  | Estimated fiat payout, expected in the destination account |

## Place the Order

Once the user is ready to continue, discard the draft and send the request again without `state: "draft"`. The draft was only a preview and cannot be reused.

The new order includes a fresh quote and instructions for sending the funds. If the amounts have changed, show the updated quote to the user before continuing.

## Next Steps

<CardGroup cols={2}>
  <Card title="Manage Orders" icon="list-check" href="/offramp/guides/manage-orders">
    Status, webhooks, and failures
  </Card>

  <Card title="Create Order API" icon="code" href="/offramp/api-reference/create-order">
    Every request and response field
  </Card>
</CardGroup>
