# Shopify Quickstart

> Accept a sandbox payment from a checkout link for a product in your Shopify store.

- **Bolt handles** hosted checkout and payment collection.
- **Your store owns** products, inventory, shipping settings, and order records.

Source: https://help.boltapp.com/platforms/shopify

<aside className="bolt-quickstart-summary not-prose" aria-labelledby="quickstart-outcome">
  <div className="bolt-quickstart-summary__header">
    <h2 id="quickstart-outcome">
      What you'll build
    </h2>

    <span className="bolt-quickstart-summary__time">
      <Icon name="clock" size="14" aria-hidden="true" />

       Est. 45–60 min
    </span>
  </div>

  <ul className="bolt-quickstart-summary__results">
    <li>
      <Icon name="circle-check" aria-hidden="true" />

      <span>Connected Shopify catalog</span>
    </li>

    <li>
      <Icon name="circle-check" aria-hidden="true" />

      <span>One product checkout link</span>
    </li>

    <li>
      <Icon name="circle-check" aria-hidden="true" />

      <span>Verified Shopify order</span>
    </li>
  </ul>
</aside>

## Your integration steps [#your-integration-steps]

<nav className="bolt-quickstart-steps not-prose" aria-label="Quickstart steps">
  <ol>
    <li>
      <a href="#1-create-app"><span className="bolt-quickstart-steps__number">1</span><span className="bolt-quickstart-steps__label">Create app</span></a>
    </li>

    <li>
      <a href="#2-connect-store"><span className="bolt-quickstart-steps__number">2</span><span className="bolt-quickstart-steps__label">Connect store</span></a>
    </li>

    <li>
      <a href="#3-configure-checkout"><span className="bolt-quickstart-steps__number">3</span><span className="bolt-quickstart-steps__label">Configure checkout</span></a>
    </li>

    <li>
      <a href="#4-create-link"><span className="bolt-quickstart-steps__number">4</span><span className="bolt-quickstart-steps__label">Create link</span></a>
    </li>

    <li>
      <a href="#5-verify-order"><span className="bolt-quickstart-steps__number">5</span><span className="bolt-quickstart-steps__label">Verify order</span></a>
    </li>
  </ol>
</nav>

**This flow:** a Shopify test store, Checkout Everywhere, and Bolt Payments sandbox.

## Before you begin [#before-you-begin]

Have these ready before the estimated integration time begins. Account provisioning, app approval and distribution setup are separate; the estimate has not been measured in a live walkthrough.

| Requirement  | What you need                                                                                                                        |
| ------------ | ------------------------------------------------------------------------------------------------------------------------------------ |
| Test store   | Shopify admin access to create and install an app, with any required app scopes/distribution approved for this store.                |
| Test product | One available physical product and a shipping address your test store serves.                                                        |
| Bolt sandbox | Checkout Everywhere and Bolt Payments enabled for your division. Confirm Shopify test-store connectivity with Bolt before beginning. |

**Platform support**

This guide is for Shopify. Supporting guides for this platform: [Managed Checkout theme installation](/platforms/shopify-installation) and the [app connection reference](/platforms/shopify-checkout-everywhere). Checkout links on BigCommerce are covered by the [Checkout Everywhere quickstart](/products/checkout-everywhere). Other platforms and custom web apps have their own quickstarts.

<IntegrationTable>
  <CommercePlatforms current="shopify" />
</IntegrationTable>

## 1. Create app [#1-create-app]

1. In your Shopify admin, open **Apps > Develop apps > Build apps in Dev Dashboard**.
2. Select **Create app**, name it **Bolt sandbox**, and select **Create**.
3. Open **Versions > Access**. Grant read/write access to **draft orders** and **orders**, read access to **products** and **discounts**, and read access to **all orders**. Keep access limited to the scopes required by this integration.
4. Select **Release**. On the app's **Home** tab, select **Install app**, choose your test store, and confirm **Install**.
5. Open the app's **Settings** and copy its **Client ID** and **Client Secret**. Keep the secret private; it belongs in Bolt's connection form, never your theme.

### Validate app [#validate-app]

Confirm the app is installed on the intended test store with the required access. If Shopify requires approval or distribution changes before installation, finish that setup before continuing. The [connection reference](/platforms/shopify-checkout-everywhere#optional-steps-for-shopify-partners) covers Partner distribution.

## 2. Connect store [#2-connect-store]

1. Open [Bolt sandbox Integrations](https://merchant-sandbox.boltapp.com/integrations) and select **Shopify**.
2. Enter your test store URL and the app's Client ID and Client Secret.
3. Select **Connect Shopify** and wait for the product catalog to import.

### Validate connection [#validate-connection]

The catalog count increases and your test product appears. Confirm the store URL and product variant match your test store. If the catalog stays empty, check the app installation and access scopes before creating links.

## 3. Configure checkout [#3-configure-checkout]

1. Open [sandbox Payments](https://merchant-sandbox.boltapp.com/payments). Select **Bolt Payments** and configure **Immediate Capture** for the test product's currency.
2. Open [Business Information](https://merchant-sandbox.boltapp.com/administration/business-info). Save your test store's support email and phone number under **Support Contact Information**.
3. Open [Checkout settings](https://merchant-sandbox.boltapp.com/checkout/configuration), add your store logo, and publish the change.
4. In Shopify, confirm the test product is in stock. Record its variant, price, currency and expected shipping/tax for your test address.

### Validate settings [#validate-settings]

Reopen Payments and confirm Immediate Capture is saved. Confirm the test currency is enabled and the support details belong to this store. Resolve unavailable payment settings with Bolt before taking a payment.

## 4. Create link [#4-create-link]

1. Open [Checkout Everywhere](https://merchant-sandbox.boltapp.com/checkout-everywhere), select **Create Campaign**, name it **Shopify sandbox**, and create it.
2. Inside the campaign, select **Create Links** and select the campaign and channel.
3. Choose **Direct to checkout**, find your test product, and select its variant. Leave promotion and optional tracking fields empty for this first purchase.
4. Select **Create Link** and copy the generated URL from the table row.

### Validate link [#validate-link]

Open the URL in a new tab. Confirm the intended product, variant, quantity, price, currency and branding. Keep the test link private. Do not substitute a production link if the sandbox catalog or link fails.

## 5. Verify order [#5-verify-order]

1. Enter your test shopper details and supported shipping address in the checkout opened from the link.
2. Compare shipping, tax and final total with the test store's settings.
3. Use the [Bolt Payments approved test card](/getting-started/test-cards#bolt-payments): `4111 1111 1111 1111`, expiration `03/30`, CVV `737`. Submit one payment and save its confirmation details.
4. Open [sandbox Transactions](https://merchant-sandbox.boltapp.com/transactions) and find the completed payment. Record its order number, amount and currency.
5. Open **Orders** in Shopify. Find the matching order and compare shopper, product, variant, quantity and total.

### Validate purchase [#validate-purchase]

You are done when the Bolt payment and matching Shopify order agree. A generated link or browser confirmation alone is not proof. If the payment exists but the store order is missing, investigate that transaction before attempting another purchase.

## Test before sharing [#test-before-sharing]

Run the [Shopify test plan](/platforms/shopify-test-plan). It tests this link flow; theme-button placement and production lifecycle operations have separate launch checks.

When finished, open the test link's row in Checkout Everywhere, select **Deactivate Link**, and confirm. Before publishing a real campaign, configure production separately and complete [production readiness](https://help.boltapp.com/developers/production-readiness-guides/). Test results here do not establish live fulfillment or refund readiness.
