# Coupons

Use coupons to reward customers, generate sales, or to test new pricing strategies.
Coupons enable you to apply different types of discounts to invoices, subscriptions, and pricing plans.
Redeemed coupons are attached to a customer's account.
Depending on the coupon restrictions, the redeemed coupons are then applied from the customer's account to subsequent invoices or subscriptions.
Redeemed coupons can only be applied to invoices of the same currency.
Once a coupon is redeemed it cannot be modified.
You may deactivate a coupon or create a new coupon, but you cannot reuse the same coupon code.
If you have a use case where you must reuse the same code, [contact Rebilly](https://www.rebilly.com/contact/).

 - [Coupon restriction types](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-restriction-types.md): ### Coupon restriction types The following coupon description types are available: - `restrict-to-countries`: Restricts a coupon for use in specific countries. - `discounts-per-redemption`: Restricts
 - [GET /coupons-redemptions](https://www.rebilly.com/docs/dev-docs/api/coupons/getcouponredemptioncollection.md): Retrieves a list of coupon redemptions.
 - [POST /coupons-redemptions](https://www.rebilly.com/docs/dev-docs/api/coupons/postcouponredemption.md): Redeems a coupon.
 - [GET /coupons-redemptions/{id}](https://www.rebilly.com/docs/dev-docs/api/coupons/getcouponredemption.md): Retrieves a coupon redemption with a specified ID.
 - [POST /coupons-redemptions/{id}/cancel](https://www.rebilly.com/docs/dev-docs/api/coupons/postcouponredemptioncancellation.md): Cancels a coupon redemption with a specified ID.
 - [GET /coupons](https://www.rebilly.com/docs/dev-docs/api/coupons/getcouponcollection.md): Retrieves a list of coupons.
 - [POST /coupons](https://www.rebilly.com/docs/dev-docs/api/coupons/postcoupon.md): Creates a coupon.
 - [GET /coupons/{id}](https://www.rebilly.com/docs/dev-docs/api/coupons/getcoupon.md): Retrieves a coupon with a specified ID.
 - [PUT /coupons/{id}](https://www.rebilly.com/docs/dev-docs/api/coupons/putcoupon.md): Creates or updates (upserts) a coupon with a specified coupon ID.
 - [POST /coupons/{id}/expiration](https://www.rebilly.com/docs/dev-docs/api/coupons/postcouponexpiration.md): Specifies the expiration time of a coupon with a specified ID. The `expiredTime` of a coupon must be greater than its `issuedTime`. > **Note:** This operation cannot be performed on expired coupons.
 - [POST coupon-application-removed](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-application-removed.md)
 - [POST coupon-applied](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-applied.md)
 - [POST coupon-expiration-modified](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-expiration-modified.md)
 - [POST coupon-expired](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-expired.md)
 - [POST coupon-issued](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-issued.md)
 - [POST coupon-modified](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-modified.md)
 - [POST coupon-redeemed](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-redeemed.md)
 - [POST coupon-redemption-canceled](https://www.rebilly.com/docs/dev-docs/api/coupons/coupon-redemption-canceled.md)
