# Purchase offers

> A Purchase offer records the cost of a variant from a supplier, for a country and period.

A **Purchase offer** records the **cost price** of a [Variant](/api/product-management/variants/) from a [Supplier](/api/product-management/suppliers/), for a given [Country](/api/product-management/countries/) and validity period. Like a [Sale offer](/api/product-management/sale-offers/) it carries a `taxExcludedPrice` and a [Tax](/api/product-management/taxes/) reference, but it is the **buying** side: where a sale offer is what a customer pays, a purchase offer is what you pay your supplier.

Purchase offers feed cost and margin reporting, and let you track price changes from a supplier over time through their `startsAt` / `endsAt` windows.

## The Purchase offer object

## Common workflows

- **Record a supplier cost.** [Create a purchase offer](/api/product-management/purchase-offers/create/) for a variant with a `supplier`, `country`, `tax`, `taxExcludedPrice` and `startsAt`.
- **Track a cost change.** Close the current offer with an `endsAt` and create a new one with the updated price.
- **Compare suppliers.** Keep concurrent offers from different suppliers for the same variant.

## Conventions

All requests require an OAuth 2.0 bearer token and the organization scope header:

```
Authorization: Bearer <token>
X-Flowkiwi-Organization-Id: <organization-id>
```

`PATCH` uses [JSON Merge Patch](https://datatracker.ietf.org/doc/html/rfc7396) with `Content-Type: application/merge-patch+json`.
