# OCTO Channel Distribution (/docs/plugins/octo)



The **OCTO Channel Distribution** plugin connects your activities to OTA resellers — marketplaces, travel agents, and channel managers — through [OCTO](https://octo.travel), the open connectivity standard for tours, activities, and attractions.

Instead of a custom integration per sales channel, you connect once: any OCTO-compliant reseller can list your activities, see your live availability, and create bookings that block your inventory instantly. Their bookings land in your dashboard like any other booking.

This is a **feature** plugin — there are no credentials for *you* to enter. You create the credentials and hand them to your resellers.

<Callout type="info">
  This page covers setting up resellers from the dashboard. If you're the developer **on the reseller side** integrating against the API, see the [OCTO API reference](/docs/plugins/octo-reference).
</Callout>

Setup [#setup]

1. Open **Plugins → Browse Plugins** and click **Install** on **OCTO Channel Distribution**.
2. On the setup page, **add a reseller** for each distribution partner you have an agreement with.
3. **Issue an API token** for the reseller and share it with them over a secure channel — it is shown once and cannot be retrieved again.
4. Optionally **link commercial terms** (see below).
5. Click **Enable**. Reseller access only works while the plugin is enabled — disabling it cuts every reseller off immediately.

Resellers and tokens [#resellers-and-tokens]

A **reseller** is one distribution partner — "GetYourGuide", "ChartierCaptain", your local tourism board. Each reseller holds its own API tokens, so ending a relationship is one click and never affects the others.

Each **token**:

* starts with `rpat_` and is shown **once** at creation — only a hash is stored. If it's lost, revoke it and issue a new one.
* is scoped to **the location you issue it from**. A reseller selling two of your locations gets one token per location.
* carries **scopes** you choose:
  * `octo:read` — list your products and check live availability.
  * `octo:book` — create, confirm, and cancel bookings.

Most resellers need both. A pure content/availability aggregator only needs `octo:read`.

Pausing and revoking [#pausing-and-revoking]

* **Pause** a reseller to stop all of its tokens working at once — access stops on the next request. Resume restores it.
* **Revoke** a single token permanently (for example, when rotating credentials). Issue the new token first, let the reseller switch, then revoke the old one.
* **Disabling the plugin** stops every reseller at this location, immediately.

Commercial terms [#commercial-terms]

If you have revenue-share, markup, or fee arrangements with a reseller, create an entry for them under **Location Settings → Approved OTAs** and pick it in the reseller's **Commercial terms** dropdown on the plugin page.

Every booking that reseller creates then carries those terms automatically — the rates are snapshotted onto the booking at creation, so later changes to the terms never rewrite history. With no terms linked, the reseller books at your standard prices.

How reseller bookings behave [#how-reseller-bookings-behave]

* **What they can book:** your published, scheduled activities (fixed-time or interval slots). Per-person activities expose your demographics — Adult, Child, and so on — at their [per-demographic prices](/docs/activities/pricing#per-demographic-pricing); flat-priced activities sell as a single guest type. Dynamic-duration rentals and multi-day bookings are not offered over OCTO.
* **Holds:** a reseller first *reserves* a departure, which creates a **pending booking** that blocks your inventory exactly like any pending booking — your own booking page and other resellers immediately see the slot as taken. If the reseller doesn't confirm within the hold window (30 minutes by default, they can request 5 minutes to 24 hours), the hold expires automatically and the inventory frees itself.
* **Confirmation:** on confirm, the booking becomes a normal confirmed booking with the traveler's contact details, and your usual booking-created workflows, webhooks, and notifications fire.
* **Payment:** the reseller collects payment from the traveler. Resytech records it on the booking as an **OTA payment**, so the booking shows as paid and your balance and payment reports stay accurate. Settlement with the reseller happens per your commercial agreement.
* **Where you see them:** in your normal bookings views, stamped with the reseller's booking source — there is no separate OCTO inbox to watch.

Permissions [#permissions]

Managing resellers and tokens requires the **Plugins** permission, same as every plugin. Administrators always have it.
