---
title: "File an EU right-of-withdrawal declaration (authenticated customer)"
method: POST
path: "/eu-withdrawals"
tags: ["EU Withdrawal"]
---

# File an EU right-of-withdrawal declaration (authenticated customer)

`POST /eu-withdrawals`

## Request

- Base URL: `http://localhost:8000/api/shop`
- URL: `http://localhost:8000/api/shop/eu-withdrawals`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bagisto/apis/bagisto-shop-api/docs/eu-withdrawals/post.ts> (a function with typed inputs; its response is checked against the schema)

Records a withdrawal for one of the customer's own orders and triggers the durable-medium confirmation email. Idempotent — a second call for the same order returns the existing declaration. 404 if the order is not the customer's or the channel does not have EU withdrawal enabled.

## Headers

- `X-STOREFRONT-KEY` string, required
- `X-Locale` string
- `X-Channel` string
- `X-Currency` string

## Request body

- object
  - `order_id` integer, required
  - `reason_text` string

## Response `201`

The created (or existing, idempotent) withdrawal declaration.

## Other responses

- `400`: Invalid input
- `422`: Validation Error

---

[API](https://skmtc.dev/bagisto/apis/bagisto-shop-api.md) - [All operations](https://skmtc.dev/bagisto/apis/bagisto-shop-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bagisto/apis/bagisto-shop-api/revisions/f619df36bf29?raw)
