---
title: "Create a new temporary expense"
method: POST
path: "/api/v3/expenseTempItems"
tags: ["ExpenseTempItems"]
---

# Create a new temporary expense

`POST /api/v3/expenseTempItems`

Create a new temporary-expense-item.

**Attaching a receipt**: if the expense nature requires a receipt, you must first upload the file via `POST /lucca-files/api/uploads`, then create an `ExpenseReceipt` via `POST /api/v3/expenseReceipts`, and finally reference the receipt's `id` in the `expenseReceipts` array. Do **not** pass the file upload ID directly — see the [Attaching receipts guide](/api-reference/legacy/cleemy-expenses/guides/attaching-receipts) for the full workflow.

## Request body

- ExpenseTempItem — The `ExpenseTempItem`, or "temporary expense" is an expense that has not yet been declared (within an expense report) by its owner (the user who made the expense). Once submitted within an expense report, the expense turns into an `ExpenseClaimItem`.
  - `id` integer, required
  - `purchasedOn` string, date, required — Day the expense was made.
  - `originalTransaction` object, required — Expense amount in original currency.
    - `grossAmount` number, required
    - `currencyId` 'EUR' | 'USD' | 'CAD' | '...', required
    - `isExpenseAbroad` boolean — Whether the expense was made in a different country than the owner establishment's.
  - `processedAmounts` object, required — Various amounts in the establishment's currency.
    - `grossAmount` number, required — Original transaction amount converted into the establishment's currency.
    - `currencyId` 'EUR' | 'USD' | 'CAD' | '...', required
    - `currency` object
      - `id` 'EUR' | 'USD' | 'CAD' | '...'
      - `name` string — Label of the currency (eg: Pound sterling).
      - `url` string, uri
    - `netAmount` number — The converted amount after the expense policy has been applied.
    - `vatBases` object[]
      - `countryVatRateId` integer
      - `countryVatRate` object — Applicable VAT rate for this amount.
        - `id` integer
        - `name` string
        - `url` string, uri
      - `vatAmount` number
      - `amountExcludingVat` number
  - `expenseNatureId` integer, required — Nature of the expense: Meals, Train, Taxi, Hotels, Taxi, Mileage... List depends on the app configuration.
  - `mileage` object, nullable — Additional information when the expense type is mileage.
    - `distance` number — Distance where the unit depends on the establishment.
    - `power` number — Tax horsepower of the vehicle.
    - `waypoints` unknown[] — The collection of waypoints including intermediate waypoints.
      - unknown
  - `quantity` integer, required — The quantity when the expense type is 'Quantity'.
  - `effectiveQuantity` integer — Calculated quantity when the expense type is 'Quantity' or 'Invitations' (number of attendees).
  - `attendees` object, nullable — Additional information when the expense type is 'Invitation'.
    - `internal` SimpleUser[] — Attendees who work for the company (ie: Users in the system).
      - `id` integer
      - `name` string
      - `url` string, uri
    - `external` object[] — External attendees (eg: clients, candidates).
      - `id` integer
      - `displayName` string
  - `axisSections` AxisSection[], nullable
    - `id` integer
    - `code` string
    - `name` string
    - `multilingualName` string
    - `description` string
    - `ownerId` integer
    - `startOn` string, date-time
    - `endOn` string, date-time
    - `active` boolean
    - `axisId` integer
    - `parentAxisSections` object[]
    - `childrenAxisSections` object[]
  - `customFields` object, nullable — Values for custom fields.
  - `merchant` string, nullable — Merchant of the expense.
  - `comment` string, nullable
  - `expenseReceipts` ExpenseReceipt[], nullable — The expense receipts (PDF file, image, ...) attached to this expense. Technically, there could be more than one, but in reality, there’s usually just one. **Important**: to attach a receipt when creating or updating an expense, you must first upload the file via `POST /lucca-files/api/uploads`, then create an `ExpenseReceipt` via `POST /api/v3/expenseReceipts` (providing the `uploadId`), and finally reference the receipt by its `id` here. Passing the file upload ID directly will result in a `403 Forbidden` error. See the [Attaching receipts guide](/api-reference/legacy/cleemy-expenses/guides/attaching-receipts).
    - `id` string, uuid — The ID of this expense receipt.
    - `originalReceipt` object — The original file.
      - `id` string, uuid — The ID of the expense receipt file.
      - `name` string
      - `href` string, uri — Follow this link to download this expense receipt original file.
      - `extension` string — Suffix to the name of a file (e.g., .txt, .pdf, .jppg) that indicates its content type or its intended use.
    - `receiptPreview` object — Lower resolution (i.e. thumbnail) file of the original expense receipt.
      - `id` string, uuid — The ID of the expense receipt file (same as original).
      - `name` string
      - `href` string, uri — Follow this link to download this expense receipt preview image (i.e. thumbnail), even if the original file is not an image (e.g. PDF). Image size can be negotiated via the `?imageSize` query parameter. Available sizes are: `Small | Medium | Large | Full` (e.g.: `?imageSize=Small`). If the original file is a PDF, then you may request any given page (default is the first) by adding the `?pageNumber` query parameter (takes an integer that starts at 1).
      - `extension` string — Suffix to the name of a file (e.g., .txt, .pdf, .jppg) that indicates its content type or its intended use.
  - `authorizedActions` object — Authorized actions on the expense for the current user.
    - `isCancellable` boolean — Expense can be deleted by the current authenticated user.
    - `isEditable` boolean — Expense can be edited by the current authenticated user.
  - `sourceId` SourceId — The source describes how the expense was created: - 0: Legacy - 1: OldImport - 2: ImportByCb - 3: ImportByNature - 4: Anytime - 5: BudgetInsight - 6: Api - 7: Ocr - 8: Reconciliation - 9: InvoiceAggregator - 10: EmailAttachments - 11: FtpStatementImport - 12: CleemyPayment
    - `id` string
  - `source` Enum
    - `id` number
    - `name` string
    - `code` string
  - `ownerId` integer, required — Unique identifier of the user that made this expense.
  - `paymentMethodId` 0 | 1 | 3, required — How this expense was made: the owner used his money, an enterprise debit card, or a Cleemy card: - 0: User - 1: CorporateCard - 3: Cleemy Card
  - `paymentMethod` Enum
    - `id` number
    - `name` string
    - `code` string
  - `statusId` StatusId — Status of the expense. - 0: the expense is not valid. - 1: the expense has been completed by the system and review is still pending - 2: the expense has been completed and reviewed and it can be declared.
    - `id` 0 | 1 | 2
  - `status` Enum
    - `id` number
    - `name` string
    - `code` string
  - `deviceId` 'Web', required

## Response `200`

OK

- object
  - `data` ExpenseTempItem — The `ExpenseTempItem`, or "temporary expense" is an expense that has not yet been declared (within an expense report) by its owner (the user who made the expense). Once submitted within an expense report, the expense turns into an `ExpenseClaimItem`.
    - `id` integer, required
    - `purchasedOn` string, date, required — Day the expense was made.
    - `originalTransaction` object, required — Expense amount in original currency.
      - `grossAmount` number, required
      - `currencyId` 'EUR' | 'USD' | 'CAD' | '...', required
      - `isExpenseAbroad` boolean — Whether the expense was made in a different country than the owner establishment's.
    - `processedAmounts` object, required — Various amounts in the establishment's currency.
      - `grossAmount` number, required — Original transaction amount converted into the establishment's currency.
      - `currencyId` 'EUR' | 'USD' | 'CAD' | '...', required
      - `currency` object
        - `id` 'EUR' | 'USD' | 'CAD' | '...'
        - `name` string — Label of the currency (eg: Pound sterling).
        - `url` string, uri
      - `netAmount` number — The converted amount after the expense policy has been applied.
      - `vatBases` object[]
        - `countryVatRateId` integer
        - `countryVatRate` object — Applicable VAT rate for this amount.
          - `id` integer
          - `name` string
          - `url` string, uri
        - `vatAmount` number
        - `amountExcludingVat` number
    - `expenseNatureId` integer, required — Nature of the expense: Meals, Train, Taxi, Hotels, Taxi, Mileage... List depends on the app configuration.
    - `mileage` object, nullable — Additional information when the expense type is mileage.
      - `distance` number — Distance where the unit depends on the establishment.
      - `power` number — Tax horsepower of the vehicle.
      - `waypoints` unknown[] — The collection of waypoints including intermediate waypoints.
        - unknown
    - `quantity` integer, required — The quantity when the expense type is 'Quantity'.
    - `effectiveQuantity` integer — Calculated quantity when the expense type is 'Quantity' or 'Invitations' (number of attendees).
    - `attendees` object, nullable — Additional information when the expense type is 'Invitation'.
      - `internal` SimpleUser[] — Attendees who work for the company (ie: Users in the system).
        - `id` integer
        - `name` string
        - `url` string, uri
      - `external` object[] — External attendees (eg: clients, candidates).
        - `id` integer
        - `displayName` string
    - `axisSections` AxisSection[], nullable
      - `id` integer
      - `code` string
      - `name` string
      - `multilingualName` string
      - `description` string
      - `ownerId` integer
      - `startOn` string, date-time
      - `endOn` string, date-time
      - `active` boolean
      - `axisId` integer
      - `parentAxisSections` object[]
      - `childrenAxisSections` object[]
    - `customFields` object, nullable — Values for custom fields.
    - `merchant` string, nullable — Merchant of the expense.
    - `comment` string, nullable
    - `expenseReceipts` ExpenseReceipt[], nullable — The expense receipts (PDF file, image, ...) attached to this expense. Technically, there could be more than one, but in reality, there’s usually just one. **Important**: to attach a receipt when creating or updating an expense, you must first upload the file via `POST /lucca-files/api/uploads`, then create an `ExpenseReceipt` via `POST /api/v3/expenseReceipts` (providing the `uploadId`), and finally reference the receipt by its `id` here. Passing the file upload ID directly will result in a `403 Forbidden` error. See the [Attaching receipts guide](/api-reference/legacy/cleemy-expenses/guides/attaching-receipts).
      - `id` string, uuid — The ID of this expense receipt.
      - `originalReceipt` object — The original file.
        - `id` string, uuid — The ID of the expense receipt file.
        - `name` string
        - `href` string, uri — Follow this link to download this expense receipt original file.
        - `extension` string — Suffix to the name of a file (e.g., .txt, .pdf, .jppg) that indicates its content type or its intended use.
      - `receiptPreview` object — Lower resolution (i.e. thumbnail) file of the original expense receipt.
        - `id` string, uuid — The ID of the expense receipt file (same as original).
        - `name` string
        - `href` string, uri — Follow this link to download this expense receipt preview image (i.e. thumbnail), even if the original file is not an image (e.g. PDF). Image size can be negotiated via the `?imageSize` query parameter. Available sizes are: `Small | Medium | Large | Full` (e.g.: `?imageSize=Small`). If the original file is a PDF, then you may request any given page (default is the first) by adding the `?pageNumber` query parameter (takes an integer that starts at 1).
        - `extension` string — Suffix to the name of a file (e.g., .txt, .pdf, .jppg) that indicates its content type or its intended use.
    - `authorizedActions` object — Authorized actions on the expense for the current user.
      - `isCancellable` boolean — Expense can be deleted by the current authenticated user.
      - `isEditable` boolean — Expense can be edited by the current authenticated user.
    - `sourceId` SourceId — The source describes how the expense was created: - 0: Legacy - 1: OldImport - 2: ImportByCb - 3: ImportByNature - 4: Anytime - 5: BudgetInsight - 6: Api - 7: Ocr - 8: Reconciliation - 9: InvoiceAggregator - 10: EmailAttachments - 11: FtpStatementImport - 12: CleemyPayment
      - `id` string
    - `source` Enum
      - `id` number
      - `name` string
      - `code` string
    - `ownerId` integer, required — Unique identifier of the user that made this expense.
    - `paymentMethodId` 0 | 1 | 3, required — How this expense was made: the owner used his money, an enterprise debit card, or a Cleemy card: - 0: User - 1: CorporateCard - 3: Cleemy Card
    - `paymentMethod` Enum
      - `id` number
      - `name` string
      - `code` string
    - `statusId` StatusId — Status of the expense. - 0: the expense is not valid. - 1: the expense has been completed by the system and review is still pending - 2: the expense has been completed and reviewed and it can be declared.
      - `id` 0 | 1 | 2
    - `status` Enum
      - `id` number
      - `name` string
      - `code` string
    - `deviceId` 'Web', required

## Other responses

- `400` — Problem
- `401` — Problem
- `403` — Problem
- `500` — Problem

---

[API](https://skmtc.net/luccasoftware/apis/lucca-expenses.md) · [All operations](https://skmtc.net/luccasoftware/apis/lucca-expenses/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/luccasoftware/lucca-expenses/revisions/110f9897756c/schema)
