/api/coupons and /api/coupons/{couponId} with manageCoupons.
Usage
Call from checkout UI before applying a discount. Embed can also passcouponCode into create-checkout so Join Markt applies it when opening the invoice.
Errors
Invalid / expired / ineligible codes return a 4xx JSON{ error } (or domain payload). Do not invent client-side discount math that disagrees with the server.