# Create CPPO Offers for Archera Subscription

This guide provides instructions on how to extend Archera’s Channel Partner Private Offer (CPPO) to your customers through AWS Marketplace.

### ​What is Channel Partner Private Offer (CPPO)? <a href="#what-is-channel-partner-private-offer-cppo" id="what-is-channel-partner-private-offer-cppo"></a>

The Channel Partner Private Offer (CPPO) is a mechanism that allows our channel partners to extend our GRI offers to their customers directly through AWS Marketplace. The marketplace safely handles all of the billing and rev-sharing responsibilities between the customer, the partner, and Archera.

{% hint style="warning" %}
To collect any GRI Premiums, CPPOs must be set up.
{% endhint %}

### ​Requirements for Archera to Extend the CPPO <a href="#requirements-for-archera-to-extend-the-cppo" id="requirements-for-archera-to-extend-the-cppo"></a>

First, ensure that you are registered as an AWS Marketplace seller so that we can extend a CPPO to your team.

[AWS Marketplace: Channel Partner Private Offers](https://aws.amazon.com/marketplace/management/partners/incoming)

Once you are listed as a reseller, we can extend the CPPO to your organization - it’s simple as that! Reach out to [**partnersupport@archera.ai**](mailto:partnersupport@archera.ai) or in the shared Slack workspace to receive our CPPO.

You can verify Archera’s CPPO was extended here:

<https://aws.amazon.com/marketplace/management/partners/incoming>

### ​Creating Private Offers from the CPPO to Send to Customers <a href="#creating-private-offers-from-the-cppo-to-send-to-customers" id="creating-private-offers-from-the-cppo-to-send-to-customers"></a>

Once you are listed as a reseller and we have extended the CPPO to you, follow these steps:

#### ​Step 1: Create Private Offer <a href="#step-1-create-private-offer" id="step-1-create-private-offer"></a>

Navigate to [AWS Marketplace Management Portal > Offers > Create offer](https://aws.amazon.com/marketplace/management/offers)Select the following:

* **Select ISV**: Reserved AI
* **Select product**: Archera - Subscription
* **Select opportunity**: Archera-\[Partner]-Subscription-2024
* **Buyer(s)**: Enter comma separated buyer account IDs

<figure><img src="https://mintcdn.com/archera/xy53lcAFe3uDbb3I/images/cppo-step1.png?fit=max&#x26;auto=format&#x26;n=xy53lcAFe3uDbb3I&#x26;q=85&#x26;s=698df38f209a649567964eae73298b35" alt=""><figcaption></figcaption></figure>

#### ​Step 2: Configure Offer Information <a href="#step-2-configure-offer-information" id="step-2-configure-offer-information"></a>

On the offer information page:

* **Offer name**: Enter a descriptive name (e.g., “Archera - Subscription”)
* **Product**: Archera - Subscription (pre-filled)
* **Resale authorization name**: Archera-\[Partner]-Subscription-2024 (pre-filled)
* **Buyer account ID(s)**: Verify customer account IDs

<figure><img src="https://mintcdn.com/archera/xy53lcAFe3uDbb3I/images/cppo-step2.png?fit=max&#x26;auto=format&#x26;n=xy53lcAFe3uDbb3I&#x26;q=85&#x26;s=f70c64d6439e782b714ca26b20d5878c" alt=""><figcaption></figcaption></figure>

#### ​Step 3: Set Pricing and Usage Dimensions <a href="#step-3-set-pricing-and-usage-dimensions" id="step-3-set-pricing-and-usage-dimensions"></a>

The usage dimension shown will be **Guaranteed Reserved Instance Premiums**.

{% hint style="warning" %}
**Critical**: Set the markup to **25%**. This brings premiums from wholesale 0.008 to price 0.010.
{% endhint %}

{% hint style="info" %}
Higher tier markups (Silver and Gold) are available based on revenue milestones. Contact [**partnersupport@archera.ai**](mailto:partnersupport@archera.ai) to discuss tier upgrades.
{% endhint %}

<figure><img src="https://mintcdn.com/archera/xy53lcAFe3uDbb3I/images/cppo-step3.png?fit=max&#x26;auto=format&#x26;n=xy53lcAFe3uDbb3I&#x26;q=85&#x26;s=1200b716e67aa812d681359d5a40cbf9" alt=""><figcaption></figcaption></figure>

#### ​Step 4: Set Usage Duration and Offer Expiration <a href="#step-4-set-usage-duration-and-offer-expiration" id="step-4-set-usage-duration-and-offer-expiration"></a>

**Usage duration:**

* Set the end date **10 years in the future** (e.g., if today is 2025/03/05, set to 2035/03/05)
* This sets the subscription term to 10 years to avoid renewal requirements

**Offer expiration date:**

* Set when this specific offer expires (when the customer can no longer accept it)
* This is typically much shorter than the usage duration (e.g., 30-90 days)

Review all details and click **Review offer** to finalize.

<figure><img src="https://mintcdn.com/archera/xy53lcAFe3uDbb3I/images/cppo-step4.png?fit=max&#x26;auto=format&#x26;n=xy53lcAFe3uDbb3I&#x26;q=85&#x26;s=7a243939f28d3534bd998d9d10f623fb" alt=""><figcaption></figcaption></figure>

### ​Programmatic CPPO Creation <a href="#programmatic-cppo-creation" id="programmatic-cppo-creation"></a>

You can also create CPPOs programmatically using the AWS Marketplace Catalog API. This is useful for automating offer creation at scale.

#### ​Prerequisites <a href="#prerequisites" id="prerequisites"></a>

```shellscript
pip install boto3
```

Configure AWS credentials with marketplace permissions:

```bash
aws configure
```

***

#### ​Step 1: Create Draft CPPO Offer <a href="#step-1-create-draft-cppo-offer" id="step-1-create-draft-cppo-offer"></a>

```python
import boto3
import json

mp_client = boto3.client('marketplace-catalog', region_name='us-east-1')

# Create the changeset for a new CPPO offer
changeset = [
    {
        "ChangeType": "CreateOfferUsingResaleAuthorization",
        "Entity": {
            "Type": "Offer@1.0"
        },
        "DetailsDocument": {
            "ResaleAuthorizationId": "resaleauthz-rgrycwq5y6nuk",  # Archera resale auth ID
            "Name": "Archera - Subscription for Customer ABC"
        }
    }
]

response = mp_client.start_change_set(
    Catalog="AWSMarketplace",
    ChangeSet=changeset,
    ChangeSetName="Create CPPO for Customer ABC"
)

offer_id = response['ChangeSetId']
print(f"Offer creation started: {offer_id}")
```

**Save:** `offer_id` for next steps

***

#### ​Step 2: Set Pricing Markup <a href="#step-2-set-pricing-markup" id="step-2-set-pricing-markup"></a>

```python
# Apply your partner tier markup
changeset = [
    {
        "ChangeType": "UpdateMarkup",
        "Entity": {
            "Type": "Offer@1.0",
            "Identifier": offer_id
        },
        "DetailsDocument": {
            "Percentage": "25.0"  # Bronze tier: 25% markup
        }
    }
]

response = mp_client.start_change_set(
    Catalog="AWSMarketplace",
    ChangeSet=changeset,
    ChangeSetName="Set markup for Customer ABC offer"
)
```

{% hint style="info" %}
Higher tier markups (Silver and Gold) are available based on revenue milestones. Contact [**partnersupport@archera.ai**](mailto:partnersupport@archera.ai) to discuss tier upgrades.
{% endhint %}

***

#### ​Step 3: Set Usage Duration <a href="#step-3-set-usage-duration" id="step-3-set-usage-duration"></a>

```python
# Set the subscription usage duration to 10 years
changeset = [
    {
        "ChangeType": "UpdateValidityTerms",
        "Entity": {
            "Type": "Offer@1.0",
            "Identifier": offer_id
        },
        "DetailsDocument": {
            "Terms": [
                {
                    "Type": "ValidityTerm",
                    "AgreementDuration": "P3650D"  # 10 years = 3650 days
                }
            ]
        }
    }
]

response = mp_client.start_change_set(
    Catalog="AWSMarketplace",
    ChangeSet=changeset,
    ChangeSetName="Set usage duration for Customer ABC offer"
)
```

**Note:** Duration uses ISO 8601 format (e.g., `P3650D` = 3650 days = \~10 years)

***

#### ​Step 4: Add Buyer Accounts and Publish <a href="#step-4-add-buyer-accounts-and-publish" id="step-4-add-buyer-accounts-and-publish"></a>

```python
# Add buyer account IDs and publish the offer
changeset = [
    {
        "ChangeType": "UpdateTargeting",
        "Entity": {
            "Type": "Offer@1.0",
            "Identifier": offer_id
        },
        "DetailsDocument": {
            "PositiveTargeting": {
                "BuyerAccounts": ["123456789012", "987654321098"]
            }
        }
    },
    {
        "ChangeType": "ReleaseOffer",
        "Entity": {
            "Type": "Offer@1.0",
            "Identifier": offer_id
        },
        "DetailsDocument": {}
    }
]

response = mp_client.start_change_set(
    Catalog="AWSMarketplace",
    ChangeSet=changeset,
    ChangeSetName="Publish CPPO for Customer ABC"
)

print(f"Offer published: {offer_id}")
```

***

#### ​Complete Reference <a href="#complete-reference" id="complete-reference"></a>

For more examples and advanced scenarios, see the [AWS Marketplace reference code on GitHub](https://github.com/aws-samples/aws-marketplace-reference-code/tree/main/python/src/catalog_api/channel_partner_offers).

{% hint style="info" %}
If you’d like help implementing programmatic CPPO creation, reach out to [**partnersupport@archera.ai**](mailto:partnersupport@archera.ai) or in the shared Slack workspace.
{% endhint %}

### ​Important Notes <a href="#important-notes" id="important-notes"></a>

* Ensure that you have the necessary permissions to access and manage private offers
* Double-check that you are selecting the correct offer related to Archera products/services
* Contact [**partnersupport@archera.ai**](mailto:partnersupport@archera.ai) if you need assistance with CPPO setup
