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

# Requote webhooks

> Handle the sell_transaction_requote_required webhook to surface in-app requote notifications when a sell price changes.

## Sell transaction requote required webhook

### Overview

The `sell_transaction_requote_required` webhook notifies partners when a sell transaction requires a requote due to price changes or other market conditions.

This webhook enables partners to surface requote notifications in-app, providing a better user experience than email-only notifications.

**Webhook Type:** `sell_transaction_requote_required`

**Note:** API Reference coming soon!

### Use case

When a sell transaction requires a requote, users traditionally receive only an email notification. This approach has several limitations:

* Users may not check their email immediately
* Email notifications can be missed or filtered to spam
* There's no in-app acknowledgment of the requote

By subscribing to this webhook, partners can:

* Display in-app notifications when requotes occur
* Prompt users to accept new quotes within your application
* Provide a smooth, high-intent user experience
* Reduce transaction abandonment due to missed requotes

### Webhook payload

The webhook delivers a JSON payload with the following structure.

```json Example payload theme={null}
{
  "type": "sell_transaction_requote_required",
  "data": {
    "id": "transaction_id",
    "status": "requoteRequired",
    "createdAt": "2026-02-13T10:30:00.000Z",
    "updatedAt": "2026-02-13T11:45:00.000Z",
    "baseCurrencyAmount": 1000.0,
    "quoteCurrencyAmount": 950.0,
    "baseCurrency": "usdc",
    "quoteCurrency": "usd",
    "externalCustomerId": "customer_123",
    "walletAddress": "0x...",
    "externalTransactionId": "your_transaction_id"
  }
}
```

## Field descriptions

| Field                        | Type              | Description                                                 |
| ---------------------------- | ----------------- | ----------------------------------------------------------- |
| `type`                       | string            | Always `sell_transaction_requote_required` for this webhook |
| `data.id`                    | string            | MoonPay transaction identifier                              |
| `data.status`                | string            | Transaction status (will be `requoteRequired`)              |
| `data.createdAt`             | string (ISO 8601) | Timestamp when the transaction was created                  |
| `data.updatedAt`             | string (ISO 8601) | Timestamp when the requote was triggered                    |
| `data.baseCurrencyAmount`    | number            | Amount of cryptocurrency to sell                            |
| `data.quoteCurrencyAmount`   | number            | Updated fiat amount the user will receive                   |
| `data.baseCurrency`          | string            | Cryptocurrency code (e.g., `usdc`, `btc`, `eth`)            |
| `data.quoteCurrency`         | string            | Fiat currency code (e.g., `usd`, `eur`, `gbp`)              |
| `data.externalCustomerId`    | string            | Your customer identifier (if provided)                      |
| `data.walletAddress`         | string            | Blockchain wallet address for the transaction               |
| `data.externalTransactionId` | string            | Your transaction identifier (if provided)                   |

***

## Subscribing to the webhook

To receive `sell_transaction_requote_required` webhooks:

1. Configure your webhook endpoint in the MoonPay Dashboard or via API.

2. Add the webhook type to your subscription:
   * Navigate to **Settings → Webhooks** in your MoonPay Dashboard
   * Select `sell_transaction_requote_required` from the available webhook types
   * Make sure your endpoint is configured to handle `POST` requests

3. Verify your endpoint is properly configured and can receive webhooks.

***

## Implementation guidelines

<Steps>
  <Step title="Webhook receipt">
    Your endpoint should:

    * Respond with a `200 OK` status code within 10 seconds
    * Process the webhook asynchronously if needed
    * Implement idempotency (handle duplicate webhook deliveries)
  </Step>

  <Step title="User notification">
    When receiving this webhook:

    * Display an in-app notification to the user
    * Show the updated `quoteCurrencyAmount` clearly
    * Provide a clear call-to-action to accept or decline the new quote
    * Include a timeout/expiration time for the requote
  </Step>

  <Step title="User action">
    Allow users to:

    * Accept the new quote and continue the transaction
    * Decline and cancel the transaction
    * View the price difference between original and requoted amounts
  </Step>

  <Step title="Security">
    * Verify webhook signatures to confirm authenticity (see Webhook security section)
    * Use HTTPS endpoints only
    * Validate the webhook payload structure before processing
  </Step>
</Steps>

## Testing

### Sandbox environment

Test the webhook in the MoonPay sandbox environment before going live:

* Use sandbox API keys from your MoonPay Dashboard
* Configure your webhook endpoint to receive sandbox webhooks
* Trigger test requotes to verify your implementation

### Verification checklist

* Webhook endpoint responds with `200 OK`
* In-app notification displays correctly
* User can accept the new quote
* User can decline the requote
* Idempotency is handled properly
* Webhook signature verification is implemented

## Related webhooks

Other sell transaction webhooks you may want to subscribe to:

* `sell_transaction_created` – When a sell transaction is initiated
* `sell_transaction_completed` – When a sell transaction completes successfully
* `sell_transaction_failed` – When a sell transaction fails

## Support

For questions or issues with this webhook:

* Email: [support@moonpay.com](mailto:support@moonpay.com)
