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

# Idempotency

> Create idempotency uses (supplier_id, external_reference). Correction and promotion use a separate operation key.

## Create

The create key is `(supplier_id, external_reference)`.

| Situation                            | HTTP                                  | Result                                 |
| ------------------------------------ | ------------------------------------- | -------------------------------------- |
| First valid persist                  | **202**                               | New `submission_id`, `status=received` |
| Same reference + same validated body | **200**                               | Replay of the existing object          |
| Same reference + different body      | **409** `external_reference_conflict` | No overwrite                           |

`external_reference` is immutable after create. You do **not** send an extra create `Idempotency-Key` header in V1.

Treat **200** as success. Do not create a second enquiry when you receive it.

## Correction and promotion

These operations use a **separate** `Idempotency-Key` header. They do not reuse `external_reference`.

```http theme={null}
Idempotency-Key: promote-harbourview-2001-01
```

Repeating the same operation key with the same body returns the original operation result. A different body under the same operation key returns **409**.

Staff-safe replay of failed async work is an internal Tera control. It will not create a second Application for a submission that already has one. Suppliers should retry HTTP calls with the rules above rather than inventing a new `external_reference` for the same enquiry.
