bolt.com is getting a new home → boltapp.com. Click here to transition smoothly to boltapp.com.

Skip to content

iOS SDK

Install and initialize the Bolt iOS SDK for checkout, account login, or custom payment flows.

View As MarkdownMCP

The BoltCheckoutSDK package provides client APIs for Bolt Checkout, Bolt account login, and custom payment flows. Install and initialize it once, then continue to the guide for the capability you are building.

Installation

Swift Package Manager

Add the Bolt SDK via Xcode:

  1. Go to File > Add Package Dependencies...
  2. Enter the repository URL: https://github.com/BoltApp/bolt-ios-checkout-sdk
  3. Select the version rule (e.g. "Up to Next Major") and click Add Package.

Or add it directly to your Package.swift:

Swift
dependencies: [
    .package(url: "https://github.com/BoltApp/bolt-ios-checkout-sdk", from: "0.8.2")
]

SDK initialization

The SDK must be initialized exactly once during your application's lifecycle. The best place to do this is in your AppDelegate or SwiftUI App entry point.

UIKit (AppDelegate)

Swift
import BoltCheckoutSDK

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    func application(_ application: UIApplication,
                     didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        BoltCheckout.initialize(
            publishableKey: "YOUR_PUBLISHABLE_KEY",
            merchantDivisionId: "YOUR_MERCHANT_DIVISION_ID",
            environment: .production // or .sandbox
        )

        return true
    }
}

SwiftUI

Swift
import BoltCheckoutSDK
import SwiftUI

@main
struct MyApp: App {
    init() {
        BoltCheckout.initialize(
            publishableKey: "YOUR_PUBLISHABLE_KEY",
            merchantDivisionId: "YOUR_MERCHANT_DIVISION_ID",
            environment: .production
        )
    }

    var body: some Scene {
        WindowGroup { ContentView() }
    }
}

BoltCheckout.initialize() will crash if called more than once. BoltCheckout.shared will crash if accessed before initialize() has been called.

Configuration requirements

To use the SDK, ensure you have the following credentials properly configured:

CredentialWhere It LivesPurpose
Publishable KeyMobile appPassed to BoltCheckout.initialize(). Safe to embed: it identifies your merchant account but cannot authorize actions.
Merchant API KeyBackend server onlyUsed to authenticate POST /v1/merchant/orders and other server-side Bolt API calls. Never embed in the mobile app.
Order TokenGenerated per checkoutReturned by the Merchant Orders API. Passed into BoltCheckoutConfig before launching checkout.

API quick reference

OperationSimplest Call
InitializeBoltCheckout.initialize(publishableKey: "key", merchantDivisionId: "id", environment: .production)
Checkout (completion)BoltCheckout.shared.startCheckout(config: config) { result in ... }
Checkout (delegate)BoltCheckout.shared.startCheckout(config: config, delegate: self)
Checkout (VC)present(BoltCheckoutViewController(config: config, delegate: self), animated: true)
Login (completion)BoltCheckout.shared.startLogin { result in ... }
Login (delegate)BoltCheckout.shared.startLogin(delegate: self)
Login (VC)present(BoltLoginViewController(delegate: self), animated: true)
Login with PKCEBoltCheckout.shared.startLogin(loginConfig: BoltLoginConfig(usePkce: true)) { ... }
Payment flowBoltCheckout.shared.startPaymentFlow(delegate: self)
Authorize paymentBoltCheckout.shared.authorizePayment(userInfo: info, orderToken: token, delegate: self)
LogoutBoltCheckout.shared.logOut()

Next steps

  • iOS checkout: Launch Bolt Checkout with an order token from your backend.
  • SSO Login: Authenticate users with their Bolt account via OAuth 2.0 and PKCE.
  • Custom Checkout: Build a custom checkout using the payment flow and authorization APIs.
  • API Reference: Full reference for all delegates, result types, and callbacks.

On this page