Appearance
주문 - 웹훅
Events
주문 생성됨 (order.order.created.v1)
| Property | Value |
|---|---|
| Event Type | order.order.created.v1 |
| Description | 새로운 주문이 생성되었어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
order | Order | ✅ | 생성된 주문 정보 |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.created.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"order": {
"id": "620000000000000000",
"merchantId": 42,
"source": "POS",
"orderState": "OPENED",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"createdAt": "2025-09-01T00:00:00",
"updatedAt": "2025-09-01T00:00:00",
"openedAt": "2025-09-01T00:00:00",
"lineItems": [
{
"diningOption": "HERE",
"item": {
"title": "아메리카노",
"category": {
"title": "커피"
}
},
"itemPrice": {
"title": "기본",
"priceType": "FIXED",
"priceUnit": 1,
"priceValue": 3500,
"isTaxFree": false,
"taxPercentage": 10,
"taxInclusive": true
},
"optionChoices": [],
"appliedDiscounts": [],
"quantity": 1
}
],
"memo": "얼음 적게",
"payments": [],
"discounts": [
{
"title": "PROMOTION",
"type": "FIXED_AMOUNT",
"code": "PROMOTION_00",
"amount": 300,
"percentage": 0.0,
"fixedAmount": 300
}
],
"chargePrice": {
"listPrice": 3500,
"discountAmount": -300,
"tipAmount": 0,
"serviceChargeAmount": 0,
"taxAmount": 291,
"supplyAmount": 2909,
"taxExemptAmount": 0,
"totalAmount": 3200
}
}
}
}고객 호출됨 (order.call.created.v1)
| Property | Value |
|---|---|
| Event Type | order.call.created.v1 |
| Description | 매장에서 주문 준비를 완료하여 고객을 호출했습니다. 예를 들어, 토스 POS [현황] 화면에서 주문 카드의 호출 버튼을 누르면 이 이벤트가 발생합니다. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260526-0001" |
orderNumber | String | 주문 번호 | "A-001" | |
calledAt | timestamp | ✅ | 호출 시각 | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.call.created.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260526-0001",
"orderNumber": "A-001",
"calledAt": "2025-09-01T00:00:00"
}
}주문 요청됨 (order.order.requested.v1)
| Property | Value |
|---|---|
| Event Type | order.order.requested.v1 |
| Description | 새로운 주문이 요청되어 매장의 수락을 기다리고 있어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
requestedAt | timestamp | ✅ | 주문 요청 시각 | "2025-09-01T00:00:00" |
expectedReadyAt | timestamp | 주문의 예상 완료 시각 손님 기준에서의 예상 완료 시각을 의미해요. (예: 손님이 15분 뒤 픽업 예정) | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.requested.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"requestedAt": "2025-09-01T00:00:00",
"expectedReadyAt": "2025-09-01T00:00:00"
}
}주문 수락됨 (order.order.accepted.v1)
| Property | Value |
|---|---|
| Event Type | order.order.accepted.v1 |
| Description | 매장에서 주문을 수락했어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
acceptedAt | timestamp | ✅ | 주문 수락 시각 | "2025-09-01T00:00:00" |
estimatedReadyAt | timestamp | 예상 준비 완료 시각 매장 기준에서의 준비 완료 시각을 의미해요. (예: 20분 뒤 픽업 가능) | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.accepted.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"acceptedAt": "2025-09-01T00:00:00",
"estimatedReadyAt": "2025-09-01T00:00:00"
}
}주문 거절됨 (order.order.declined.v1)
| Property | Value |
|---|---|
| Event Type | order.order.declined.v1 |
| Description | 매장에서 주문을 거절했어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
declinedAt | timestamp | ✅ | 주문 거절 시각 | "2025-09-01T00:00:00" |
declinedReason | String | ALPHA 주문 거절 사유 | "메뉴 품절" | |
declinedCode | String | ALPHA 주문 거절 사유 코드 | "MENU_SOLD_OUT" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.declined.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"declinedAt": "2025-09-01T00:00:00",
"declinedReason": "메뉴 품절",
"declinedCode": "MENU_SOLD_OUT"
}
}주문 만료됨 (order.order.expired.v1)
| Property | Value |
|---|---|
| Event Type | order.order.expired.v1 |
| Description | 요청된 주문을 매장에서 일정 시간 내에 수락/거절하지 않아 자동으로 만료 처리되었어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
expiredAt | timestamp | ✅ | 주문 만료 시각 | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.expired.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"expiredAt": "2025-09-01T00:00:00"
}
}주문 시작됨 (order.order.opened.v1)
| Property | Value |
|---|---|
| Event Type | order.order.opened.v1 |
| Description | 주문이 시작되어 준비 중이에요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
openedAt | timestamp | ✅ | 주문 시작 시각 | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.opened.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"openedAt": "2025-09-01T00:00:00"
}
}주문 완료됨 (order.order.completed.v1)
| Property | Value |
|---|---|
| Event Type | order.order.completed.v1 |
| Description | 주문이 완료되었어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
completedAt | timestamp | ✅ | 주문 완료 시각 | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.completed.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"completedAt": "2025-09-01T00:00:00"
}
}주문 취소됨 (order.order.cancelled.v1)
| Property | Value |
|---|---|
| Event Type | order.order.cancelled.v1 |
| Description | 주문이 취소되었어요. |
이벤트 Payload
| Name | Type | Required | Description | Example |
|---|---|---|---|---|
orderId | String | ✅ | 주문 ID | "620000000000000000" |
orderKey | String | ✅ | 주문 키 | "EXT-20260512-0001" |
orderNumber | String | ✅ | 주문 번호 | "A-001" |
cancelledAt | timestamp | ✅ | 주문 취소 시각 | "2025-09-01T00:00:00" |
이벤트 Body 예시
json
{
"id": "000000000000000000000000",
"type": "order.order.cancelled.v1",
"createdAt": "2026-01-01T00:00:00.000Z",
"merchantId": 42,
"app": "my-awesome-app",
"data": {
"orderId": "620000000000000000",
"orderKey": "EXT-20260512-0001",
"orderNumber": "A-001",
"cancelledAt": "2025-09-01T00:00:00"
}
}