Coupons
Update coupon
Update an existing coupon
PUT
Update coupon
Endpoint
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
uuid_code | string | Yes | Coupon’s unique identifier |
name | string | No | Updated customer-facing name |
metadata | object | No | Custom key-value pairs (merged into existing metadata) |
redeem | boolean | No | When true, records a redemption: increments times_redeemed and appends an entry to additional_info.redemptions |
transaction_key | string | No | Optional transaction identifier paired with redeem. Must match the key of an existing transaction in this program (created via POST /v1/transactions). Used to deduplicate redemptions — if the same transaction_key was already recorded for this coupon, or no transaction with that key exists, the request is a silent no-op |
sync | object | No | Optional object to assign a sync provider to a coupon that doesn’t have one yet. See Assigning a sync provider on update |
sync.provider | string | No | One of stripe, shopify, woocommerce, paddle. Must be currently connected. Can only be set when the coupon currently has no sync provider |
Promotion codes cannot be updated through this endpoint. Use the promotion code update endpoint instead.
Request
cURL
Assigning a sync provider on update
You can attach a sync provider to a coupon that was created without one. This is a one-way assignment: once a coupon has a sync provider, it cannot be changed or removed via the API.cURL
-
422if the provider is not connected to the program: -
422if the coupon already has a differentsync.provider:
Record a redemption
To record a redemption against an existing coupon — useful when your checkout doesn’t run through a connected payment integration — setredeem to true and (optionally) pass the originating transaction_key so the redemption is not double-counted on retries.
cURL
Response
Update coupon
