Skip to content

Catalog API

토스 POS의 [상품] - [상품 · 할인][상품], [옵션], [카테고리] 메뉴를 통해 매장의 카탈로그를 관리할 수 있습니다. Catalog API를 통해 해당 정보를 조회할 수 있으며, 매장의 메뉴 구성과 상품 정보를 제공합니다.

Types

상품 (CatalogItem)

매장에 등록된 상품입니다. 소비자가 주문할 때 하나 또는 여러 상품을 주문에 포함하게 됩니다.

NameTypeRequiredDescriptionExample
idString상품 ID"42"
merchantIdLong매장 ID42
categoryCatalogCategory카테고리
상품은 반드시 하나의 카테고리에 속합니다.
titleString상품명"아메리카노"
codeString상품코드""
descriptionString상품 설명""
imageUrlString상품 이미지 URL""
labelsString[]상품 라벨 목록["신규"]
priceCatalogItemPrice가격
createdAttimestamp생성 시각"2025-09-01T00:00:00Z"
updatedAttimestamp수정 시각"2025-09-01T00:00:00Z"

상품 가격 (CatalogItemPrice)

NameTypeRequiredDescriptionExample
titleString가격명"기본"
priceTypeCatalogItemPriceType가격 종류"FIXED"
priceUnitLong가격 단위1
priceValueLong가격3000
barcodeString바코드""

상품 가격 종류 (CatalogItemPriceType)

ValueDescription
"FIXED"정가
"VARIABLE"시가
"UNIT"단위가격
"UNDEFINED"

카테고리 (CatalogCategory)

여러 상품을 그룹화하는 카테고리입니다. 토스 POS, 또는 고객에게 상품이 전시되는 키오스크 등의 채널에서 카테고리를 통해 상품을 탐색할 수 있습니다.

매장의 상품은 반드시 하나의 카테고리에 속합니다.

NameTypeRequiredDescriptionExample
idString카테고리 ID"42"
merchantIdLong매장 ID42
titleString카테고리명"커피"
codeString카테고리 코드""
createdAttimestamp생성 시각"2025-09-01T00:00:00Z"
updatedAttimestamp수정 시각"2025-09-01T00:00:00Z"

Methods

상품 단건 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/items/{itemId}
Response TypeCatalogItem
Description매장의 상품 하나를 조회합니다.

요청 파라미터

ParameterLocationTypeRequiredDescription
merchantIdPathLong매장 ID
itemIdPathString상품 ID

상품 복수건 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/items/by-ids
Response TypeCatalogItem[]
DescriptionID를 통해 매장의 상품 여러 건을 조회합니다. 최대 25건까지 조회 가능합니다.

요청 파라미터

ParameterLocationTypeRequiredDescription
merchantIdPathLong매장 ID
idsQueryString[]상품 ID 목록

상품 목록 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/items
Response TypeCatalogItem[]
Description매장의 상품 목록을 상품 ID 순으로 조회합니다.

요청 파라미터

ParameterLocationTypeRequiredDefaultDescription
merchantIdPathLong-매장 ID
pageQueryInt1조회할 페이지
sizeQueryInt100페이지 크기

상품 검색

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/items/search
Response TypeCatalogItem[]
Description조건에 맞는 상품을 검색합니다.

요청 파라미터

ParameterLocationTypeRequiredDescription
merchantIdPathLong매장 ID
categoryIdsQueryString[]카테고리 ID 목록
이 파라미터를 지정하면 검색 결과는 해당 카테고리에 속한 상품만 반환됩니다.
pageQueryInt1
sizeQueryInt100

카테고리 단건 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/categories/{categoryId}
Response TypeCatalogCategory
Description매장의 카테고리 하나를 조회합니다.

요청 파라미터

ParameterLocationTypeRequiredDescription
merchantIdPathLong매장 ID
categoryIdPathString카테고리 ID

카테고리 복수건 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/categories/by-ids
Response TypeCatalogCategory[]
DescriptionID를 통해 매장의 카테고리 여러 건을 조회합니다. 최대 25건까지 조회 가능합니다.

요청 파라미터

ParameterLocationTypeRequiredDescription
merchantIdPathLong매장 ID
idsQueryString[]카테고리 ID 목록

카테고리 목록 조회

PropertyValue
MethodGET
Path/api-public/openapi/v1/merchants/{merchantId}/catalog/categories
Response TypeCatalogCategory[]
Description매장의 카테고리 목록을 조회합니다.

요청 파라미터

ParameterLocationTypeRequiredDefaultDescription
merchantIdPathLong-매장 ID
pageQueryInt1조회할 페이지
sizeQueryInt100페이지 크기

Events

상품 생성됨 (catalog.item.created.v1)

PropertyValue
Event Typecatalog.item.created.v1
Description상품이 생성되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
itemCatalogItem생성된 상품 정보

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.item.created.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "item": {
            "id": "42",
            "merchantId": 42,
            "category": {
                "id": "42",
                "merchantId": 42,
                "title": "커피",
                "code": "CATEGORY_CODE",
                "createdAt": "2026-01-01T00:00:00Z",
                "updatedAt": "2026-01-01T00:00:00Z"
            },
            "title": "아메리카노",
            "code": "ITEM_CODE",
            "description": "아메리카노 설명",
            "imageUrl": "https://example.com/image.png",
            "labels": ["신규"],
            "price": {
                "title": "기본",
                "priceType": "FIXED",
                "priceUnit": 1,
                "priceValue": 3000,
                "barcode": "1234567890"
            },
            "createdAt": "2026-01-01T00:00:00Z",
            "updatedAt": "2026-01-01T00:00:00Z"
        }
    }
}

상품 수정됨 (catalog.item.updated.v1)

PropertyValue
Event Typecatalog.item.updated.v1
Description상품이 수정되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
itemCatalogItem수정된 상품 정보

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.item.updated.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "item": {
            "id": "42",
            "merchantId": 42,
            "category": {
                "id": "42",
                "merchantId": 42,
                "title": "커피",
                "code": "CATEGORY_CODE",
                "createdAt": "2026-01-01T00:00:00Z",
                "updatedAt": "2026-01-01T00:00:00Z"
            },
            "title": "아메리카노",
            "code": "ITEM_CODE",
            "description": "아메리카노 설명",
            "imageUrl": "https://example.com/image.png",
            "labels": ["신규"],
            "price": {
                "title": "기본",
                "priceType": "FIXED",
                "priceUnit": 1,
                "priceValue": 3000,
                "barcode": "1234567890"
            },
            "createdAt": "2026-01-01T00:00:00Z",
            "updatedAt": "2026-01-01T00:00:00Z"
        }
    }
}

상품 삭제됨 (catalog.item.deleted.v1)

PropertyValue
Event Typecatalog.item.deleted.v1
Description상품이 삭제되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
itemIdString삭제된 상품 ID"42"

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.item.deleted.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "itemId": "42"
    }
}

카테고리 생성됨 (catalog.category.created.v1)

PropertyValue
Event Typecatalog.category.created.v1
Description카테고리가 생성되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
categoryCatalogCategory생성된 카테고리 정보

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.category.created.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "category": {
            "id": "42",
            "merchantId": 42,
            "title": "커피",
            "code": "CATEGORY_CODE",
            "createdAt": "2026-01-01T00:00:00Z",
            "updatedAt": "2026-01-01T00:00:00Z"
        }
    }
}

카테고리 수정됨 (catalog.category.updated.v1)

PropertyValue
Event Typecatalog.category.updated.v1
Description카테고리가 수정되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
categoryCatalogCategory수정된 카테고리 정보

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.category.updated.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "category": {
            "id": "42",
            "merchantId": 42,
            "title": "커피",
            "code": "CATEGORY_CODE",
            "createdAt": "2026-01-01T00:00:00Z",
            "updatedAt": "2026-01-01T00:00:00Z"
        }
    }
}

카테고리 삭제됨 (catalog.category.deleted.v1)

PropertyValue
Event Typecatalog.category.deleted.v1
Description카테고리가 삭제되었습니다.

이벤트 Payload

NameTypeRequiredDescriptionExample
categoryIdString삭제된 카테고리 ID"42"

이벤트 Body 예시

json
{
    "id": "000000000000000000000000",
    "type": "catalog.category.deleted.v1",
    "createdAt": "2026-01-01T00:00:00.000Z",
    "merchantId": 42,
    "app": "my-awesome-app",
    "data": {
        "categoryId": "42"
    }
}

상품 추가 · 수정

지원 예정 안내

상품 및 재고를 추가, 수정하는 API는 2026년 하반기 중 지원 예정입니다.