Changes

Comparing empty160dc49.

@@ -1,0 +1,50 @@
1+---
2+title: Changelog
3+sort: 99
4+tags: [reference]
5+---
6+
7+# Changelog
8+
9+Every change that touches the public API surface lands here. Internal changes that don't affect
10+integrators live in the [intranet release notes](../intranet/news/index.md) instead.
11+
12+This document deliberately collects many small commits so the **Revisions** view on this page has
13+meaningful history to demonstrate — open the right-rail History panel.
14+
15+## 2026-05-30 — Refunds API
16+
17+`POST /v1/orders/{id}/refunds` now accepts a `reason` field. Allowed values: `requested_by_customer`,
18+`duplicate`, `fraudulent`. The previous free-text `note` field is deprecated and will be removed in
19+v2.
20+
21+## 2026-05-22 — Webhook delivery v2
22+
23+Webhook deliveries now retry with exponential backoff up to 24 hours instead of the prior 4 hours.
24+The `X-ZephyrCart-Delivery-Attempt` header now starts at `1` (was `0`) for clarity.
25+
26+## 2026-05-15 — Tax zones in Sweden
27+
28+Added `tax_zone.se-*` for Swedish counties to support the new VAT reporting requirements that took
29+effect on May 1.
30+
31+## 2026-05-08 — Stripe Tax handoff
32+
33+When `payment_method.stripe.use_stripe_tax = true`, tax calculation is delegated to Stripe Tax
34+instead of ZephyrCart's internal engine. The order's `tax_calculation_source` field reflects which
35+engine ran.
36+
37+## 2026-04-30 — Customer merge
38+
39+`POST /v1/customers/{id}/merge` now consolidates carts, orders, and stored payment methods from
40+the target into the source customer. Previously only the email and shipping address were merged.
41+
42+## 2026-04-22 — Bulk cart fetch
43+
44+`GET /v1/carts?ids=...` supports up to 100 IDs per request (was 25). Useful for storefronts that
45+want to reconcile carts after a partial outage.
46+
47+## 2026-04-14 — Idempotency keys
48+
49+All `POST` endpoints now accept the `Idempotency-Key` header. Retries within 24 hours with the same
50+key return the original response instead of creating a duplicate resource.