---
updatedAt: 2026-01-27T20:34:08.000Z
agentTools:
  siteIndex: https://docs.affirm.com/llms.txt
  projectIndex: https://docs.affirm.com/developers/llms.txt
---

# The Checkout Object

The checkout object is the data payload that contains information about the customer's order. It is POSTed to the Affirm API to initialize Affirm checkout.

## Attributes

<Table align={["left","left","left"]}>
  <thead>
    <tr>
      <th style={{ textAlign: "left" }}>
        Attribute
      </th>

      <th style={{ textAlign: "left" }}>
        Data type
      </th>

      <th style={{ textAlign: "left" }}>
        Description
      </th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td style={{ textAlign: "left" }}>
        **merchant** <span style={{ color: "crimson" }}>required</span>
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        Merchant specific information. See [merchant details](https://docs.affirm.com/developers/reference/the-merchant-object).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **shipping** <span style={{ color: "red" }}>required</span>
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        The [shipping details](https://docs.affirm.com/developers/reference/shipping-billing-object).

        **Note:** The shipping object is only required for scenarios where goods are shipped. If you don't ship goods, such as if you're a travel merchant, contact support or your customer success manager to update your account configurations.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **billing**
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        The [billing details](https://docs.affirm.com/developers/reference/shipping-billing-object). For more details, see [Billing and Shipping Addresses](https://docs.affirm.com/developers/docs/merchant-supplied-billing-and-shipping-addresses).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **store**
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        [Address details](https://docs.affirm.com/developers/reference/the-store-object) for in-store transactions.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **items** <span style={{ color: "red" }}>required</span>
      </td>

      <td style={{ textAlign: "left" }}>
        _Array_
      </td>

      <td style={{ textAlign: "left" }}>
        An array of [item](https://docs.affirm.com/developers/reference/the-item-object).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **discounts**
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        A list of [discounts](https://docs.affirm.com/developers/reference/the-discount-object). Each discount must have their discount code.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **metadata**
      </td>

      <td style={{ textAlign: "left" }}>
        _object_
      </td>

      <td style={{ textAlign: "left" }}>
        See [metadata details](https://docs.affirm.com/developers/reference/the-metadata-object).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **order_id**
      </td>

      <td style={{ textAlign: "left" }}>
        _string_
      </td>

      <td style={{ textAlign: "left" }}>
        The merchant order id. This is stored for your own future reference.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **currency** <span style={{ color: "red" }}>required</span>
      </td>

      <td style={{ textAlign: "left" }}>
        _string_
      </td>

      <td style={{ textAlign: "left" }}>
        Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase.

        **Possible values:**

        * USD
        * CAD
        * GBP
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **financing_program**
      </td>

      <td style={{ textAlign: "left" }}>
        _string_
      </td>

      <td style={{ textAlign: "left" }}>
        A financing program applied on this checkout.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **shipping_amount**
      </td>

      <td style={{ textAlign: "left" }}>
        _integer_
      </td>

      <td style={{ textAlign: "left" }}>
        The total shipping amount in cents. A positive integer representing how much, in USD or CAD cents (e.g., 100 cents to charge $1.00).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **tax_amount**
      </td>

      <td style={{ textAlign: "left" }}>
        _integer_
      </td>

      <td style={{ textAlign: "left" }}>
        The total tax amount in cents. A positive integer representing how much, in USD or CAD cents (e.g., 100 cents to charge $1.00).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **total** <span style={{ color: "red" }}>required</span>
      </td>

      <td style={{ textAlign: "left" }}>
        _integer_
      </td>

      <td style={{ textAlign: "left" }}>
        The total amount of the checkout in USD or CAD cents (e.g., 100 cents to charge $1.00).
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **checkout_expiration**
      </td>

      <td style={{ textAlign: "left" }}>
        _timestamp_
      </td>

      <td style={{ textAlign: "left" }}>
        A `date-timestamp` of when the `checkout_id` will expire.                     - ISO timestamp format                           - No milliseconds
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **expiration_time**
      </td>

      <td style={{ textAlign: "left" }}>
        _timestamp_
      </td>

      <td style={{ textAlign: "left" }}>
        If set, this defines a time-to-live (TTL) deadline for the checkout. The checkout must be confirmed before this timestamp. Any confirmation attempt after the TTL expires will be rejected.
      </td>
    </tr>
  </tbody>
</Table>

> 🚧 Public API Key
>
> Please note that the `public_api_key` is **required** for checkout and store endpoints and must be included in the checkout object.

<Recipe slug="configure-the-checkout-object" title="Configure the Checkout object" />

<div class="rdmd-pinned">
  ```json
  {
     "merchant":{
        "user_confirmation_url":"https://merchantsite.com/confirm",
        "user_cancel_url":"https://merchantsite.com/cancel",
        "public_api_key": "{YOUR PUBLIC_API_KEY}",
        "user_confirmation_url_action":"POST",
        "use_vcn": false,
        "name":"Your Customer-Facing Merchant Name"
     },
     "shipping":{
        "name":{
           "full":"John Doe"
        },
        "address":{
           "line1":"633 Folsom St",
           "city":"San Francisco",
           "state":"CA",
           "zipcode":"94107",
           "country":"US"
        },
        "phone_number":"1235555555",
        "email":"joedoe@123fakestreet.com"
     },
     "billing":{
        "name":{
           "full":"John Doe"
        },
        "address":{
           "line1":"633 Folsom St",
           "city":"San Francisco",
           "state":"CA",
           "zipcode":"94107",
           "country":"US"
        },
        "phone_number":"1235555555",
        "email":"joedoe@123fakestreet.com"
     },
     "items":[
        {
           "display_name":"Awesome Pants",
           "sku":"ABC-123",
           "unit_price":10000,
           "qty":3,
           "item_image_url":"http://merchantsite.com/images/awesome-pants.jpg",
           "item_url":"http://merchantsite.com/products/awesome-pants.html"
        }
     ],
     "discounts":{
        "RETURN5":{
           "discount_amount":500,
           "discount_display_name":"Returning customer 5% discount"
        },
        "PRESDAY10":{
           "discount_amount":1000,
           "discount_display_name":"President's Day 10% off"
        }
     },
     "metadata":{
        "shipping_type":"UPS Ground",
        "mode":"modal"
     },
     "order_id":"JKLMO4321",
     "currency":"USD",  
     "financing_program":"fp_3z6r12r",
     "shipping_amount":10000,
     "tax_amount":600,
     "total":39100
  }
  ```
</div>

# Sub pages

* [The Merchant Object](https://docs.affirm.com/developers/reference/the-merchant-object.md)
* [The Discount Object](https://docs.affirm.com/developers/reference/the-discount-object.md)
* [The Metadata Object](https://docs.affirm.com/developers/reference/the-metadata-object.md)
* [The Store Object](https://docs.affirm.com/developers/reference/the-store-object.md)
* [The Item Object](https://docs.affirm.com/developers/reference/the-item-object.md)
* [The Itinerary Object](https://docs.affirm.com/developers/reference/the-itinerary-object.md)
* [Shipping & Billing Objects](https://docs.affirm.com/developers/reference/shipping-billing-object.md)
* [Name Object](https://docs.affirm.com/developers/reference/name.md)
* [Address Object](https://docs.affirm.com/developers/reference/address.md)

# Sibling pages

* [Checkout](https://docs.affirm.com/developers/reference/checkout-1.md)