# Private Offers

Create a private offer to sell your SaaS listing to a specific Oracle Cloud customer at negotiated terms.

---

## Prerequisites

- The [Oracle Cloud Marketplace integration](/oracle-marketplace/integration/) is connected.
- Your SaaS listing has been [synced into Suger](/oracle-marketplace/list-product/) as a product.
- You know the buyer's **tenancy OCID** (`ocid1.tenancy.oc1..…`) — the offer is sent to this tenancy.
- Your contract document (EULA) as a **PDF file, up to 1 MB**.

## Pricing Model

Oracle Cloud Marketplace private offers created through Suger are priced as a **one-time contract value in USD**:

- The buyer commits to a single **total contract value** in USD (rounded to whole dollars) for the full contract duration.
- Billing cycle is **one-time** — no installments. The offer price is not usage/metered; [usage metering](/oracle-marketplace/usage-metering/) is a separate, entitlement-level capability and is not yet enabled.
- Contract duration options in the console: **6 months, 1 year (default), 2 years, or 3 years**.

:::note
Suger sends the value and duration you enter to Oracle without imposing its own minimum or maximum. **Oracle enforces its own contract minimum value and maximum contract duration**, so an offer outside Oracle's accepted range is rejected by Oracle at send time. Keep the total contract value and duration within Oracle's current limits.
:::

## Create a Private Offer

1. On the **Offers** page in the Suger console, click `Create Private Offer` and select your Oracle product.

2. Fill in the offer details:

   | Field | Description |
   |---|---|
   | **Offer name** | Required. A descriptive name for this offer (max 128 characters). |
   | **Buyer company name** | Optional. |
   | **Buyer tenancy OCID** | Required. The OCID of the buyer's Oracle Cloud tenancy. |
   | **Buyer primary contact** | First/last name and email. The email is required. |
   | **Offer description** | Optional (max 512 characters). |
   | **Service start date** | Optional. Defaults to tomorrow. |
   | **Contract duration** | 6 months / 1 year / 2 years / 3 years. Defaults to 1 year. |
   | **Offer expiration date** | The date by which the buyer must accept. Defaults to 30 days from creation. |
   | **Contract document (EULA)** | Required. A PDF file up to 1 MB. |
   | **Total contract value** | Required. The one-time amount in USD, must be greater than 0. |
   | **Seller primary contact** | First/last name and email. The email is required. |

3. Submit the offer. Suger creates the offer in Oracle Cloud, attaches the contract document, and sends it to the buyer's tenancy.

Sending is asynchronous on Oracle's side: the offer stays in `Pending Create` while Suger waits (up to ~5 minutes) for Oracle to confirm the send. Once confirmed, the offer moves to `Pending Acceptance`.

## Offer lifecycle

An offer moves from creation to a buyer entitlement like this:

```mermaid
flowchart TD
    A[Create offer in Suger] --> B[Pending Create<br/>Suger waits ~5 min for Oracle to confirm the send]
    B --> C[Pending Acceptance<br/>sent to the buyer's tenancy]
    C -->|Buyer accepts in the Oracle Cloud Console| D[Accepted]
    D --> E[Active<br/>contract in effect]
    E --> F[Entitlement created automatically in Suger]
    C -->|Offer expires unaccepted| G[Expired]
    B -->|Send fails| H[Create Failed]
```

## Offer Status

Oracle offer statuses map to Suger offer statuses as follows:

| Oracle offer status | Suger offer status | Meaning |
|---|---|---|
| `DRAFT` | `Draft` | Created in Oracle but not yet sent. |
| `PENDING_MARKETPLACE` | `Pending Marketplace Approval` | Waiting on Oracle Marketplace review. |
| `PENDING_BUYER` | `Pending Acceptance` | Sent; waiting for the buyer to accept. |
| `ACCEPTED` | `Accepted` | The buyer accepted the offer. |
| `ACTIVE` | `Active` | The contract is in effect. |
| `ENDED` / `EXPIRED` | `Expired` | The contract ended, or the offer expired unaccepted. |
| `FAILED_SEND` / `FAILED_ACCEPT` | `Create Failed` | Oracle rejected the send or the acceptance failed. |

Buyers are matched by their Oracle **tenancy**, so repeat deals with the same buyer are recognized.

## Buyer Acceptance

The buyer reviews and accepts the private offer in their **Oracle Cloud Console** — there is no in-Suger acceptance step. The buyer's user needs tenancy-scoped IAM permission to accept offers, e.g.:

```
Allow group PrivateOfferBuyer to manage marketplace-offers in tenancy
```

See Oracle's [Required IAM Policies for private offers](https://docs.oracle.com/en-us/iaas/Content/Marketplace/privateoffers-required-iam-policies.htm).

Acceptance is reflected back into Suger when the offer status advances — the hourly sync picks it up automatically, or trigger a sync from the **Integrations** page to pull the latest statuses immediately.

## After Acceptance: Entitlement

When the offer becomes **Active** in Oracle, Suger automatically creates a private **entitlement** for it:

- Start time comes from the offer's service start date; end time from the offer end date (or start date + contract duration).
- The entitlement carries the offer's currency and total contract value as its commit amount.
- When the offer ends in Oracle, the entitlement is closed automatically on the next sync.

## Cancel a Private Offer

You can cancel (withdraw) a private offer **before the buyer accepts it**:

1. Select the offer on the **Offers** page.
2. Click `Cancel` and confirm in the popup dialog.

Suger withdraws the offer in Oracle, and the buyer can no longer accept it.

:::note
Oracle does not allow withdrawing an offer that the buyer has **already accepted**. Cancellation only works while the offer is pending acceptance.
:::

## Modify a Private Offer

Oracle private offers cannot be amended after they are sent. To change the terms of an unaccepted offer, cancel it and create a new offer.

If an offer failed to send (`Create Failed`) or is stuck in `Draft`, simply re-submit it from Suger: the stale Oracle draft is cleaned up and a fresh offer is created and sent — no duplicates are produced.
