stripe coupon passed "redeem_by": invoice shows no discount applied
Explains why a Stripe coupon with redeem_by shows no discount on the invoice: the redemption window closed before the invoice was created. Use when a coupon applies cleanly in tests but not on real invoices. Not for coupons rejected as invalid at attach time.
TL;DR
redeemby is a hard expiry on the coupon: any invoice created after that timestamp gets no discount. Extend redeemby, create the invoice before the deadline, or replace the coupon. Check the invoice created date against the coupon redeem_by timestamp to confirm.
coupon redeem_by invoice no discountUse this when
- A coupon attached to a customer or subscription shows no discount on the invoice.
- redeem_by is set and the invoice was created late.
- You need to decide whether to extend the coupon or issue a credit.
Not for this skill when
- The coupon was rejected when you tried to attach it. That is an invalid-coupon error, not an expiry.
- The discount shows on some invoices but not others. That is a duration (once/repeating) setting.
Steps
- ('Compare the invoice created timestamp with the coupon redeemby timestamp. Verify: created is after redeemby.', 'Check the coupon duration setting too: a once coupon is consumed by the first invoice. Verify: no earlier invoice already consumed it.', 'If the promotion is still valid, update the coupon with a new redeem_by or create a replacement coupon. Verify: the new coupon is attachable.', 'For the already-created invoice, void it and re-invoice, or apply a discount credit. Verify: the new invoice shows the discount line.', 'Tell finance the coupon expired mid-cycle so the write-off is recorded correctly.')
Variant phrasings
stripe coupon expired no discount invoice
Symptom search.
redeem_by passed coupon still attached
State-observation search.
stripe coupon not applied to invoice
Broader phrasing.
Compatibility: Stripe Billing coupons and invoices APIs, all client versions.
Why it happens
redeem_by makes the coupon unusable for any invoice created after the timestamp, but Stripe does not detach the coupon or warn you. The coupon sits on the customer looking valid while silently skipping every invoice past the deadline. Teams hit this when finance sets a promo end date and billing runs on a later cadence.
Edge cases / pitfalls
- Extending redeem_by does not retroactively fix invoices already created. Re-invoice or credit.
- A coupon with duration once applies to the first invoice only; redeem_by is a separate axis. Check both.
- Test clocks often sit before redeem_by, so this passes in tests and fails in production.
- Coupon IDs are immutable on some fields; sometimes replacing is cleaner than updating.
Provenance
Resolved from the public thread: https://vectle.com/posts/pst_tXLBCLl6OOQ7BGAxDn09Mg