---
updatedAt: 2025-11-13T14:19:41.000Z
agentTools:
  siteIndex: https://docs.affirm.com/llms.txt
  projectIndex: https://docs.affirm.com/payments/llms.txt
---

# Set Up In-Store

Integrate Affirm into your point-of-sale system to offer flexible payment options in-store. This guide covers initiating checkouts, sending payment links, authorizing transactions, and managing orders for a seamless customer experience.

<HTMLBlock>{`
<style>
  .dropdown-menu {
    font-family: Arial, sans-serif;
    max-width: 250px;
    margin-left: auto; /* Align to the right */
  	margin-right: 0; /* Ensure it's flush to the right */
    border: 1px solid #ddd;
    border-radius: 8px;
    padding: 10px;
    background: #4A4AF4;
    overflow: hidden; /* Ensure the container grows with content */
  }

  .dropdown-item {
    margin-bottom: 10px;
  }

  .dropdown-toggle {
    display: block;
    width: 100%;
    text-align: left;
    padding: 10px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
    cursor: pointer;
  }

  .dropdown-toggle:hover {
    background: #f0f0f0;
  }

  .dropdown-content {
    display: none;
    margin-top: 5px;
    padding: 10px;
    background: #fff;
    border: 1px solid #ddd;
    border-radius: 4px;
  }

  .dropdown-item.open .dropdown-content {
    display: block;
  }

  .flag-icon {
    width: 20px;
    height: 20px;
    margin-right: 10px;
  }

  .product-item {
    margin-bottom: 5px;
    color: black;
  }

  .product-icon {
    width: 20px;
    height: 20px;
    margin-right: 10px;
  }
  
  .country-title {
    font-family: Arial, sans-serif;
    font-size:20px;
    text-align: center;
    font-weight: bold;
    color: #ffffff;
  } 

</style>
  <div class="dropdown-menu">
    <p class="country-title" alt="Countries where this product is available">Country Availability</p>

    <div class="dropdown-item">
      <button class="dropdown-toggle" onclick="toggleDropdown(event)" alt="Drop down menu displaying the available countries for this product">
        <b>Country List</b> ⬇️
      </button>
      <div class="dropdown-content">
        <div class="product-item">
          <img src="https://files.readme.io/a4c8b3d6596d943e2b93c82cb1d432a2edaf6998667835c2e97ef4a31d460c7e-us-circle-01.png" alt="USA" class="flag-icon">
          USA
        </div>
        <div class="product-item">
          <img src="https://files.readme.io/3ca294a1b4b8b8506c3ff32876abc6e3e33d0e65a509dab81398915094bdbc5c-61TcZ33ZrJL._AC_UY1000_.jpg" alt="Canada" class="flag-icon">
          Canada
        </div>
        <div class="product-item">
          <img src="https://files.readme.io/db98461fef617df7c9970e98f01150f067fcee1fc823a450f09056138b9f70be-united-kingdom-flag-rounded-icon-uk-flag-union-jack-vector.jpg" alt="UK" class="flag-icon">
          UK
        </div>
      </div>
    </div>

  </div>
`}</HTMLBlock>

## Prerequisites

* Create an account in the [Affirm Merchant Dashboard](https://www.affirm.com/dashboard/signin).
* Review the [Transactions API reference](https://docs.affirm.com/developers/reference/transaction-api-endpoints).

## Steps

### 1. In-Store Checkout

Sales associates select Affirm as a payment option in your point-of-sale (POS) system. This action [triggers a request](https://docs.affirm.com/developers/reference/store) to Affirm to send a checkout link via email or text to the customer directly.

```http
POST /api/v2/checkout/store HTTP/1.1
Host: sandbox.affirm.com
Content-Type: application/json

{
      "merchant": {
        "public_api_key":               "PUBLIC_API_KEY",
        "user_cancel_url":				"https://www.google.com",
        "user_confirmation_url":        "https://www.affirm.com",
        "user_confirmation_url_action": "POST",
       "name":                         "In-store Affirm demo"
      },
      "billing":{
        "name":{
          "full":                        "John Doe"
        },
        "address":{
          "line1":                       "325 Pacific Ave",
          "city":                        "San Francisco",
          "state":                       "CA",
          "zipcode":                     "94112",
          "country":                     "USA"
        },
        "phone_number":                  "4155552222",
        "email":                         "john.doe@affirm.com"
      },
  "metadata": {
    "entity_name": "Vignan 1234",
    "store_location": "Denver"
  },
      "order_id":                        "00de5cee-7226-4aec-b729-a571f773a58c",
      "total":                           5000         
  }
```

> 🚧 Receiving the Checkout URL
>
> The Store API sends SMS text messages only in the Affirm Live environment. During Sandbox environment testing, use email messages to receive the Checkout URL to complete your Affirm purchase.

### 2. Webhook Confirm Event

When a user receives and confirms their loan, Affirm's server is notified of that event. A `checkout_id` is POSTed back to your server at the webhook URL you provide.

### 3. Create Order

On confirmation, Affirm's server POSTs back to your server a checkout event containing the `checkout_id`. This `checkout_id`, also called the [transaction\_id](https://docs.affirm.com/developers/reference/authorize_transaction#:~:text=202307011027-,transaction_id,-string), must be [authorized](https://docs.affirm.com/developers/reference/authorize_transaction) securely before saving the order or updating the order's status on the in-store terminal.

### 4. In-Store Confirmation

Upon a successful authorization via Affirm, the in-store terminal must be able to receive the order confirmation and reflect paid status in near-real-time.

### 5. Manage Order

You can initiate different [transaction actions](https://docs.affirm.com/payments/docs/actions) depending on your internal processes.

## What’s Next?

* [Business Hub: In-Store Marketing Resources and Assets](https://businesshub.affirm.com/hc/en-us/articles/7585063635476-In-Store-Marketing-Resources-and-Assets)
* [API Reference](https://docs.affirm.com/developers/reference/introduction)
* [Managing Transactions](https://docs.affirm.com/developers/docs/managing-transactions)

# Sibling pages

* [About In-Store](https://docs.affirm.com/payments/docs/checkout-in-store.md)
* [Direct API In-Store Without Webhooks](https://docs.affirm.com/payments/docs/direct-api-in-store-without-webhooks.md)

# Related topics

* [About Direct API](https://docs.affirm.com/payments/docs/direct-api-overview.md)