Why a coupon shows both a percentage rate and an amount when only one should apply

Last updated: July 10, 2026

This is expected behavior. When a coupon is updated from one discount type to another, for example from a percentage discount to a fixed amount, Lago doesn't clear the previously set value. Both percentage_rate and amount_cents can remain non-null in the API response, but only the field matching the coupon's current coupon_type is applied at invoice time.

How it works

coupon_type is the authoritative field. If it's fixed_amount, Lago uses amount_cents and ignores percentage_rate. If it's percentage, Lago uses percentage_rate and ignores amount_cents. Any integration reading coupon data should check coupon_type first before reading either discount field.

Clearing the unused field

No action is required for billing to work correctly. To clear the unused field for cleanliness, for example to avoid confusing external integrations, update the coupon via PUT /api/v1/coupons/{coupon_code} and explicitly send the unused field as null: {"coupon": {"percentage_rate": null}}. The field must be included in the request with a null value; omitting it entirely leaves the existing value unchanged.


This article reflects guidance drawn from customer case resolutions. It is not officially supported documentation and may not apply to all situations.