> ## Documentation Index
> Fetch the complete documentation index at: https://docs.neoagent.io/llms.txt
> Use this file to discover all available pages before exploring further.

# TD SYNNEX ION

> Connect TD SYNNEX StreamOne ION so agents can read customers, subscriptions and prices, place orders, and add or remove licence seats

Neo connects to the [StreamOne ION API](https://docs.streamone.cloud/) (version 3), the cloud marketplace TD SYNNEX resellers buy Microsoft 365 and other subscriptions through. With it connected, an agent can:

* Find the ION customer behind a PSA company, and the Microsoft tenant it is bound to
* Read subscriptions with their seat counts, renewal dates and auto-renew settings
* Look up products, SKUs, plans and customer prices
* Create a customer, place an order for a product the customer does not hold yet, and follow the order to completion
* Add or remove seats on an existing subscription with [Change License Seats](/agents/tools/m365/change-license-seats)

<Note>
  If your portal is StreamOne Stellr, the SYNNEX platform many North and Latin American partners use, connect [TD SYNNEX Stellr](/integrations/marketplaces/td-synnex-stellr) instead. The two use different APIs and different credentials.
</Note>

## Connect TD SYNNEX

You need two values from the ION portal: your **Account ID** and a **Refresh Token**.

<Steps>
  <Step title="Copy your Account ID">
    In the StreamOne ION portal, open **Settings → Account Information** and copy the Account ID. It is a number.
  </Step>

  <Step title="Create a refresh token">
    Open **Settings → Users** and edit the user Neo will act as. We recommend a dedicated API user with the **Account Admin** role, so orders Neo places are easy to tell apart in ION. Choose **OAuth credentials → Request New Credentials** and copy the **Refresh Token**.
  </Step>

  <Step title="Save it in Neo">
    Open [**Integrations**](https://dashboard.neoagent.io/integrations?open=td_synnex), select **TD SYNNEX ION**, enter the Account ID and the Refresh Token, and click **Save**. Neo exchanges the token with ION before it saves, so a wrong or used token is refused on the spot.
  </Step>
</Steps>

<Warning>
  **Use the refresh token in Neo only.** An ION refresh token works once. Each time Neo connects, ION returns a new token and Neo stores it in place of the old one. If another tool or script uses the same token, one of the two stops working and you must create a new token in the portal.
</Warning>

A refresh token expires after 32 days without use. Neo maps your ION customers to PSA companies after each PSA sync, and that run renews the token, so an account whose PSA keeps syncing stays connected. If ION refuses the token (for example, after someone requested new credentials for the same user), Neo shows an action item in your inbox: create a new refresh token and save it in Neo again.

## Customer mapping

Neo maps each ION customer to a PSA company after you save the credentials, and again after each PSA sync:

1. **Microsoft tenant** — the tenant on the customer's ION Microsoft profile matches the **Tenant ID** on one of your companies. This is an exact match.
2. **Name** — the customer's organization name matches a PSA company name.
3. **AI suggestion** — for the names the first two steps miss.

Review the result under **Integrations → TD SYNNEX ION → Organization Mapping**. Map a customer left unmapped, or correct a match; a manual mapping is kept across syncs.

Seat changes spend money, so only a tenant match, an exact one-to-one name match, or a mapping you confirmed selects the customer for a seat change. A suggested match lists for confirmation and never places an order on its own. To override the mapping for one company, enter its ION customer ID as a **Marketplace Company ID** on the [Companies](https://dashboard.neoagent.io/end-companies) page; a typed ID always wins.

## What agents can do

Agents call ION through the [Vendor API](/agents/tools/vendor-api) tool, which is added when you give the agent TD SYNNEX permissions in its settings. Each permission group has its own access level:

| Permission group      | What it covers                                                                                            |
| --------------------- | --------------------------------------------------------------------------------------------------------- |
| **Customers**         | ION customers, their Microsoft tenants, creating a customer, linking or provisioning its Microsoft tenant |
| **Catalog & Pricing** | Products, SKUs, plans and customer prices (read-only)                                                     |
| **Subscriptions**     | Subscriptions, seat counts and renewal dates (read-only)                                                  |
| **Orders**            | Placing an order for a new product, following it, cancelling one ION has not processed                    |
| **Carts**             | Building a multi-item purchase and checking it out                                                        |
| **Reports**           | Reports saved in ION, such as billing and renewals (read-only)                                            |

The access profiles are **Read Only**, **Helpdesk** (every change asks a technician first) and **IT Admin** (no approval). You can set approval per permission group. A seat change always goes through [Change License Seats](/agents/tools/m365/change-license-seats), never through an order from the Vendor API tool.

### Seat changes

To add or remove seats on a subscription a customer already holds, the agent uses [Change License Seats](/agents/tools/m365/change-license-seats), not an order through the Vendor API tool. It serializes changes to one subscription, so two changes at the same time cannot both start from the same count, waits for ION to finish the order, and reads the subscription back to confirm the new count. The wait has a time limit, about 30 seconds in a chat and 90 seconds in an automation. When ION takes longer, the agent reports the change as unconfirmed, and you can check the count in the ION portal.

Neo does not schedule a TD SYNNEX seat change for the renewal date yet, so a seat change applies immediately. To change seats at renewal, schedule the workflow to run on the renewal day.
