---
title: "Create an offer"
method: POST
path: "/offers"
tags: ["Offers"]
---

# Create an offer

`POST /offers`

## Request

- Base URL: `https://api.lumabill.ch/v1`
- URL: `https://api.lumabill.ch/v1/offers`
- Auth: HTTP bearer

## Request body

- OfferWrite
  - `client_id` string, uuid, required
  - `offer_number` string, nullable
  - `status` 'draft' | 'sent'
  - `valid_until` string, date, nullable
  - `currency` 'CHF' | 'EUR' | 'USD' | 'GBP' | 'JPY' | 'CAD' | 'AUD' | 'SEK' | 'NOK' | 'DKK' | 'HUF', required: ISO 4217 code of a currency the API converts (ESTV/BAZG rates). The same list applies to every currency field of the API.
  - `lines` InvoiceLine[], required
    - `description` string, required
    - `quantity` number, double, required
    - `price` number, double, required
    - `vat_rate` number, double, nullable: VAT rate as a percentage (e.g. 8.1 for 8.1 %). If omitted, the profile's default tax rate is used.

## Response `201`

Offer created

- Offer
  - `id` string, uuid, required
  - `client_id` string, uuid, required
  - `offer_number` string, nullable, required: null while the offer is an unnumbered draft (numbered when first sent/accepted/declined).
  - `status` 'draft' | 'sent' | 'accepted' | 'rejected', required
  - `valid_until` string, date, nullable
  - `total` number, double, required
  - `currency` 'CHF' | 'EUR' | 'USD' | 'GBP' | 'JPY' | 'CAD' | 'AUD' | 'SEK' | 'NOK' | 'DKK' | 'HUF', required: ISO 4217 code of a currency the API converts (ESTV/BAZG rates). The same list applies to every currency field of the API.
  - `lines` InvoiceLine[], required
    - `description` string, required
    - `quantity` number, double, required
    - `price` number, double, required
    - `vat_rate` number, double, nullable: VAT rate as a percentage (e.g. 8.1 for 8.1 %). If omitted, the profile's default tax rate is used.
  - `created_at` string, date-time, required

## Other responses

- `400`: Validation error
- `401`: Invalid or missing API key
- `403`: Subscription required or read-only key on a write endpoint
- `429`: Rate limit exceeded
- `500`: Internal server error

---

[API](https://skmtc.dev/lumabill/apis/lumabill-api.md) · [All operations](https://skmtc.dev/lumabill/apis/lumabill-api/llms.txt) · [OpenAPI document](https://skmtc.dev/lumabill/apis/lumabill-api/revisions/e48e7099b545?raw)
