쿠폰 생성
쿠폰을 만듭니다. 필드는 관리자 쿠폰 만들기 창의 차례입니다 — 종류 · 할인 · 적용 카테고리 · 발급 · 사용 기한.
업데이트됨 10.16 — 쿠폰에 적용 카테고리가 생겼습니다생성
POST
https://api.mallstory.kr/v1/shop/{shop_unique}/coupons권한 promotions:write
요청 본문
| 필드 | 형식 | 설명 |
|---|---|---|
name필수 | string | 쿠폰명(50자까지). 손님에게 보입니다 |
status | string | 사용 · 중지. 비우면 active 코드값 |
coupon_type | string | 무엇을 깎는가. 비우면 PRODUCT 코드값 |
discount_type | string | 금액 · 퍼센트. 비우면 AMOUNT. 배송비 할인은 늘 AMOUNT 코드값 |
discount_value필수 | number | 금액 할인이면 원(1 이상, 최소 주문금액보다 작게), 퍼센트면 1~99 |
max_discount | number | 퍼센트 할인의 최대 할인금액(원). 퍼센트 할인이면 필수, 아니면 0 으로 저장 |
min_order_amount | number | 이 금액 이상일 때만 씀. 0 이면 조건 없음 |
category_mode | string | 카테고리를 가리는가. 비우면 OFF 코드값 |
category_ids | string[] | ON 일 때 쓸 수 있는 카테고리의 category_unique(1~20개). 고른 카테고리부터 그 하위 전체에 씀 — 하위를 따로 적지 않음. OFF 면 비워 저장. 응답에는 경로 이름(category_names)이 함께 옴 |
serial_mode | string | 쿠폰번호를 쓰는 방식. 비우면 OFF 코드값 |
serial | string | SAME 일 때 모두가 적는 번호 하나(글자 · 숫자 20자까지). 다른 방식이면 비워 저장 |
period_type | string | 사용 기한 방식. 비우면 DAYS 코드값 |
period_days | number | DAYS 일 때 발급일부터 며칠(1~999) |
start_at · end_at | YYYY-MM-DD | FIXED 일 때 사용 기간. 시작일 0시부터 종료일 끝(23:59:59)까지 |
issue_limit | number | 모두 몇 장까지 발급. 0 이면 제한 없음. UNIQUE 는 만든 번호 수가 곧 상한이라 0 |
per_person_limit | number | 한 사람이 몇 장까지. 0 이면 제한 없음. UNIQUE 는 0 |
bash요청
curl -X POST 'https://api.mallstory.kr/v1/shop/6a9515bdcb3ab5179ba767ad/coupons' \
-H 'Authorization: Bearer msat_8Hk2wQ7...' \
-H 'Content-Type: application/json' \
-d '{"name":"가을맞이 3,000원 할인","coupon_type":"ORDER","discount_type":"AMOUNT","discount_value":3000,"min_order_amount":30000,"period_type":"DAYS","period_days":7,"per_person_limit":1}'json201 Created
{
"coupon_unique": "6acdf4194555cab633c38c9c",
"code": "30e6ddb032cd139b",
"name": "가을맞이 3,000원 할인",
"status": "active",
"coupon_type": "ORDER",
"discount_type": "AMOUNT",
"discount_value": 3000,
"max_discount": 0,
"min_order_amount": 30000,
"serial_mode": "OFF",
"serial": "",
"serial_count": 0,
"serial_used_count": 0,
"period_type": "DAYS",
"period_days": 7,
"start_at": "",
"end_at": "",
"issue_limit": 0,
"per_person_limit": 1,
"issued_count": 0,
"used_count": 0,
"created": "2026-10-13T09:04:25.599Z",
"register_url": "https://testmall.xyz/coupon/register/30e6ddb032cd139b"
}3만 원 이상 주문에서 3,000원을 깎고, 받은 날부터 7일 쓰는 쿠폰입니다. 응답에는 category_mode · category_ids · category_names 도 옵니다(이 예시는 OFF · 빈 배열).
json요청 — 카카오 채널용 다른번호 발급 쿠폰(10%, 최대 5,000원, 11월 한 달)
{
"name": "카카오 채널 친구 쿠폰",
"coupon_type": "PRODUCT",
"discount_type": "PERCENT",
"discount_value": 10,
"max_discount": 5000,
"serial_mode": "UNIQUE",
"period_type": "FIXED",
"start_at": "2026-11-01",
"end_at": "2026-11-30"
}json요청 — 적용 카테고리를 둔 쿠폰(고른 카테고리와 그 하위 전체)
{
"name": "의류 5,000원 할인",
"coupon_type": "ORDER",
"discount_type": "AMOUNT",
"discount_value": 5000,
"min_order_amount": 30000,
"period_type": "DAYS",
"period_days": 7,
"per_person_limit": 1,
"category_mode": "ON",
"category_ids": [
"6acdf41b4555cab633c38caa"
]
}json400 — 목록에 없는 status
{
"code": "InvalidParameterValue",
"message": "status 는 active · stop 중 하나입니다.",
"request_id": "req_9f5a902601ab49c5a80bcca5989dfffb"
}json400 — 퍼센트 할인에 최대 할인금액이 없음
{
"code": "InvalidParameterValue",
"message": "최대 할인금액을 입력하세요.",
"request_id": "req_c2534236253641b3946d3db3ed518e75"
}오류
| 상태 | code | 언제 |
|---|---|---|
| 400 | InvalidParameterValue | 필수값 없음 · 목록에 없는 값 · 금액 · 기간 · 카테고리 규칙 위반(관리자 쿠폰 만들기 창과 같은 문장) |
| 401 | MissingLoginSession | Authorization 헤더에 Bearer 토큰이 없음 |
| 401 | InvalidAccessToken | 토큰이 틀리거나 만료 · 폐기됨 |
| 403 | InsufficientScope | 토큰에 promotions:write 가 없음 |