[portfolio](https://geonwoo.kim/en/portfolio) › Lukuku

# Participant-only tournament voucher ordering for a sports brand's Korean online store

https://geonwoo.kim/en/portfolio/lukuku-club-match

Period: 2026.04 — 2026.09

Participants in a tennis club tournament run by the brand could buy at a discount with a voucher on a members-only page. I built the voucher ordering backend for it in about a week before the tournament.

Ordering backend that accepts only eligible products at the voucher price and blocks duplicate payments by the same member

Team: 3 people · Backend

Role: Voucher ordering API · Order validation · Duplicate payment prevention · Voucher close-out operations

Python · Shopify

- API that returns only the products eligible for the voucher price
- Order validation that checks each item's style and color against the voucher's item list and blocks anything else
- Bundle products that showed as unavailable in staging tests, matched to their Shopify admin state

## A voucher code shared by many

Problem: Many participants shared the same voucher code, so it could not identify duplicate payments.

Solution: Defined the cart key as a hash of the voucher code and the member ID. The same member with the same voucher always gets the same cart, and duplicate payments are rejected.

## Closing the voucher period and held orders

Problem: Orders placed during the voucher period were held instead of being sent to the ERP. When the period ended, every held order had to go through.

Solution: After the period ended, I switched the voucher to inactive, released the hold and started the ERP integration. All 13 held orders reached the ERP in about 2 seconds, and no held orders remained.


[offon · company-wide work management system](https://geonwoo.kim/en/portfolio/offon) · [Shopify store features and integrations for brands](https://geonwoo.kim/en/portfolio/lukuku-clients)
