Merchant Verticals
Verticals turn a generic store into a purpose-built system — restaurants, bars, events, retail, or service businesses. Assigning a vertical stamps its feature set and default configuration onto the merchant, tailoring the payment moments and workflow tooling the store exposes.
Available verticals
GullyPay ships five platform vertical templates. Each is a fixed capability set — a list of features plus default config values.
| Vertical | Features |
|---|---|
| Restaurant | qr_ordering, table_management, split_payments, tipping, kitchen_display |
| Bar | tabs, group_payments, bottle_service, tipping, age_verification |
| Event | ticketing, qr_scanning, vip_upgrades, resale_control, capacity_management |
| Retail | pos_checkout, inventory, loyalty, barcode_scanning, returns |
| Service | bookings, deposits, subscriptions, calendar, reminders |
The five vertical templates and their feature sets are fixed platform configuration, not merchant-editable data. Assigning a vertical copies its features and default config onto the merchant's merchant_verticals record, where store tooling reads them.
Endpoints
/verticalsList all available vertical templates with feature sets and default config/verticals/templates/:verticalGet a single vertical template's features and default config/verticals/merchants/:merchantIdGet a merchant's current vertical assignment (or null)/verticals/merchants/:merchantIdAssign or change a merchant's verticalThe three GET reads are public and require no auth. POST /verticals/merchants/:merchantId requires a Bearer JWT (Authorization: Bearer <token>).
GET /verticals
Returns every vertical template. Public.
GET /verticals/templates/:vertical
Returns a single template, or null if the vertical id is unknown. Public.
GET /verticals/merchants/:merchantId
Returns the merchant's current assignment, or null if none has been set.
POST /verticals/merchants/:merchantId
Assign a vertical to a merchant, or change the existing one. Requires a Bearer JWT. The body carries the vertical id; the server copies that template's features and config onto the assignment (upserting the merchant_verticals row).
| Field | Type | Required | Description |
|---|---|---|---|
vertical | string | Yes | Template id — one of restaurant, bar, event, retail, service |
An unknown vertical id returns { "error": "Unknown vertical" } without modifying any record.