---
updatedAt: 2025-11-13T14:40:40.000Z
agentTools:
  siteIndex: https://docs.affirm.com/llms.txt
  projectIndex: https://docs.affirm.com/developers/v1.0-Global-Integration/llms.txt
---

# Store

Initiate an Affirm checkout directly with your customers.

> 🚧 Store Checkout vs. Direct Checkout
>
> The **Store** endpoint automatically sends an email and SMS with checkout links to customers, whereas the **Direct** endpoint simply redirects customers to a checkout URL without sending any notifications.

# OpenAPI definition

```json
{
  "openapi": "3.0.0",
  "info": {
    "title": "Checkout API",
    "version": "3.0"
  },
  "security": [
    {
      "basicAuth": []
    }
  ],
  "paths": {
    "/checkout/store": {
      "post": {
        "tags": [
          "Checkout"
        ],
        "operationId": "Store",
        "summary": "Store",
        "description": "Initiate an Affirm checkout directly with your customers.",
        "parameters": [
          {
            "in": "header",
            "name": "country-code",
            "description": "Param used to identify the country in which Affirm is used and uses an \"alpha-3\" three-letter country code. Supported countries are the United States (`USA`), Canada (`CAN`), and the United Kingdom (`GBR`). If no value is entered, `country-code` will default to `USA`.",
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "affirm-locale",
            "description": "Optional param used to identify the language used in the browser expressed as the following- `en_US` if the `country-code` is set to `USA`, `en_CA` if the `country-code` is set to `CAN`, `fr_CA` for French Canadian, and if the `country-code` is set to `GBR` the `affirm-locale` will be `en_GB` for British English. If an `affirm-locale` is not defined, it will automatically default to English.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Returns the `checkout` object.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/StoreRequest",
                "description": "Returns the `checkout` object."
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "HTTP 200 OK",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/Store"
                }
              }
            }
          },
          "400": {
            "description": "HTTP 400 Bad Request",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorBadRequest"
                }
              }
            }
          },
          "401": {
            "description": "HTTP 401 Unauthorized",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorUnauthorized"
                }
              }
            }
          },
          "404": {
            "description": "HTTP 404 Not Found",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorNotFound"
                }
              }
            }
          }
        }
      }
    }
  },
  "servers": [
    {
      "url": "https://api.global.affirm.com/api/v2"
    },
    {
      "url": "https://api.global.sandbox.affirm.com/api/v2"
    }
  ],
  "components": {
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "schemas": {
      "ErrorBadRequest": {
        "properties": {
          "message": {
            "description": "The error message.",
            "example": "Bad Request",
            "type": "string"
          },
          "status_code": {
            "description": "The HTTP status code.",
            "example": 400,
            "type": "integer"
          },
          "type": {
            "description": "The error type.",
            "example": "BAD_REQUEST",
            "type": "string"
          },
          "code": {
            "description": "The error type.",
            "example": "BAD_REQUEST",
            "type": "string"
          }
        }
      },
      "ErrorNotFound": {
        "properties": {
          "message": {
            "description": "The error message.",
            "example": "Not Found",
            "type": "string"
          },
          "status_code": {
            "description": "The HTTP status code.",
            "example": 404,
            "type": "integer"
          },
          "type": {
            "description": "The error type.",
            "example": "NOT_FOUND",
            "type": "string"
          },
          "code": {
            "description": "The error type.",
            "example": "NOT_FOUND",
            "type": "string"
          },
          "token": {
            "description": "The error response embedded in a JWT token",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ErrorUnauthorized": {
        "properties": {
          "message": {
            "description": "The error message.",
            "example": "Unauthorized",
            "type": "string"
          },
          "status_code": {
            "description": "The HTTP status code.",
            "example": 401,
            "type": "integer"
          },
          "type": {
            "description": "The error type.",
            "example": "UNAUTHORIZED",
            "type": "string"
          },
          "code": {
            "description": "The error type.",
            "example": "UNAUTHORIZED",
            "type": "string"
          },
          "token": {
            "description": "The error response embedded in a JWT token",
            "type": "string"
          }
        },
        "type": "object"
      },
      "StoreRequest": {
        "type": "object",
        "required": [
          "merchant"
        ],
        "properties": {
          "merchant": {
            "type": "object",
            "description": "A list of items specific to the merchant.",
            "required": [
              "public_api_key",
              "user_cancel_url",
              "user_confirmation_url"
            ],
            "properties": {
              "public_api_key": {
                "type": "string",
                "description": "The merchant's public api key."
              },
              "user_cancel_url": {
                "type": "string",
                "description": "On customer cancellation redirect them to this merchant URL."
              },
              "user_confirmation_url": {
                "type": "string",
                "description": "On customer confirmation redirect them to this merchant URL."
              },
              "user_confirmation_url_action": {
                "description": "Supported values -'GET' -'POST'",
                "type": "string"
              },
              "name": {
                "type": "string",
                "description": "If you have multiple sites operating under a single Affirm account, you can override the external company/brand name that the customer sees. This affects all references to your company name in the Affirm UI."
              },
              "use_vcn": {
                "type": "boolean",
                "description": "A flag to enable virtual card integration (default is 'false')."
              }
            }
          },
          "billing": {
            "type": "object",
            "required": [
              "billing"
            ],
            "description": "The customer billing information.",
            "properties": {
              "name": {
                "type": "object",
                "properties": {
                  "first": {
                    "description": "The first name of the customer.",
                    "type": "string"
                  },
                  "full": {
                    "description": "The full name of the customer, which must contain at least two words.",
                    "type": "string"
                  },
                  "last": {
                    "description": "The last name of the customer.",
                    "type": "string"
                  }
                },
                "nullable": true
              },
              "address": {
                "type": "object",
                "properties": {
                  "street1": {
                    "type": "string",
                    "description": "Address line 1 (e.g., street, PO Box, or company name).",
                    "example": "123 Example Street"
                  },
                  "street2": {
                    "type": "string",
                    "description": "Address line 2 (The apartment #, floor or suite that complements the street address).",
                    "example": "Apt 123"
                  },
                  "city": {
                    "type": "string",
                    "description": "City, district, suburb, town, or village. "
                  },
                  "region1_code": {
                    "type": "string",
                    "description": "The 2-letter postal abbreviation or two character state code.",
                    "example": "BC",
                    "maxLength": 2,
                    "minLength": 2
                  },
                  "postal_code": {
                    "type": "string",
                    "description": "The postal code or zipcode of the address.",
                    "example": "V7X 3S9"
                  },
                  "country-code": {
                    "type": "string",
                    "description": "An \"alpha-3\" three-letter country code.",
                    "example": "CAN",
                    "maxLength": 3,
                    "minLength": 3
                  }
                }
              },
              "phone_number": {
                "description": "The phone number of the customer. It must be a valid U.S. phone number represented as a 10-digit string without any delimiters.",
                "example": "1234567890",
                "type": "string",
                "nullable": true
              },
              "email": {
                "description": "The email address of the customer.",
                "example": "test@example.com",
                "type": "string",
                "nullable": true
              }
            }
          },
          "total": {
            "required": [
              "total"
            ],
            "description": "The total amount in cents of the purchase.",
            "example": 20000,
            "type": "integer"
          },
          "currency": {
            "required": [
              "currency"
            ],
            "description": "Three-letter ISO `currency` code, in upper-case. Possible values are `USD`, `CAD`, and `GBP`. If no value is entered, `currency` will default to `USD`.",
            "type": "string",
            "example": "CAD"
          },
          "order_id": {
            "description": "The merchant id for this order.",
            "example": "A1B2C3D4",
            "maxLength": 128,
            "minLength": 1,
            "type": "string"
          },
          "tax_amount": {
            "description": "The shipping tax amount.",
            "example": 700,
            "type": "integer"
          },
          "shipping_amount": {
            "description": "The amount to ship the item.",
            "example": 400,
            "type": "integer"
          },
          "shipping": {
            "required": [
              "shipping"
            ],
            "type": "object",
            "properties": {
              "name": {
                "type": "object",
                "properties": {
                  "full": {
                    "required": [
                      "full"
                    ],
                    "description": "The customer's name.",
                    "example": "John Doe",
                    "type": "string"
                  },
                  "first": {
                    "description": "The customer's first name.",
                    "example": "John",
                    "type": "string"
                  },
                  "last": {
                    "description": "The customer's last name.",
                    "example": "Doe",
                    "type": "string"
                  }
                }
              },
              "email": {
                "description": "The email address of the customer.",
                "example": "test@example.com",
                "type": "string",
                "nullable": true
              },
              "phone_number": {
                "description": "The phone number of the customer. It must be a valid U.S. phone number represented as a 10-digit string without any delimiters.",
                "example": "1234567890",
                "type": "string",
                "nullable": true
              }
            }
          },
          "items": {
            "description": "An array of items based on the cart.",
            "type": "object"
          },
          "discounts": {
            "description": "An array of discount codes based on the merchant.",
            "type": "object"
          },
          "financing_program": {
            "description": "The applicable Affirm financing program",
            "type": "string"
          },
          "checkout_expiration": {
            "description": "A date-timestamp of when the `checkout_id` will expire.",
            "type": "string"
          }
        }
      },
      "Store": {
        "type": "object",
        "properties": {
          "redirect_url": {
            "description": "URL the consumer should be directed to in order to complete their loan.",
            "example": "https://affirm.com/checkout/ARQBLCL7NAMBTZ7F/new/HTSZAGURU7PZ8ZAG/",
            "type": "string"
          },
          "checkout_id": {
            "description": "Specific Checkout ID for the related request. This ID is embedded in the redirect_url.",
            "example": "HTSZAGURU7PZ8ZAG",
            "type": "string"
          }
        }
      }
    }
  },
  "x-readme": {
    "explorer-enabled": true,
    "proxy-enabled": true
  }
}
```

# Sibling pages

* [Read Checkout](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/read_checkout-1.md)
* [Direct](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/direct-1.md)
* [Update Checkout](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/update_checkout-1.md)
* [Checkout instrument](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/checkout_instrument-1.md)
* [Resend Checkout](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/resend_checkout-1.md)