Brands
Access POS brand information to display brand logos, names, and login URLs. The Brands API helps you understand which POS systems locations are using and ensure compatibility with your integration.
Overview
The Brands endpoint provides access to brand information visible within the Shift4 ecosystem. Each location in the Marketplace API includes a brandRef field that references a brand. Use this API to retrieve brand details for display, validation, and integration compatibility checks.
Important Note
SkyTab POS is the go-forward platform for new integrations. Legacy POS brands are no longer supported for new releases. Focus your integration efforts on SkyTab for future compatibility.
Key Features
- Brand Details - Access names, logos, and login URLs
- Brand References - Unique identifiers used throughout the API
- Logo Assets - Direct URLs to brand logo images
- Authentication URLs - Brand-specific login endpoints
API Endpoints
Retrieve All Brands
Retrieves details for all accessible brands.
Method: GET
Endpoint: /marketplace/v2/brands
Authentication: Required
Returns a complete list of all brands available in the Shift4 ecosystem.
Request
curl -X GET https://conecto-api.shift4payments.com/marketplace/v2/brands \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
{
"results": [
{
"ref": "skytab",
"name": "SkyTab POS",
"loginUrl": "https://skytab.harbortouch.com/login",
"logoUrl": "https://cdn.shift4.com/brands/skytab-logo.png"
},
{
"ref": "lighthouse",
"name": "Lighthouse",
"loginUrl": "https://lighthouse.harbortouch.com/login",
"logoUrl": "https://cdn.shift4.com/brands/lighthouse-logo.png"
}
],
"meta": {}
}
Retrieve Specific Brand
Retrieves details for a single brand by reference.
Method: GET
Endpoint: /marketplace/v2/brands/{brandRef}
Authentication: Required
Path Parameters:
brandRef(string, required) - Brand reference/code identifier
Returns detailed information for the specified brand.
Request
curl -X GET https://conecto-api.shift4payments.com/marketplace/v2/brands/skytab \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
Response
{
"ref": "skytab",
"name": "SkyTab POS",
"loginUrl": "https://skytab.harbortouch.com/login",
"logoUrl": "https://cdn.shift4.com/brands/skytab-logo.png"
}
Brand Object
The Brand response object contains four required fields:
| Field | Type | Description |
|---|---|---|
ref | string | Unique brand reference/code used throughout the API |
name | string | Human-readable brand name for display |
loginUrl | string | Brand-specific authentication endpoint |
logoUrl | string | Direct URL to the brand's logo image |
Brand Reference Examples
Common brandRef values you may encounter:
skytab- SkyTab POS (recommended for new integrations)lighthouse- Lighthouse POS- Additional legacy brands may be present but are not recommended for new integrations
Using Brand Data
// Example: Display brand information for a location
async function displayLocationBrand(location) {
const brandResponse = await fetch(
`https://conecto-api.shift4payments.com/marketplace/v2/brands/${location.brandRef}`,
{
headers: {
'Authorization': `Bearer ${accessToken}`
}
}
);
const brand = await brandResponse.json();
return {
locationName: location.name,
brandName: brand.name,
brandLogo: brand.logoUrl,
loginUrl: brand.loginUrl
};
}
Use Cases
Location Display
Enhance location listings with brand information:
// Retrieve locations and enrich with brand data
const locations = await getLocations();
const brandCache = await getAllBrands();
const enrichedLocations = locations.map(location => ({
...location,
brand: brandCache.find(b => b.ref === location.brandRef)
}));
// Display in UI
enrichedLocations.forEach(location => {
console.log(`${location.name} - ${location.brand.name}`);
// Show brand logo: location.brand.logoUrl
});
Brand Compatibility Check
Validate brand compatibility before installation:
async function validateBrandCompatibility(locationId) {
const location = await getLocation(locationId);
const brand = await getBrand(location.brandRef);
// Focus on SkyTab for new integrations
if (brand.ref !== 'skytab') {
return {
compatible: false,
message: `This integration requires SkyTab POS. This location uses ${brand.name}.`
};
}
return { compatible: true };
}
Multi-Brand Support
Handle multiple brands in your integration:
async function installForLocation(locationId) {
const location = await getLocation(locationId);
const brand = await getBrand(location.brandRef);
// Brand-specific configuration
const config = {
locationId: location.id,
brandRef: brand.ref,
brandName: brand.name,
// Brand-specific settings
features: getBrandFeatures(brand.ref),
endpoints: getBrandEndpoints(brand.ref)
};
return await completeInstallation(config);
}
function getBrandFeatures(brandRef) {
const brandFeatures = {
'skytab': ['orders', 'menu', 'inventory', 'customers', 'employees'],
'lighthouse': ['orders', 'basic-menu'] // Limited features
};
return brandFeatures[brandRef] || [];
}
Best Practices
- Name
Cache Brand Data- Description
Retrieve all brands once and cache locally. Brand information changes infrequently.
- Name
Refresh Daily- Description
Update your brand cache daily or on application startup to ensure logo URLs remain valid.
- Name
Handle Missing Brands- Description
Gracefully handle 404 errors for non-existent brand references with fallback displays.
- Name
Focus on SkyTab- Description
Build integrations primarily for SkyTab POS. Legacy brands should be supported only for existing installations.
- Name
Display Brand Logos- Description
Use provided
logoUrlfor consistent brand representation in your UI. Respect brand guidelines.
- Name
Validate References- Description
Check that
brandRefvalues exist before making API calls to avoid unnecessary errors.
- Name
Store Brand Information- Description
Save brand details locally when storing location data for offline access and faster display.
- Name
Cross-Reference- Description
Always cross-reference location
brandRefwith brand details when displaying location information.
Integration Guidelines
SkyTab Focus
For new integrations:
- Do build your integration to work with SkyTab POS
- Do test thoroughly with SkyTab locations
- Do use SkyTab-specific features and capabilities
- Don't build new features for legacy brands
- Don't accept installations for unsupported brands
Legacy Brand Support
For existing installations only:
- Do maintain support for existing customers on legacy brands
- Do provide migration paths to SkyTab when possible
- Don't advertise support for legacy brands to new customers
- Don't invest in new features for legacy brands
Brand Validation Example
function validateBrandForNewInstallation(brandRef) {
const supportedBrands = ['skytab'];
if (!supportedBrands.includes(brandRef)) {
throw new Error(
'This location uses an unsupported POS brand. ' +
'Our integration requires SkyTab POS. ' +
'Please contact your Shift4 representative about upgrading to SkyTab.'
);
}
return true;
}
// Use during installation flow
async function beginInstallation(locationId) {
const location = await getLocation(locationId);
try {
validateBrandForNewInstallation(location.brandRef);
// Proceed with installation
} catch (error) {
// Display error to merchant
showBrandCompatibilityError(error.message);
return;
}
}