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

# Portal Offers

> Configure purchasable, requestable, and linked offers for portal templates.

An offer is one purchasable or requestable item. Offers are workspace-level resources that you can reuse in multiple template layouts.

`kind` controls the behavior. `purchase` takes payment, `request` does not charge, and `ad` opens `link_url`.

## Flat pricing

Call [Create Portal Offer](/api-reference/portals/offers/create) to create an offer:

```json theme={null}
{
  "name": "Late checkout",
  "description": "Keep the room until 2 PM.",
  "price_in_cents": 3500,
  "kind": "purchase",
  "highlights": ["Two extra hours", "Subject to availability"]
}
```

## Priced by option

Use `by_option` pricing when one offer has variants. `fieldLabel` names the selector, and each option has a price:

```json theme={null}
{
  "name": "Airport pickup",
  "description": "Meet and greet at arrivals.",
  "price_in_cents": 6000,
  "kind": "purchase",
  "pricing": {
    "model": "by_option",
    "fieldLabel": "Vehicle",
    "options": [
      { "title": "Sedan, up to 3 bags", "priceInCents": 6000 },
      { "title": "Van, up to 7 bags", "priceInCents": 9500 }
    ]
  }
}
```

`by_option` requires `fieldLabel` and `options`.

## Percentage pricing

`percent_price` charges a percentage of a booking value:

```json theme={null}
{
  "percent_price": { "percent": 10, "of": "totalPrice" }
}
```

`of` accepts `totalPrice`, `grossRent`, `netRent`, `subtotal`, `totalFees`, or `totalTaxes`.

## Targeting and availability

Offer `targeting` supports property, inbox, night, vacancy, and custom-attribute criteria.

The following offer requires one vacant night before arrival:

```json theme={null}
{
  "targeting": { "minVacantNightsBeforeArrival": 1 }
}
```

`availability` uses `visibleFrom`, `visibleUntil`, `bookableFrom`, and `bookableUntil`.

## Archiving

[Archive Portal Offer](/api-reference/portals/offers/archive) deactivates an offer and removes it from each template layout.

[Restore Portal Offer](/api-reference/portals/offers/restore) reactivates the offer. It does not restore removed layout blocks.
