# PunchOut Catalog

PunchOut lets your buyers access your product catalog directly from their procurement system -- such as SAP Ariba, Coupa, Jaggaer, or Oracle Procurement -- without leaving their purchasing workflow. The buyer "punches out" from their procurement platform into your catalog, browses and selects items, and the cart is returned to the procurement system for approval and purchase order creation.

AccessIQ acts as the identity and session broker between the procurement platform and your catalog. It handles authentication, session lifecycle, and cart transfer so your team does not need to build procurement integration from scratch.

> PunchOut is available on the **Business** plan and above.

## How PunchOut Works

1. A buyer clicks a catalog link in their procurement system.
2. The procurement system sends a PunchOut Setup Request to AccessIQ.
3. AccessIQ authenticates the request using the shared credentials you configured.
4. The buyer is redirected to your supplier catalog to browse products.
5. When the buyer finishes shopping, the selected items are sent back to the procurement system as an order message.
6. The procurement system uses the returned cart for approval routing and purchase order creation.

## Supported Protocols

AccessIQ supports two industry-standard procurement protocols:

| Protocol | Description                                                                                                | Common Platforms          |
| -------- | ---------------------------------------------------------------------------------------------------------- | ------------------------- |
| **cXML** | Commerce eXtensible Markup Language. The most widely used protocol for enterprise procurement integration. | SAP Ariba, Coupa, Jaggaer |
| **OCI**  | Open Catalog Interface. Used primarily with SAP-based procurement systems.                                 | SAP SRM, SAP S/4HANA      |

When creating a connection, you choose the protocol that matches your trading partner's procurement platform.

## Setting Up a PunchOut Connection

### Navigate to PunchOut

1. In the sidebar, go to **B2B & Partners > PunchOut**.
2. You will see a list of all existing connections with their status, platform, and protocol.

### Create a New Connection

1. Click **New Connection** to open the setup wizard.
2. Complete each step:

| Step            | What to Configure                                                                                                                   |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Platform**    | Select the procurement platform: Ariba, Coupa, Jaggaer, Oracle, or Custom.                                                          |
| **Protocol**    | Choose cXML or OCI based on your partner's requirements.                                                                            |
| **Credentials** | Enter the connection name, buyer identity (such as a DUNS number or Buyer ID), shared secret for authentication, and sender domain. |
| **URLs**        | Set the Return URL (where buyers return after browsing) and the Browser Form Post URL (where cart data is submitted).               |
| **Review**      | Confirm all settings and create the connection.                                                                                     |

3. Click **Create** to save the connection.

### Connection Properties

Once created, each connection displays the following details:

* **Name** -- a descriptive label for the connection (e.g., "Acme Corp - Ariba")
* **Platform** -- the procurement platform (Ariba, Coupa, Jaggaer, Oracle, Custom)
* **Protocol** -- cXML or OCI
* **Identity** -- the buyer's identity credential
* **Sender Domain** -- the domain used in protocol message headers
* **Return URL** -- where the buyer is redirected after catalog browsing
* **Browser Form Post URL** -- the endpoint that receives the cart data
* **Status** -- Active or Inactive
* **Created / Updated** -- timestamps for tracking changes

### Edit a Connection

1. Open the connection from the list.
2. Click **Edit** in the Connection Details section.
3. Update the identity, sender domain, return URL, or browser form post URL.
4. Click **Save** to apply your changes.

## Managing Supplier Catalogs

Each connection can have one or more supplier catalogs. Catalogs define what the buyer can browse during a PunchOut session.

### Add a Catalog

1. Open a connection from the list.
2. Scroll to the **Supplier Catalogs** section.
3. Click **Add Catalog**.
4. Fill in the catalog details:

| Field                 | Description                                                                 |
| --------------------- | --------------------------------------------------------------------------- |
| **Catalog Name**      | A descriptive label, such as "Office Supplies" or "IT Equipment". Required. |
| **Catalog URL**       | The URL where the buyer browses products. Required.                         |
| **Supplier Domain**   | The supplier's network identifier (e.g., NetworkId). Optional.              |
| **Supplier Identity** | The supplier's Ariba Network ID or equivalent identifier. Optional.         |

5. Click **Create Catalog**.

### Activate or Deactivate a Catalog

Each catalog has an activate/deactivate toggle. Deactivating a catalog removes it from buyer sessions without deleting it. You can reactivate it later.

When a connection has a single active catalog, buyers are routed directly to it. If multiple catalogs are active, buyers see a catalog selection step.

### Delete a Catalog

Click the delete icon next to a catalog to permanently remove it. You will be asked to confirm before deletion.

## Testing a Connection

Before going live with a trading partner, test the connection to verify the configuration:

1. Open the connection.
2. Click the **Test** button in the header.
3. The test checks:
   * Whether credentials are properly configured
   * How many active catalogs are attached
   * Whether the protocol configuration is valid

A success or failure message appears at the top of the page with a summary of the test results.

## Activating and Deactivating Connections

* Click **Deactivate** to temporarily disable a connection. Incoming PunchOut requests for this connection will be rejected.
* Click **Activate** to re-enable a previously deactivated connection.

This is useful for scheduled maintenance or when onboarding a new partner -- you can configure everything first and activate only when ready.

## Organization Scoping

By default, a connection is available tenant-wide -- any buyer in your tenant can use it regardless of which organization they belong to. If you need to restrict a connection to specific parts of your organization hierarchy, you can add organization scopes.

### When to Use Organization Scoping

* You have multiple business units that use different procurement platforms (e.g., Northeast uses Ariba, Midwest uses Coupa).
* You want to limit which organizations can initiate PunchOut sessions through a specific connection.
* Your supplier catalog needs to personalize content or pricing by organization.

### Adding Organization Scopes

1. Open a connection from the list.
2. Scroll to the **Organization Scope** section.
3. Click **Add Organization**.
4. Select the organization from the hierarchy picker.
5. Optionally enable **Inherit to children** -- when enabled, all child organizations under the selected org are automatically included.
6. Click **Save**.

You can add multiple organization scopes to a single connection. The connection will be available to buyers in any of the scoped organizations.

### Removing Organization Scopes

Click the remove icon next to an organization scope to delete it. If you remove all organization scopes, the connection reverts to tenant-wide availability.

### How Scoping Affects Sessions

When a buyer initiates a PunchOut session on a scoped connection, the session context includes the list of allowed organizations. Your supplier catalog can retrieve this context via the SDK to personalize the shopping experience -- for example, showing org-specific pricing or filtering products by department.

If the connection is tenant-wide (no scopes configured), the session context reports `tenantWide: true` and no org filtering is needed.

## Monitoring PunchOut Sessions

Navigate to **B2B & Partners > PunchOut Sessions** to monitor buyer activity.

### Session States

Each session progresses through a series of states:

| Status             | Meaning                                                                                                   |
| ------------------ | --------------------------------------------------------------------------------------------------------- |
| **Initiated**      | A Setup Request was received from the procurement system.                                                 |
| **Authenticating** | The buyer is being redirected to single sign-on.                                                          |
| **Authenticated**  | SSO completed successfully and an access token was issued.                                                |
| **Browsing**       | The buyer is actively browsing the supplier catalog.                                                      |
| **Cart Returned**  | The buyer finished shopping and cart items were sent back to the procurement system.                      |
| **Expired**        | The session timed out before the buyer completed their cart. Sessions expire after a configurable period. |
| **Error**          | Something went wrong during the session. Check the session details for more information.                  |

### Viewing Session Details

Click any session to see:

* **Timeline** -- a visual progression showing which states the session passed through and when.
* **Session Info** -- the protocol, connection name, buyer identity, and timestamps.
* **Cart Items** -- a table listing each item the buyer selected, including description, quantity, unit price, and line total.
* **Raw Messages** -- collapsible panels showing the Setup Request, Setup Response, and Order Message for debugging.

## Troubleshooting

| Problem                                 | What to Check                                                                                                                           |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| Setup request rejected                  | Verify the shared secret and buyer identity match on both sides. Open the connection and confirm the Identity and Sender Domain values. |
| Catalog not loading                     | Confirm the Catalog URL is accessible from the internet and returns valid content. Check that the catalog is set to Active.             |
| Cart not returned to procurement system | Check the Return URL and Browser Form Post URL. Ensure the order message format matches the partner's expected protocol (cXML or OCI).  |
| Sessions stuck in "Initiated"           | The buyer may not be completing SSO. Confirm that an identity provider is configured and accessible.                                    |
| Sessions expiring frequently            | Buyers may be taking too long. Consider increasing the session timeout if your catalog requires extended browsing.                      |
| Test connection fails                   | Verify that at least one active catalog is attached and that credentials are filled in.                                                 |

## Sharing Connection Details with Partners

After creating a connection, provide your trading partner with:

* Your PunchOut endpoint URL (shown in the connection details)
* Your domain and identity values
* The shared secret (exchange through a secure channel, not email)

Your partner will configure these values on their side to complete the integration.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://accessiq.gitbook.io/accessiq-docs/b2b-and-partners/punchout.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
