Create a new store for the authenticated merchant. The store slug is auto-generated from the name, and JSONB configuration fields (notificationSettings, checkoutSettings) are initialized with defaults. Webhooks are managed separately via add-webhook — no rows exist on a freshly created store.
POST /v1/actions/store/create-store
Authentication: API Key
Request Body
Field Type Required Description namestring Yes Store name (1-48 characters, auto-trimmed)
Example Request
SDK
TypeScript (fetch)
Java
Python
Go
Rust
C
C++
cURL
wget
import { WaffoPancake } from "@waffo/pancake-ts" ;
const client = new WaffoPancake ({
merchantId: process . env . WAFFO_MERCHANT_ID ! ,
privateKey: process . env . WAFFO_PRIVATE_KEY ! ,
});
const { store } = await client . stores . create ({ name: "My Digital Store" });
console . log ( store . id ); // => "STO_2aUyqjCzEIiEcYMKj7TZtw"
console . log ( store . slug ); // => "my-digital-store-a1b2c3"
Success Response (200)
{
"data" : {
"store" : {
"id" : "STO_2aUyqjCzEIiEcYMKj7TZtw" ,
"name" : "My Digital Store" ,
"status" : "active" ,
"logo" : null ,
"supportEmail" : null ,
"website" : null ,
"slug" : "my-digital-store-a1b2c3" ,
"prodEnabled" : false ,
"notificationSettings" : {
"emailOrderConfirmation" : true ,
"emailSubscriptionConfirmation" : true ,
"emailSubscriptionCycled" : true ,
"emailSubscriptionCanceled" : true ,
"emailSubscriptionRevoked" : true ,
"emailSubscriptionPastDue" : true ,
"notifyNewOrders" : true ,
"notifyNewSubscriptions" : true
},
"checkoutSettings" : {
"defaultDarkMode" : false ,
"light" : {
"checkoutLogo" : null ,
"checkoutColorPrimary" : "#000000" ,
"checkoutColorBackground" : "#FFFFFF" ,
"checkoutColorCard" : "#F5F5F5" ,
"checkoutColorText" : "#1A1A1A" ,
"checkoutBorderRadius" : "8px"
},
"dark" : {
"checkoutLogo" : null ,
"checkoutColorPrimary" : "#FFFFFF" ,
"checkoutColorBackground" : "#1A1A1A" ,
"checkoutColorCard" : "#2A2A2A" ,
"checkoutColorText" : "#F5F5F5" ,
"checkoutBorderRadius" : "8px"
}
},
"deletedAt" : null ,
"createdAt" : "2026-01-15T10:30:00.000Z" ,
"updatedAt" : "2026-01-15T10:30:00.000Z"
}
}
}
Response Fields
Field Type Description idstring Store ID (Short ID format STO_xxx) namestring Store display name statusstring Store status (active, inactive, or suspended) logostring | null Store logo URL supportEmailstring | null Support email address websitestring | null Store website URL slugstring | null Auto-generated URL slug prodEnabledboolean Whether production mode is enabled notificationSettingsobject | null Notification preferences (see Notification Settings ) checkoutSettingsobject | null Checkout page theme (see Checkout Settings ) deletedAtstring | null Soft-delete timestamp (ISO 8601), null if active createdAtstring Creation timestamp (ISO 8601) updatedAtstring Last update timestamp (ISO 8601)
Errors
Retry policy: Never retry 4xx — fix the request and resubmit. Retry 5xx with exponential backoff (start 5s, max 3 attempts).
Status errors[0].messageWhat it means Recommended handling 400 Missing merchantId in request contextAPI Key did not resolve to a merchant context Do not retry. Check your API Key configuration.400 Missing required field: namename is absent from the bodyFix the input and resubmit. 400 Store name cannot be empty or contain only whitespacename is empty after trim()Fix the input and resubmit. 400 Store name cannot exceed 48 charactersname is longer than 48 charactersShorten the name and resubmit. 400 Cannot create more stores. Maximum limit of 20 stores per merchant has been reached.The merchant already owns 20 stores Do not retry. Delete an existing store first, or contact support to raise the limit.
Each merchant can create up to 20 stores . The store creator is automatically assigned the owner role.