---
title: "409 Conflict"
description: "The request clashed with what QuotaStack already holds. Nothing changed."
---

# 409 Conflict

`https://api.quotastack.io/errors/conflict`

The request clashed with what QuotaStack already holds. Nothing changed.

## Why it happened

- You reused an `Idempotency-Key` with a different body. That cause is by far the most common.
- Two calls changed the same customer at once.
- You sent `stack_after` with `fallback: reject`, and no block matched.
- The thing is already there. A second override on one metric does this.

## How to fix it

1. Use a new `Idempotency-Key` when the body is different. Build the key from the business event.
2. Send the call again with the same key when two writes raced.
3. Read the page for that call. Each one says what its own `409` means.

### Example response 409

```json
{
  "type": "https://api.quotastack.io/errors/conflict",
  "title": "Conflict",
  "status": 409,
  "detail": "Idempotency-Key has already been used with a different request body."
}
```

## Which calls return this

- [`POST /v1/customers`](/docs/api/customers#createCustomer)
- [`POST /v1/customers/{customer_id}/credits/grant`](/docs/api/credits#grantCustomerCredits)
- [`POST /v1/customers/{customer_id}/credits/adjust`](/docs/api/credits#adjustCustomerCredits)
- [`POST /v1/customer-by-external-id/{external_id}/credits/grant`](/docs/api/credits#grantCustomerCreditsByExternalId)
- [`POST /v1/customer-by-external-id/{external_id}/credits/adjust`](/docs/api/credits#adjustCustomerCreditsByExternalId)
- [`POST /v1/customers/{id}/entitlements/{billable_metric_key}/increment`](/docs/api/entitlements#incrementGauge)
- [`POST /v1/customers/{id}/entitlements/{billable_metric_key}/decrement`](/docs/api/entitlements#decrementGauge)
- [`POST /v1/customer-by-external-id/{external_id}/entitlements/{billable_metric_key}/increment`](/docs/api/entitlements#incrementGaugeByExternalId)
- [`POST /v1/customer-by-external-id/{external_id}/entitlements/{billable_metric_key}/decrement`](/docs/api/entitlements#decrementGaugeByExternalId)
- [`POST /v1/imports/customers`](/docs/api/imports#importCustomer)
- [`POST /v1/subscriptions/{id}/overrides`](/docs/api/overrides#createOverride)
- [`POST /v1/reservations/{id}/commit`](/docs/api/reservations#commitReservation)
- [`POST /v1/reservations/{id}/release`](/docs/api/reservations#releaseReservation)
- [`POST /v1/plans/{id}/variants/{vid}/entitlements`](/docs/api/plans#attachVariantEntitlement)
- [`POST /v1/billable-metrics`](/docs/api/billable-metrics#createBillableMetric)
- [`POST /v1/webhooks/events/{id}/redeliver`](/docs/api/webhooks#redeliverWebhookEvent)
- [`POST /v1/webhooks/test`](/docs/api/webhooks#sendTestWebhook)

## See also

- [Idempotency](/docs/concepts/idempotency)
- [Idempotency key reuse](/docs/api/errors/idempotency-key-reuse)
