# Demo App Walkthrough

Run the Finix reference app to see the Payment Sheet in action, including Modal and Push presentations with SwiftUI and Objective-C examples.

**Before you start**, complete the [Getting Started](/ios/online/getting-started) guide. You'll need your Finix merchant credentials and IDs from the Finix Dashboard.

## Download and Open the Demo App

Downloading the demo app from GitHub
1. Go to the [demo app repository](https://github.com/finix-payments/FinixPaymentSheet) on GitHub.
2. Click **Code** → **Download ZIP** (or clone the repo).
3. Open the demo app in Xcode.


## Configure and Run the Demo App Project

Configure the Payment Sheet demo app
1. In Xcode, select the **PaymentSheetDemo** project in the navigator.
2. Select the **PaymentSheetDemo** target and go to **Signing & Capabilities**.
3. Under **Signing**, change the default **Bundle Identifier** (e.g., `com.yourcompany.PaymentSheetDemo`).
4. Select your **Team**.
5. In the main toolbar, select a Run destination such as an iOS simulator or physical device.
6. Click **Build and Run** (the play button).


## Configure the Demo App

When the app opens:

1. Tap the configuration button (the gear icon in the top-right corner).


Demo App Configuration button
1. From the **Sandbox** tab, enter the values you gathered previously:


Payment Sheet Demo App Configuration screen
## Explore the Demo App

Use the demo app to see how the Payment Sheet looks and behaves before wiring it into your own code. Each example is also available in both SwiftUI and Objective-C so you can inspect the implementation in the language you'll ship.

### Form Styles

The demo app renders the Payment Sheet in each of the available [Form Styles](/ios/online/form-styles). Open each example to see which fields the buyer sees and when each style is appropriate.

| Style | Swift Value | Fields Collected |
|  --- | --- | --- |
| **Minimal** | `.minimal` | Card Number, Expiration, CVV |
| **Basic** | `.basic` | Name, Card Number, Expiration, CVV |
| **Partial** | `.partial` | Name, Card Number, Expiration, CVV, ZIP |
| **Complete** | `.complete` | Name, Card Number, Expiration, CVV, Full Address |


### Presentation Styles

The demo app showcases two ways to present the card Payment Sheet, plus a separate sheet for collecting bank account details.

| Presentation | When to Use | Behavior |
|  --- | --- | --- |
| **Modal** | A self-contained checkout step the buyer completes and dismisses. | Slides up from the bottom over the current screen. Dismissed with a **Cancel** button. |
| **Push** | Payment entry that fits inside an existing navigation flow (for example, a multi-step checkout). | Slides in from the right as the next screen. Dismissed with the **Back** button. |
| **Bank Account** | Collecting ACH account and routing numbers instead of card details. | Presented modally. |


### Configuration Options

The demo app also exposes the knobs on [Configuration](/ios/online/configuration), so you can see each one applied in a live sheet:

- Show **Country** and **Cancel** buttons.
- Card scanning via the device camera.
- 3D Secure authentication.


## Next Steps

With a working reference integration in hand, continue to the [Integration Guide](/ios/online/integration) to add the Payment Sheet iOS SDK to your own app.