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

# The Merchant Object

## 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" }}>
        **user\_confirmation\_url** <span style={{ color: "red" }}>required</span>
      </td>

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

      <td style={{ textAlign: "left" }}>
        The URL the customer is redirected to if they successfully complete the Affirm checkout flow. A `checkout_id` will be sent to this URL in the `POST` request.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **user\_cancel\_url** <span style={{ color: "red" }}>required</span>
      </td>

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

      <td style={{ textAlign: "left" }}>
        The URL the customer is redirected to if they exit the Affirm checkout flow. This is the same if the user voluntarily cancels or closes the window before completion or if the user is denied.
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **public\_api\_key** <span style={{ color: "red" }}>required</span>
      </td>

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

      <td style={{ textAlign: "left" }}>
        The `public_api_key` can be retrieved from the Merchant Portal and **must** be included in the merchant object. The public key is specific to the sales channel the transaction starts. (e.g. e-commerce, telesales, in‑store, etc.)
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **user\_confirmation\_url\_action**
      </td>

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

      <td style={{ textAlign: "left" }}>
        Supported values:  

        * `GET`
        * `POST` (Default)
      </td>
    </tr>

    <tr>
      <td style={{ textAlign: "left" }}>
        **use\_vcn**
      </td>

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

      <td style={{ textAlign: "left" }}>
        A flag to enable virtual card integration (default is `false`).
      </td>
    </tr>

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

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

      <td style={{ textAlign: "left" }}>
        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.
      </td>
    </tr>
  </tbody>
</Table>

```json
{ 
   "user_confirmation_url":"https://merchantsite.com/confirm",
   "user_cancel_url":"https://merchantsite.com/cancel",
   "user_confirmation_url_action":"POST",
   "use_vcn": false,
   "name":"External Company Name"
}
```

# Sibling pages

* [The Customer Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/the-customer-object.md)
* [The Metadata Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/the-metadata-object.md)
* [Name Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/name-object-1.md)
* [Address Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/address-object-1.md)
* [Shipping & Billing Objects](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/shipping-billing-objects.md)
* [The Discount Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/the-discount-object.md)
* [The Item Object](https://docs.affirm.com/developers/v1.0-Global-Integration/reference/the-item-object.md)