Redeem codes
How lifetime-deal buyers turn a marketplace code into a working subscription.
Lifetime-deal marketplaces do not send webhooks. They sell a code, and the buyer brings it to you. Redeem codes are how that becomes a real subscription in your panel.
What a code carries#
| Field | Notes |
|---|---|
| Code | Unique across the install. Matching is case-insensitive, so a customer retyping it in caps still works. |
| Plan | What redeeming grants. |
| Source | Which marketplace it belongs to. Drives both stacking and revenue reporting. |
| Max redemptions | Usually 1. |
| Times redeemed | Incremented on use. |
| Redeemed by | The account that used it. |
Redeeming#
Customers redeem at /auth/redeem. If they do not have an account yet, one is created and they get the same welcome and set-password email as a Paddle buyer.
Redeeming creates an order — with the source set to the marketplace, not to Paddle — and a subscription with a fresh license key. From there the customer is indistinguishable from any other: same panel, same downloads, same API.
What can go wrong, and what the customer is told#
| Situation | Result |
|---|---|
| No such code | Not found. |
| Already at max redemptions | Already used. |
| They already redeemed this code | Told so explicitly, rather than being given a duplicate. |
| Already at the top stacking tier | Told which tier they are at — and the code is not consumed, so they can still refund it on the marketplace. |
That last behaviour is deliberate. Redemption runs inside a transaction: if the tier cannot be granted, the whole thing rolls back and the code stays usable.
Double submissions#
Redemption takes a row lock on the code for the whole read-modify-write. A customer who double-clicks the button, or has two tabs open, cannot consume a code twice or land on the wrong stacking tier.
Revoking#
Codes can be revoked from the admin panel — for a marketplace refund, or for a batch that leaked before launch.