Короткий ответ Клиент должен передавать идемпотентный ключ (например, заголовок Idempotency-Key), а сервер — сохранять связь между этим ключом и результатом первой успешной обработки, чтобы при повторном запросе с тем же ключом вернуть сохранённый результат вместо повторного создания заказа. Как это работает подробнее При первом запросе с новым Idempotency-Key сервер атомарно (например, через уникальный индекс в БД на этот ключ) резервирует ключ, выполняет операцию и сохраняет результат (например, order_id и тело ответа) вместе с ключом. При повторном запросе с тем же ключом сервер находит сохранённую запись и возвращает тот же результат без повторного выполнения бизнес-логики. Пример кода Что использовать на практике Практика. Важно учитывать конкурентный повтор «почти одновременно» (например, клиент шлёт повтор ещё до завершения первой обработки) — для этого ключ резервируют до выполнения операции, используя уникальность на уровне БД, а не только проверку-потом-запись в коде приложения, чтобы избежать гонки