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

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

GET
/marketplace/v2/brands
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

GET
/marketplace/v2/brands/{brandRef}
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:

FieldTypeDescription
refstringUnique brand reference/code used throughout the API
namestringHuman-readable brand name for display
loginUrlstringBrand-specific authentication endpoint
logoUrlstringDirect 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 logoUrl for consistent brand representation in your UI. Respect brand guidelines.

  • Name
    Validate References
    Description

    Check that brandRef values 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 brandRef with 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;
  }
}

Was this page helpful?