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

# FBO Point of Sale Reference

> POS order fields, payment methods, product catalog structure, and inventory tracking for the FBO module.

The FBO Point of Sale (POS) system handles product sales, customer accounts, inventory management, and financial transactions. This reference documents the data structure for all POS entities -- orders, products, inventory, tills, transactions, and customers.

## Orders

Orders represent individual sales transactions in the POS system. Each order is linked to an optional customer and records what was sold, how it was paid for, and any outstanding balance.

### Order Fields

| Field            | Type              | Description                                                                        |
| ---------------- | ----------------- | ---------------------------------------------------------------------------------- |
| `order_number`   | String            | Auto-generated unique order identifier.                                            |
| `customer_id`    | String (optional) | Reference to the customer account. Orders can also be created without a customer.  |
| `payment_option` | Enum              | Payment method used for this order. See [Payment Methods](#payment-methods) below. |
| `total`          | Number            | Total amount for the order including tax.                                          |
| `balance_due`    | Number            | Remaining balance after any payments applied. Zero when fully paid.                |
| `created_at`     | Timestamp         | Date and time the order was created.                                               |

### Payment Methods

| Method        | API Value       | Description                                                  |
| ------------- | --------------- | ------------------------------------------------------------ |
| Cash          | `cash`          | Physical currency payment collected at the till.             |
| Card          | `card`          | Credit or debit card payment.                                |
| Check         | `check`         | Payment by check.                                            |
| House Account | `house_account` | Charged to the customer's house account for later invoicing. |

House account orders accumulate on the customer's balance and are settled through invoicing on a monthly or per-contract basis.

## Products

Products are the items available for sale through the POS. Each product has pricing, optional inventory tracking, and tax configuration.

### Product Fields

| Field             | Type              | Description                                                                                   |
| ----------------- | ----------------- | --------------------------------------------------------------------------------------------- |
| `name`            | String            | Display name of the product.                                                                  |
| `sku`             | String (optional) | Stock Keeping Unit code for identification and search.                                        |
| `category_id`     | String (optional) | Reference to a product category for organization.                                             |
| `price`           | Number            | Selling price per unit (USD).                                                                 |
| `cost`            | Number (optional) | Cost basis per unit. Used for margin calculations.                                            |
| `tax_rate`        | Number (optional) | Tax rate applied to this product as a decimal (e.g., `0.07` for 7%).                          |
| `is_active`       | Boolean           | Whether the product is available for sale. Inactive products do not appear in the order form. |
| `track_inventory` | Boolean           | Whether inventory quantities are tracked for this product.                                    |
| `stock_quantity`  | Number (optional) | Current stock level. Only populated when `track_inventory` is enabled.                        |
| `description`     | String (optional) | Internal description or notes about the product.                                              |
| `created_at`      | Timestamp         | Date and time the product was created.                                                        |
| `updated_at`      | Timestamp         | Date and time the product was last modified.                                                  |

### Product Categories

Categories are user-defined. Common FBO product categories:

| Category        | Examples                                  |
| --------------- | ----------------------------------------- |
| Fuel            | Jet-A, 100LL, sustainable aviation fuel   |
| Hangar services | Overnight parking, GPU, towing            |
| Ramp services   | Lavatory service, de-icing, oxygen        |
| Catering        | Crew meals, passenger catering, beverages |
| Supplies        | Oil, hydraulic fluid, cleaning supplies   |
| Merchandise     | Branded apparel, pilot supplies           |

## Inventory

Inventory records track stock levels for products that have `track_inventory` enabled. The inventory system provides real-time visibility into on-hand quantities and generates low-stock warnings.

### Inventory Fields

| Field               | Type                 | Description                                                      |
| ------------------- | -------------------- | ---------------------------------------------------------------- |
| `product_id`        | String               | Reference to the tracked product.                                |
| `product_name`      | String               | Display name of the product (denormalized for convenience).      |
| `sku`               | String (optional)    | Product SKU code.                                                |
| `quantity_on_hand`  | Number               | Total physical quantity in stock.                                |
| `quantity_reserved` | Number               | Quantity allocated to pending orders but not yet fulfilled.      |
| `reorder_point`     | Number (optional)    | Stock level at which a low-stock warning is triggered.           |
| `reorder_quantity`  | Number (optional)    | Suggested quantity to reorder when the reorder point is reached. |
| `last_counted_at`   | Timestamp (optional) | Date and time of the most recent physical inventory count.       |
| `updated_at`        | Timestamp            | Date and time the inventory record was last modified.            |

### Available Quantity

The **available quantity** is calculated as:

```
available = quantity_on_hand - quantity_reserved
```

This represents stock that can be sold or allocated to new orders.

### Low-Stock Warnings

A product triggers a low-stock warning when:

```
quantity_on_hand <= reorder_point
```

Low-stock items are highlighted in the Inventory table with a warning indicator. Setting `reorder_point` to `0` or leaving it empty disables warnings for that product.

## Tills

Tills represent physical or virtual cash registers used to process POS transactions. Each till tracks its opening balance, current balance, and operational status.

### Till Fields

| Field             | Type              | Description                                                                                            |
| ----------------- | ----------------- | ------------------------------------------------------------------------------------------------------ |
| `name`            | String            | Display name of the till (e.g., "Front Desk Register", "Ramp Till").                                   |
| `location`        | String (optional) | Physical location of the till within the facility.                                                     |
| `status`          | Enum              | Current operational state. See [Till Statuses](/en/reference/fbo-statuses#till-statuses).              |
| `opening_balance` | Number            | Cash amount the till was opened with.                                                                  |
| `current_balance` | Number            | Current cash balance in the till. Updates as cash transactions are processed.                          |
| `is_default`      | Boolean           | Whether this till is the default selection when creating new orders. Only one till can be the default. |

## Transactions

Transactions record all financial activity in the POS system, including payments, refunds, and adjustments.

### Transaction Fields

| Field              | Type              | Description                                                                               |
| ------------------ | ----------------- | ----------------------------------------------------------------------------------------- |
| `transaction_type` | Enum              | The type of transaction: `payment`, `refund`, or `adjustment`.                            |
| `payment_method`   | String (optional) | How the transaction was processed (e.g., cash, card, check).                              |
| `amount`           | Number            | Transaction amount in USD. Refunds are recorded as positive amounts with a `refund` type. |
| `description`      | String (optional) | Notes or description for the transaction.                                                 |
| `status`           | Enum              | Processing state: `completed`, `pending`, `failed`, or `reversed`.                        |
| `created_at`       | Timestamp         | Date and time the transaction was recorded.                                               |

### Transaction Types

| Type       | API Value    | Description                                          |
| ---------- | ------------ | ---------------------------------------------------- |
| Payment    | `payment`    | Money received from a customer.                      |
| Refund     | `refund`     | Money returned to a customer for a previous payment. |
| Adjustment | `adjustment` | Manual correction to a balance or till amount.       |

## Customers

Customers represent individuals or organizations that purchase products or services through the POS. Customer records enable house account billing and purchase history tracking.

### Customer Fields

| Field         | Type              | Description                                     |
| ------------- | ----------------- | ----------------------------------------------- |
| `name`        | String (optional) | Company or organization name.                   |
| `first_name`  | String (optional) | Customer's first name.                          |
| `last_name`   | String (optional) | Customer's last name.                           |
| `email`       | String (optional) | Email address for invoicing and communication.  |
| `phone`       | String (optional) | Phone number.                                   |
| `order_count` | Number            | Total number of orders placed by this customer. |
| `total_spent` | Number            | Cumulative amount spent across all orders.      |

## Rate Codes

Rate codes define the pricing structure for unit bookings. Each rate code can specify daily, weekly, and monthly rates.

### Rate Code Fields

| Field          | Type              | Description                                                                     |
| -------------- | ----------------- | ------------------------------------------------------------------------------- |
| `name`         | String            | Display name of the rate code (e.g., "Standard T-Hangar", "Transient Tiedown"). |
| `rate_type`    | String            | Classification of the rate (e.g., "daily", "monthly", "seasonal").              |
| `base_rate`    | Number            | Default per-period rate in USD.                                                 |
| `weekly_rate`  | Number (optional) | Discounted rate for weekly bookings.                                            |
| `monthly_rate` | Number (optional) | Discounted rate for monthly bookings.                                           |
| `is_active`    | Boolean           | Whether this rate code can be assigned to units.                                |

## Related

<CardGroup cols={2}>
  <Card title="FBO Statuses" href="/reference/fbo-statuses">
    Booking, payment, unit, maintenance, and till statuses.
  </Card>

  <Card title="Use the FBO Point of Sale" href="/how-to/fbo/use-point-of-sale">
    Order processing, product management, and till operations.
  </Card>
</CardGroup>
