# CPPO

Create and manage GCP Marketplace Channel Partner Private Offers (CPPO) and reseller private offer plans in Suger.

---

## Overview

The `Channel Partner Private Offer` (CPPO, called a **Reseller Private Offer Plan** in GCP Marketplace) lets you, as an Independent Software Vendor (ISV/Seller), grant Channel Partners access to wholesale pricing for your software. This delegates the financial and contractual side of the customer relationship in GCP Marketplace to your Channel Partner, while you retain full visibility over the deal.

In Suger, you manage the full indirect-channel lifecycle in one place:

- `CPPO_OUT` — the Reseller Private Offer Plan you create to authorize a partner (GCP's Marketplace Channel Private Offer).
- `CPPO` — the final private offer the Channel Partner creates for the buyer.
- `CPPO Entitlement` — the active contract after the buyer accepts. Entitlements support overage usage metering when the relevant usage metering dimensions are available.

**Key terms**

- **[Marketplace Channel Private Offer (MCPO)](https://cloud.google.com/blog/topics/partners/announcing-google-cloud-marketplace-private-offers)** — a private offer where a Channel Partner works with an ISV to sell a product to a buyer through Google Cloud Marketplace.
- **[Reseller Private Offer Plan](https://docs.cloud.google.com/marketplace/docs/partners/resell/reseller-private-offer-plans)** — GCP's term for the configuration an ISV creates to authorize a Channel Partner to resell their product. It defines pricing, terms, and allowed plans. In Suger this is stored as an Offer with type `CPPO_OUT`.
- **ISV (Independent Software Vendor)** — the company that owns and publishes the software in GCP Marketplace.
- **Channel Partner (Reseller)** — the partner who sells the ISV's product to the buyer and creates the final private offer.

## Prerequisites

Before you can create a Reseller Private Offer Plan, both the ISV and the Channel Partner must complete a few GCP Marketplace and Suger setup requirements. If any are missing, you won't be able to proceed.

### Google Cloud Marketplace

- **Register as GCP Marketplace vendors.** Both the ISV and the Channel Partner must be enrolled in Google Cloud Partner Advantage and have an active Cloud Marketplace vendor account with a verified payment profile in good standing.
- **Publish an eligible product (ISV only).** The ISV must have an active, publicly listed product in GCP Marketplace, such as a SaaS application, Kubernetes app, or Virtual Machine product.

### Suger

You need **Admin** access to the Suger Console. If you don't have access yet, ask your company admin to invite you to the organization. See [Manage Users and Roles](/get-started/account/).

### GCP IAM roles

To let Suger manage your GCP reseller discounts and private offer plans, grant the Suger support user (`gcpdev@suger.io`) the following IAM roles within your **GCP organization** (not your GCP project):

- Commerce Business Enablement Configuration Admin
- Commerce Business Enablement Reseller Discount Admin
- Commerce Producer Admin

Or run this command (requires `Organization Administrator` access; find your `ORG_ID` with `gcloud organizations list`):

```bash
for ROLE in \
  roles/commercebusinessenablement.configAdmin \
  roles/commercebusinessenablement.resellerDiscountAdmin \
  roles/commerceproducer.admin
do
  gcloud organizations add-iam-policy-binding ORG_ID \
    --member="user:gcpdev@suger.io" \
    --role="$ROLE"
done
```

## Step 1: Create the Reseller Private Offer Plan

After completing the setup, create a Reseller Private Offer Plan (`CPPO_OUT`) in the Suger Console.

:::info
Reseller Private Offer Plans are stored in Suger as Offers with type `CPPO_OUT`.
:::

**Open the Resale Authorization flow**

1. Go to the **Resale** page in the [Suger Console](https://console.suger.io/resale/sent).
2. Click **+ New Resale Authorization** in the upper-right corner.
3. Select the **GCP product** you want to use. This defines what the Channel Partner is allowed to resell.

**Add basic information**

- **Opportunity Name**: A custom name to identify the resale authorization. It is displayed to the reseller.
- **Salesforce Opportunity** (optional): Link the record to a Salesforce Opportunity.
- **HubSpot Deal** (optional): Link the record to a HubSpot Deal.
- **Scope**: How the reseller can use the authorization.
  - `Single use`: The reseller can use this plan to create one private offer for one specific customer.
  - `Multi use`: The reseller can use this plan to create one or more private offers, to resell your products to one or more of their customers.
- **Start Time**: When the authorization becomes active.
- **End Time**: When the authorization expires.
- **Acceptance Due Date**: The last date the reseller can accept the offer.
- **Billing Account Information**: The customer billing account details.
  - `Account Name`: The name of the billing account.
  - `Account ID`: The billing account ID to which the reseller can apply this plan.

  :::warning
  - When scope is `Single use`, this is the Cloud Billing subaccount for the resold customer.
  - When scope is `Multi use`, this is the Cloud Billing account for the reseller.
  :::

- **Contact Information**: Your contact info, shared with the reseller. This is **not** visible to the customer.
- **Notes to Reseller**: Instructions or context for the Channel Partner.

**Set pricing information**

Select a **Plan** to define the pricing model. More details about price models are [here](/gcp-marketplace/pricing-model). Fill in the fields that match the selected pricing model.

- **Subscription-based plan**
  - **Monthly flat fee**: How much the reseller pays you for the contract private offer created from this opportunity.
  - **Reseller discount (off)**: The reseller discount on the commitment amount, from 0% (no discount) to 100% (full discount).

    :::info
    For example, if the monthly flat fee is $1000 and the reseller discount is 10%, the reseller pays you $1000 × (1 − 0.1) = $900 every month.
    :::

- **Usage-based plan** — choose one of the following usage price models:
  - **Commitment discount with additional usage at list price**
    - **Monthly commitment**: The monthly commitment fee the reseller pays you.
    - **Discount on commitment**: The discount on the monthly commitment fee.
    - **Reseller discount (off)**: The reseller discount on the commitment fee.

      :::info
      For example, if the monthly commitment is $1000, discount on commitment is 10%, and reseller discount is 10%, the reseller pays $1000 × (1 − 0.1) × (1 − 0.1) = $810 every month.
      :::

  - **Commitment with all usage discounted**
    - **Monthly commitment**: The monthly commitment fee the reseller pays you.
    - **Discount on usage**: The discount on usage fees.
    - **Reseller discount (off)**: The reseller discount on the commitment fee.

      :::info
      For example, if the monthly commitment is $1000 and the reseller discount is 10%, the reseller pays $1000 × (1 − 0.1) = $900 every month.
      :::

  - **Usage-based discount only**
    - **Discount on usage**: The discount on usage fees.

- **Flat fee with usage plan**
  - **Monthly flat fee**: How much the reseller pays you for the contract private offer created from this opportunity.
  - **Discount on usage**: The discount on usage fees.
  - **Reseller discount (off)**: The reseller discount on the commitment fee.

    :::info
    For example, if the monthly flat fee is $1000 and the reseller discount is 10%, the reseller pays $1000 × (1 − 0.1) = $900 every month.
    :::

**Set offer settings (optional)**

Enable features resellers can use when creating private offers:

- `Allow scheduled start date`: Whether the reseller private offer plan can start on a scheduled date.
- `Allow auto renewal`: Whether the reseller private offer plan can auto-renew.
- `Number of renewals`: The number of renewals allowed.

**Define legal terms**

- **End User License Agreement (EULA)**: Choose the Standard GCP Marketplace Contract or your custom contract.
- **Reseller Agreement (PDF)** (optional): Select or upload the terms for the Channel Partner.
- **Deal Type**: The type of commercial agreement used.

Click **Create offer** to finish.

## Step 2: Hand off to the Channel Partner

Once your Reseller Private Offer Plan (`CPPO_OUT`) is active, the Channel Partner creates the final private offer for the buyer. As the ISV you can't build the offer for them, but you initiate the handoff and monitor progress.

**Notify the Channel Partner**

1. Open the active Reseller Private Offer Plan in the Suger Console.
2. Click **More actions** in the top-right corner and select **Notify Contact**.
3. Suger emails the reseller a direct link to the plan, letting them know it's ready to use.

**Coordinate deal details**

Work with your partner to confirm the correct GCP Cloud Billing account based on the plan's Scope.

:::info
A `Single use` plan requires the customer's Cloud Billing subaccount, while a `Multi use` plan uses the reseller's Cloud Billing account.
:::

## Step 3: Track buyer acceptance and entitlements

After the reseller generates the private offer, you won't see their final markup, but you can oversee the entire deal lifecycle in the Suger Console for full visibility into your indirect channel sales.

### Track your wholesale plan (`CPPO_OUT`)

Once the reseller successfully generates the private offer, your original Reseller Private Offer Plan status changes to `Used`.

:::info
If you set the plan's Scope to `Multi use`, it remains `Active` so the reseller can use it again.
:::

### Monitor the new private offer (`CPPO`)

A new deal entry automatically appears with type `CPPO` and a `Pending Acceptance` status. This confirms the final offer has been delivered to the buyer and is awaiting their approval.

### Confirm buyer acceptance and ISV approval

Keep an eye on the `CPPO` record. For GCP SaaS products, you may need to manually approve the accepted offer before it becomes active, unless you have automatic offer approval enabled.

### Manage active entitlements

Once the buyer accepts and the offer is activated, a **CPPO Entitlement** is generated automatically. This is your authoritative record of the active contract and fully supports overage usage metering when applicable.
